diff --git a/java-bigquerystorage/google-cloud-bigquerystorage-it/pom.xml b/java-bigquerystorage/google-cloud-bigquerystorage-it/pom.xml
new file mode 100644
index 000000000000..7f2d13dfa232
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage-it/pom.xml
@@ -0,0 +1,326 @@
+
+
+ 4.0.0
+
+ com.google.cloud
+ google-cloud-bigquerystorage-parent
+ 3.32.0-SNAPSHOT
+
+
+ google-cloud-bigquerystorage-it
+ Google Cloud BigQuery Storage Integration Tests
+ Integration tests for Google Cloud BigQuery Storage
+
+
+ 1.8
+ 1.8
+
+
+
+
+ com.google.cloud
+ google-cloud-bigquerystorage
+ test
+
+
+ com.google.protobuf
+ protobuf-java
+ test
+
+
+ com.google.auth
+ google-auth-library-credentials
+ test
+
+
+ com.google.cloud
+ google-cloud-core
+ test
+
+
+ com.google.protobuf
+ protobuf-java-util
+ test
+
+
+ com.google.api
+ api-common
+ test
+
+
+ com.google.api.grpc
+ proto-google-common-protos
+ test
+
+
+ com.google.guava
+ guava
+ test
+
+
+ org.json
+ json
+ test
+
+
+ com.google.api
+ gax
+ test
+
+
+ io.grpc
+ grpc-api
+ test
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1
+ test
+
+
+ com.google.auth
+ google-auth-library-oauth2-http
+ test
+
+
+ org.apache.arrow
+ arrow-vector
+ test
+
+
+ org.apache.arrow
+ arrow-memory-core
+ test
+
+
+ org.apache.arrow
+ arrow-memory-netty
+ test
+
+
+ com.google.http-client
+ google-http-client
+ test
+
+
+ io.opentelemetry
+ opentelemetry-api
+ test
+
+
+ com.google.cloud
+ google-cloud-bigquery
+ test
+
+
+ org.apache.avro
+ avro
+ test
+
+
+ org.awaitility
+ awaitility
+ test
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta1
+ test
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta2
+ test
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta
+ test
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta1
+ test
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta2
+ test
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta
+ test
+
+
+ junit
+ junit
+ test
+
+
+ com.google.truth
+ truth
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.11.4
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.11.4
+ test
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+ test
+
+
+ io.opentelemetry
+ opentelemetry-sdk-common
+ test
+
+
+ io.opentelemetry
+ opentelemetry-sdk-trace
+ test
+
+
+
+
+
+
+ kr.motd.maven
+ os-maven-plugin
+ 1.7.1
+
+
+
+
+ org.xolstice.maven.plugins
+ protobuf-maven-plugin
+ 0.6.1
+
+ com.google.protobuf:protoc:${project.protobuf-java.version}:exe:${os.detected.classifier}
+
+
+
+
+ test-compile
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 3.5.2
+
+
+ org.apache.maven.surefire
+ surefire-junit-platform
+ ${surefire.version}
+
+
+
+
+
+
+
+
+ java17
+
+ [17,)
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ --add-opens=java.base/java.nio=ALL-UNNAMED
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+ --add-opens=java.base/java.nio=ALL-UNNAMED
+
+
+
+
+
+
+ native
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${surefire.version}
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit-vintage-engine.version}
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ ${junit-vintage-engine.version}
+
+
+
+ false
+
+
+ **/ITBigQueryWrite*RetryTest.java
+
+
+ **/IT*.java
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native-maven-plugin.version}
+ true
+
+
+ test-native
+
+ test
+
+ test
+
+
+
+
+ --no-fallback
+ --no-server
+
+
+
+
+
+
+
+
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryBigDecimalByteStringEncoderTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryBigDecimalByteStringEncoderTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryBigDecimalByteStringEncoderTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryBigDecimalByteStringEncoderTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageLongRunningTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageLongRunningTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageLongRunningTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageLongRunningTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageReadClientTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageReadClientTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageReadClientTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageReadClientTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageWriteClientTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageWriteClientTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageWriteClientTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryStorageWriteClientTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryTimeEncoderTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryTimeEncoderTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryTimeEncoderTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryTimeEncoderTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteNonQuotaRetryTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteNonQuotaRetryTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteNonQuotaRetryTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteNonQuotaRetryTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteQuotaRetryTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteQuotaRetryTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteQuotaRetryTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteQuotaRetryTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/BigQueryResource.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/BigQueryResource.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/BigQueryResource.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/BigQueryResource.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/Helper.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/Helper.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/Helper.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/Helper.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderArrow.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderArrow.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderArrow.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderArrow.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderAvro.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderAvro.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderAvro.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/SimpleRowReaderAvro.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/WriteRetryTestUtil.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/WriteRetryTestUtil.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/WriteRetryTestUtil.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1/it/util/WriteRetryTestUtil.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageLongRunningTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageLongRunningTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageLongRunningTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageLongRunningTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/SimpleRowReader.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/SimpleRowReader.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/SimpleRowReader.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/SimpleRowReader.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/BigQueryResource.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/BigQueryResource.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/BigQueryResource.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/BigQueryResource.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageLongRunningTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageLongRunningTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageLongRunningTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageLongRunningTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/SimpleRowReader.java b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/SimpleRowReader.java
similarity index 100%
rename from java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/SimpleRowReader.java
rename to java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/SimpleRowReader.java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/jsonTest.proto b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/jsonTest.proto
new file mode 100644
index 000000000000..d878f7bdc953
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/jsonTest.proto
@@ -0,0 +1,265 @@
+syntax = "proto2";
+
+package com.google.cloud.bigquery.storage.test;
+
+message ComplexRoot {
+ optional int64 test_int = 1;
+ repeated string test_string = 2;
+ required bytes test_bytes = 3;
+ optional bool test_bool = 4;
+ repeated double test_double = 5;
+ required int32 test_date = 6;
+ optional int64 test_datetime = 7;
+ repeated int64 test_datetime_str = 8;
+ required ComplexLvl1 complex_lvl1 = 9;
+ required
+ ComplexLvl2 complex_lvl2 = 10;
+ optional bytes test_numeric = 11;
+ optional string test_geo = 12;
+ optional int64 test_timestamp = 13;
+ optional int64 test_time = 14;
+ optional int64 test_time_str = 15;
+ repeated bytes test_numeric_repeated = 16;
+ optional bytes test_numeric_str = 17;
+ optional bytes test_numeric_short = 18;
+ optional bytes test_numeric_int = 19;
+ optional bytes test_numeric_long = 20;
+ optional bytes test_numeric_float = 21;
+ optional bytes test_numeric_double = 22;
+ optional bytes test_bignumeric = 23;
+ repeated bytes test_bignumeric_str = 24;
+ optional bytes test_bignumeric_short = 25;
+ optional bytes test_bignumeric_int = 26;
+ optional bytes test_bignumeric_long = 27;
+ optional bytes test_bignumeric_float = 28;
+ optional bytes test_bignumeric_double = 29;
+ optional string test_interval = 30;
+ repeated string test_json = 31;
+ optional string test_timestamp_higher_precision = 32;
+ repeated string test_timestamp_higher_precision_repeated = 33;
+}
+
+message CasingComplex {
+ optional int64 test_int = 1;
+ repeated string test_string = 2;
+ required bytes test_bytes = 3;
+ optional bool test_bool = 4;
+ repeated double test_double = 5;
+ required int32 test_date = 6;
+ required OptionTest option_test = 7;
+}
+
+message ComplexLvl1 {
+ optional int64 test_int = 1;
+ required ComplexLvl2 complex_lvl2 = 2;
+}
+
+message ComplexLvl2 {
+ optional int64 test_int = 1;
+}
+
+message ObjectType {
+ optional ComplexLvl2 test_field_type = 1;
+}
+
+message RepeatedType {
+ repeated int64 test_field_type = 1;
+}
+
+message OptionTest {
+ optional int64 test_optional = 1;
+ required int64 test_required = 2;
+ repeated int64 test_repeated = 3;
+}
+
+message ReuseRoot {
+ optional ReuseLvl1 reuse_lvl1 = 1;
+ optional ReuseLvl1 reuse_lvl1_1 = 2;
+ optional ReuseLvl1 reuse_lvl1_2 = 3;
+}
+
+message ReuseLvl1 {
+ optional int64 test_int = 1;
+ optional ReuseLvl2 reuse_lvl2 = 2;
+}
+
+message ReuseLvl2 {
+ optional int64 test_int = 1;
+}
+
+message RepeatedInt64 {
+ repeated int64 test_repeated = 1;
+}
+
+message RepeatedInt32 {
+ repeated int32 test_repeated = 1;
+ optional int32 test_non_repeated = 2;
+}
+
+message RepeatedDouble {
+ repeated double test_repeated = 1;
+}
+
+message RepeatedString {
+ repeated string test_repeated = 1;
+}
+
+message RepeatedBool {
+ repeated bool test_repeated = 1;
+}
+
+message RepeatedBytes {
+ repeated bytes test_repeated = 1;
+}
+
+message RepeatedObject {
+ repeated ComplexLvl2 test_repeated = 1;
+}
+
+message TestBool {
+ optional bool bool = 1;
+ optional bool lowercase = 2;
+ optional bool uppercase = 3;
+}
+
+message TestInt64 {
+ optional int64 byte = 1;
+ optional int64 short = 2;
+ optional int64 int = 3;
+ optional int64 long = 4;
+ optional int64 string = 5;
+}
+
+message TestInt32 {
+ optional int32 byte = 1;
+ optional int32 short = 2;
+ optional int32 int = 3;
+ optional int32 string = 4;
+}
+
+message TestDouble {
+ optional double double = 1;
+ optional double float = 2;
+ optional double byte = 3;
+ optional double short = 4;
+ optional double int = 5;
+ optional double long = 6;
+ optional double string = 7;
+}
+
+message TestTimestamp {
+ optional int64 test_string = 1;
+ optional int64 test_string_t_z = 2;
+ optional int64 test_long = 3;
+ optional int64 test_int = 4;
+ optional int64 test_float = 5;
+ optional int64 test_offset = 6;
+ optional int64 test_zero_offset = 7;
+ optional int64 test_timezone = 8;
+ optional int64 test_saformat = 9;
+}
+
+message TestTimestampHigherPrecision {
+ optional string test_string = 1;
+ optional string test_string_t_z = 2;
+ optional string test_long = 3;
+ optional string test_int = 4;
+ optional string test_float = 5;
+ optional string test_offset = 6;
+ optional string test_zero_offset = 7;
+ optional string test_timezone = 8;
+ optional string test_saformat = 9;
+}
+
+message TestRepeatedTimestamp {
+ repeated int64 test_string_repeated = 1;
+ repeated int64 test_string_t_z_repeated = 2;
+ repeated int64 test_long_repeated = 3;
+ repeated int64 test_int_repeated = 4;
+ repeated int64 test_float_repeated = 5;
+ repeated int64 test_offset_repeated = 6;
+ repeated int64 test_zero_offset_repeated = 7;
+ repeated int64 test_timezone_repeated = 8;
+ repeated int64 test_saformat_repeated = 9;
+}
+
+message TestRepeatedTimestampHigherPrecision {
+ repeated string test_string_repeated = 1;
+ repeated string test_string_t_z_repeated = 2;
+ repeated string test_long_repeated = 3;
+ repeated string test_int_repeated = 4;
+ repeated string test_float_repeated = 5;
+ repeated string test_offset_repeated = 6;
+ repeated string test_zero_offset_repeated = 7;
+ repeated string test_timezone_repeated = 8;
+ repeated string test_saformat_repeated = 9;
+}
+
+message TestDate {
+ optional int32 test_string = 1;
+ optional int32 test_long = 2;
+}
+
+message NestedRepeated {
+ repeated int64 int = 1;
+ repeated double double = 2;
+ optional RepeatedString repeated_string = 3;
+}
+
+message TestRequired {
+ optional double optional_double = 1;
+ required double required_double = 2;
+}
+
+message TestRepeatedIsOptional {
+ optional double required_double = 1;
+ repeated double repeated_double = 2;
+}
+
+message TopLevelMismatch {
+ optional double mismatch_double = 1;
+}
+
+message TestDatetime {
+ optional int64 datetime = 1;
+}
+
+message TestTime {
+ repeated int64 time = 1;
+}
+
+message TestNumeric {
+ optional bytes numeric = 1;
+}
+
+message TestBignumeric {
+ repeated bytes bignumeric = 1;
+}
+
+message TestMixedCaseFieldNames {
+ required string foobar = 1;
+}
+
+message TestRange {
+ optional TestRangeDate range_date = 1;
+ optional TestRangeDatetime range_datetime = 2;
+ optional TestRangeTimestamp range_timestamp = 3;
+ optional TestRangeDate range_date_mixed_case = 4;
+ optional TestRangeDatetime range_datetime_mixed_case = 5;
+ optional TestRangeTimestamp range_timestamp_mixed_case = 6;
+}
+
+message TestRangeDate {
+ optional int32 start = 1;
+ optional int32 end = 2;
+}
+
+message TestRangeDatetime {
+ optional int64 start = 1;
+ optional int64 end = 2;
+}
+
+message TestRangeTimestamp {
+ optional int64 start = 1;
+ optional int64 end = 2;
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/optionalTest.proto b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/optionalTest.proto
new file mode 100644
index 000000000000..41e13f05a382
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/optionalTest.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2023 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto3";
+
+package com.google.cloud.bigquery.storage.test;
+
+option java_package = "com.google.cloud.bigquery.storage.test";
+option java_outer_classname = "TestOptional";
+
+message FooOptionalType {
+ optional string foo = 1;
+}
+
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/schemaTest.proto b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/schemaTest.proto
new file mode 100644
index 000000000000..1d43e094cda6
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/schemaTest.proto
@@ -0,0 +1,273 @@
+syntax = "proto2";
+
+package com.google.cloud.bigquery.storage.test;
+
+import "google/cloud/bigquery/storage/v1/annotations.proto";
+
+message SupportedTypes {
+ optional int32 int32_value = 1;
+ optional int64 int64_value = 2;
+ optional uint32 uint32_value = 3;
+ optional uint64 uint64_value = 4;
+ optional fixed32 fixed32_value = 7;
+ optional fixed64 fixed64_value = 8;
+ optional sfixed32 sfixed32_value = 9;
+ optional sfixed64 sfixed64_value = 10;
+ optional float float_value = 11;
+ optional double double_value = 12;
+ optional bool bool_value = 13;
+ optional bytes bytes_value = 14;
+ optional string string_value = 15;
+}
+
+message NonSupportedTypes {
+ optional sint32 sint32_value = 5;
+ optional sint64 sint64_value = 6;
+}
+
+message Int32Type {
+ optional int32 test_field_type = 1;
+}
+
+message Int64Type {
+ optional int64 test_field_type = 1;
+}
+
+message UInt32Type {
+ optional uint32 test_field_type = 1;
+}
+
+message UInt64Type {
+ optional uint64 test_field_type = 1;
+}
+
+message Fixed32Type {
+ optional fixed32 test_field_type = 1;
+}
+
+message Fixed64Type {
+ optional fixed64 test_field_type = 1;
+}
+
+message SFixed32Type {
+ optional sfixed32 test_field_type = 1;
+}
+
+message SFixed64Type {
+ optional sfixed64 test_field_type = 1;
+}
+
+message FloatType {
+ optional float test_field_type = 1;
+}
+
+message DoubleType {
+ optional double test_field_type = 1;
+}
+
+message BoolType {
+ optional bool test_field_type = 1;
+}
+
+message BytesType {
+ optional bytes test_field_type = 1;
+}
+
+message StringType {
+ optional string test_field_type = 1;
+}
+
+message EnumType {
+ enum EnumTest {
+ test1 = 0;
+ }
+ optional EnumTest test_field_type = 1;
+}
+
+message MessageType {
+ optional StringType test_field_type = 1;
+}
+
+message GroupType {
+ optional group Test_field_type = 1 {
+ optional string test_field_type = 2;
+ }
+}
+
+message MessageTypeMismatch {
+ optional MismatchLvl0 mismatchlvl0 = 1;
+}
+
+message MismatchLvl0 {
+ optional MismatchLvl1 mismatchlvl1 = 1;
+}
+
+message MismatchLvl1 {
+ optional string test_field_type = 1;
+}
+
+message TopLevelMatch {
+ optional string match = 1;
+ optional MismatchLvl1 mismatch = 2;
+}
+
+message ProtoRepeatedBQRepeated {
+ repeated int32 repeated_mode = 1;
+}
+
+message ProtoOptionalBQRepeated {
+ optional int32 repeated_mode = 1;
+}
+
+message ProtoRequiredBQRepeated {
+ required int32 repeated_mode = 1;
+}
+
+message ProtoRequiredBQRequired {
+ required int32 required_mode = 1;
+}
+
+message ProtoNoneBQRequired {
+ optional int32 no_required_mode = 1;
+}
+
+message ProtoOptionalBQRequired {
+ optional int32 required_mode = 1;
+}
+
+message ProtoRepeatedBQRequired {
+ repeated int32 required_mode = 1;
+}
+
+message ProtoOptionalBQOptional {
+ optional int32 optional_mode = 1;
+}
+
+message ProtoRequiredBQOptional{
+ required int32 optional_mode = 1;
+}
+
+message ProtoRepeatedBQOptional {
+ repeated int32 optional_mode = 1;
+}
+
+message ProtoCompatibleWithBQInt {
+ optional int32 optional_mode = 1;
+}
+
+message SupportedNestingLvl1 {
+ optional int32 int_value = 1;
+ optional SupportedNestingLvl2 nesting_value = 2;
+}
+
+message SupportedNestingLvl2 {
+ optional int32 int_value = 1;
+}
+
+message SupportedNestingStacked {
+ optional int32 test_int = 1;
+ optional SupportedNestingLvl2 nesting_value1 = 2;
+ optional SupportedNestingLvl2 nesting_value2 = 3;
+}
+
+message NonSupportedMap {
+ map map_value = 1;
+}
+
+message NonSupportedNestingRecursive {
+ optional NonSupportedNestingRecursive nesting_value = 2;
+}
+
+message NonSupportedNestingContainsRecursive {
+ optional int32 int_value = 1;
+ optional NonSupportedNestingRecursive nesting_value = 2;
+}
+
+message NonSupportedNestingLvl0 {
+ optional NonSupportedNestingLvl1 test1 = 1;
+}
+
+message NonSupportedNestingLvl1 {
+ optional NonSupportedNestingLvl2 test1 = 1;
+}
+
+message NonSupportedNestingLvl2 {
+ optional NonSupportedNestingLvl3 test1 = 1;
+}
+
+message NonSupportedNestingLvl3 {
+ optional NonSupportedNestingLvl4 test1 = 1;
+}
+
+message NonSupportedNestingLvl4 {
+ optional NonSupportedNestingLvl5 test1 = 1;
+}
+
+message NonSupportedNestingLvl5 {
+ optional NonSupportedNestingLvl6 test1 = 1;
+}
+
+message NonSupportedNestingLvl6 {
+ optional NonSupportedNestingLvl7 test1 = 1;
+}
+
+message NonSupportedNestingLvl7 {
+ optional NonSupportedNestingLvl8 test1 = 1;
+}
+
+message NonSupportedNestingLvl8 {
+ optional NonSupportedNestingLvl9 test1 = 1;
+}
+
+message NonSupportedNestingLvl9 {
+ optional NonSupportedNestingLvl10 test1 = 1;
+}
+
+message NonSupportedNestingLvl10 {
+ optional NonSupportedNestingLvl11 test1 = 1;
+}
+
+message NonSupportedNestingLvl11 {
+ optional NonSupportedNestingLvl12 test1 = 1;
+}
+
+message NonSupportedNestingLvl12 {
+ optional NonSupportedNestingLvl13 test1 = 1;
+}
+
+message NonSupportedNestingLvl13 {
+ optional NonSupportedNestingLvl14 test1 = 1;
+}
+
+message NonSupportedNestingLvl14 {
+ optional NonSupportedNestingLvl15 test1 = 1;
+}
+
+message NonSupportedNestingLvl15 {
+ optional NonSupportedNestingLvl16 test1 = 1;
+}
+
+message NonSupportedNestingLvl16 {
+ optional int32 test1 = 1;
+}
+
+message AllowUnknownUnsupportedFields {
+ optional NonSupportedMap map_value = 1;
+ optional string string_value = 2;
+}
+
+message FakeFooType {
+ optional int32 foo = 1;
+}
+
+message TestNestedFlexibleFieldName {
+ optional string col_c3RyLeWIlw = 1
+ [(.google.cloud.bigquery.storage.v1.column_name) = "str-列"];
+ optional FlexibleNameField col_bmVzdGVkLeWIlw = 2
+ [(.google.cloud.bigquery.storage.v1.column_name) = "nested-列"];
+}
+
+message FlexibleNameField {
+ optional int64 col_aW50LeWIlw = 1
+ [(.google.cloud.bigquery.storage.v1.column_name) = "int-列"];
+}
\ No newline at end of file
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/test.proto b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/test.proto
new file mode 100644
index 000000000000..8b77a4eb4764
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage-it/src/test/proto/test.proto
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto2";
+
+package com.google.cloud.bigquery.storage.test;
+
+import "google/cloud/bigquery/storage/v1/annotations.proto";
+import "google/protobuf/timestamp.proto";
+
+enum TestEnum {
+ TestEnum0 = 0;
+ TestEnum1 = 1;
+}
+
+message AllSupportedTypes {
+ optional int32 int32_value = 1;
+ optional int64 int64_value = 2;
+ optional uint32 uint32_value = 3;
+ optional uint64 uint64_value = 4;
+ optional float float_value = 5;
+ optional double double_value = 6;
+ optional bool bool_value = 7;
+ optional TestEnum enum_value = 8;
+ required string string_value = 9;
+}
+
+message InnerType {
+ repeated string value = 1;
+}
+
+message NestedType {
+ repeated InnerType inner_type = 1;
+}
+
+message ComplicateType {
+ repeated NestedType nested_repeated_type = 1;
+ optional InnerType inner_type = 2;
+}
+
+message SimpleTypeForDefaultValue {
+ optional string foo_with_default = 1;
+ optional string bar_without_default = 2;
+ optional string date_with_default_to_current = 3;
+}
+
+message ContainsRecursive {
+ optional RecursiveType field = 1;
+}
+
+message RecursiveType {
+ optional ContainsRecursive field = 2;
+}
+
+message RecursiveTypeTopMessage {
+ optional RecursiveTypeTopMessage field = 2;
+}
+
+message FooType {
+ optional string foo = 1;
+}
+
+message UpdatedFooType {
+ optional string foo = 1;
+ optional string bar = 2;
+}
+
+message UpdatedFooType2 {
+ optional string foo = 1;
+ optional string bar = 2;
+ optional string baz = 3;
+}
+
+message FooTimestampType {
+ optional string foo = 1;
+ optional .google.protobuf.Timestamp bar = 2;
+}
+
+message DuplicateType {
+ optional TestEnum f1 = 1;
+ optional TestEnum f2 = 2;
+ optional ComplicateType f3 = 3;
+ optional ComplicateType f4 = 4;
+}
+
+message FlexibleType {
+ optional string col_dGVzdC3liJc = 1
+ [(.google.cloud.bigquery.storage.v1.column_name) = "test-列"];
+}
+
+message RepetitionType {
+ required bytes a = 1;
+ required bytes b = 2;
+ required bytes c = 3;
+ repeated bytes aa = 4;
+ repeated bytes bb = 5;
+ repeated bytes cc = 6;
+}
\ No newline at end of file
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml b/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml
index 05faaa1c9cf3..8cb32e3541e6 100644
--- a/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml
@@ -248,7 +248,6 @@
org.apache.avro
avro
- 1.11.4
test
@@ -257,13 +256,13 @@
test
- com.google.protobuf
- protobuf-java-util
+ org.apache.arrow
+ arrow-memory-netty
test
- com.google.cloud
- google-cloud-bigquery
+ com.google.protobuf
+ protobuf-java-util
test
diff --git a/java-bigquerystorage/pom.xml b/java-bigquerystorage/pom.xml
index 0b081eb8e7f5..5eee00a606fb 100644
--- a/java-bigquerystorage/pom.xml
+++ b/java-bigquerystorage/pom.xml
@@ -143,7 +143,11 @@
-
+
+ org.apache.avro
+ avro
+ 1.11.4
+
@@ -205,6 +209,7 @@
proto-google-cloud-bigquerystorage-v1beta
google-cloud-bigquerystorage-bom
+ google-cloud-bigquerystorage-it