From b5628d9045b331a1f2884267667cf4bac93a3d4f Mon Sep 17 00:00:00 2001 From: whowes Date: Mon, 15 Jun 2026 20:27:47 +0000 Subject: [PATCH 1/2] test(bigquerystorage): create sessions using await() to address flakiness --- google-cloud-jar-parent/pom.xml | 6 ++++++ .../google-cloud-bigquerystorage/pom.xml | 5 +++++ .../storage/v1beta1/it/ITBigQueryStorageTest.java | 12 +++++++++++- .../storage/v1beta2/it/ITBigQueryStorageTest.java | 12 +++++++++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/google-cloud-jar-parent/pom.xml b/google-cloud-jar-parent/pom.xml index 20fa3e5ec4a7..e26fb46c8d96 100644 --- a/google-cloud-jar-parent/pom.xml +++ b/google-cloud-jar-parent/pom.xml @@ -71,6 +71,12 @@ + + org.awaitility + awaitility + 4.3.0 + test + junit junit diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml b/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml index fdc6eab9271f..d8f902e54fef 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml +++ b/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml @@ -193,6 +193,11 @@ opentelemetry-sdk-trace test + + org.awaitility + awaitility + test + junit junit 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/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java index 04191a38a45e..7e023ee26edb 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java +++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java @@ -16,6 +16,10 @@ package com.google.cloud.bigquery.storage.v1beta1.it; +import static org.awaitility.Awaitility.await; +import com.google.api.gax.rpc.NotFoundException; +import java.util.Objects; + import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.jupiter.api.Assertions.assertArrayEquals; @@ -1230,7 +1234,13 @@ private void ProcessRowsAtSnapshot( TableReadOptions.newBuilder().setRowRestriction(filter).build()); } - ReadSession session = client.createReadSession(createSessionRequestBuilder.build()); + final CreateReadSessionRequest request = createSessionRequestBuilder.build(); + ReadSession session = + await() + .atMost(Duration.ofSeconds(30)) + .pollInterval(Duration.ofSeconds(1)) + .ignoreException(NotFoundException.class) + .until(() -> client.createReadSession(request), Objects::nonNull); assertEquals( 1, session.getStreamsCount(), 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/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java index f48d41acbd70..e7cf800f3bef 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java +++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java @@ -16,6 +16,10 @@ package com.google.cloud.bigquery.storage.v1beta2.it; +import static org.awaitility.Awaitility.await; +import com.google.api.gax.rpc.NotFoundException; +import java.util.Objects; + import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.jupiter.api.Assertions.assertArrayEquals; @@ -1211,7 +1215,13 @@ private void ProcessRowsAtSnapshot( .setReadOptions(TableReadOptions.newBuilder().setRowRestriction(filter).build()); } - ReadSession session = client.createReadSession(createSessionRequestBuilder.build()); + final CreateReadSessionRequest request = createSessionRequestBuilder.build(); + ReadSession session = + await() + .atMost(Duration.ofSeconds(30)) + .pollInterval(Duration.ofSeconds(1)) + .ignoreException(NotFoundException.class) + .until(() -> client.createReadSession(request), Objects::nonNull); assertEquals( 1, session.getStreamsCount(), From 1c2145823070a8c7e53d3314e1adbab14caa765d Mon Sep 17 00:00:00 2001 From: whowes Date: Tue, 16 Jun 2026 20:38:36 +0000 Subject: [PATCH 2/2] fix imports ordering --- .../storage/v1beta1/it/ITBigQueryStorageTest.java | 10 +++++----- .../storage/v1beta2/it/ITBigQueryStorageTest.java | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) 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/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java index 7e023ee26edb..70294cde427f 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java +++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/ITBigQueryStorageTest.java @@ -16,12 +16,9 @@ package com.google.cloud.bigquery.storage.v1beta1.it; -import static org.awaitility.Awaitility.await; -import com.google.api.gax.rpc.NotFoundException; -import java.util.Objects; - import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; +import static org.awaitility.Awaitility.await; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -30,6 +27,7 @@ import static org.junit.jupiter.api.Assertions.fail; import com.google.api.gax.core.FixedCredentialsProvider; +import com.google.api.gax.rpc.NotFoundException; import com.google.api.gax.rpc.ServerStream; import com.google.api.gax.rpc.UnauthenticatedException; import com.google.auth.oauth2.ServiceAccountCredentials; @@ -83,6 +81,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; @@ -1239,7 +1238,8 @@ private void ProcessRowsAtSnapshot( await() .atMost(Duration.ofSeconds(30)) .pollInterval(Duration.ofSeconds(1)) - .ignoreException(NotFoundException.class) + // retry if the newly-created table has not yet fully propagated + .ignoreException(NotFoundException.class) .until(() -> client.createReadSession(request), Objects::nonNull); assertEquals( 1, 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/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java index e7cf800f3bef..d524852ff722 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java +++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta2/it/ITBigQueryStorageTest.java @@ -16,12 +16,9 @@ package com.google.cloud.bigquery.storage.v1beta2.it; -import static org.awaitility.Awaitility.await; -import com.google.api.gax.rpc.NotFoundException; -import java.util.Objects; - import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; +import static org.awaitility.Awaitility.await; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -30,6 +27,7 @@ import static org.junit.jupiter.api.Assertions.fail; import com.google.api.gax.core.FixedCredentialsProvider; +import com.google.api.gax.rpc.NotFoundException; import com.google.api.gax.rpc.ServerStream; import com.google.api.gax.rpc.UnauthenticatedException; import com.google.auth.oauth2.ServiceAccountCredentials; @@ -80,6 +78,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.logging.Logger; import org.apache.avro.Conversions; @@ -1220,6 +1219,7 @@ private void ProcessRowsAtSnapshot( await() .atMost(Duration.ofSeconds(30)) .pollInterval(Duration.ofSeconds(1)) + // retry if the newly-created table has not yet fully propagated .ignoreException(NotFoundException.class) .until(() -> client.createReadSession(request), Objects::nonNull); assertEquals(