From 5d151ea37bf55b1958a2018a91415b9eb8f9499f Mon Sep 17 00:00:00 2001 From: blakeli Date: Fri, 17 Apr 2026 19:03:08 -0400 Subject: [PATCH 1/4] test: add dummy method to auth and use it in gax to test CI --- .../credentials/java/com/google/auth/Credentials.java | 5 +++++ .../main/java/com/google/api/gax/grpc/GrpcCallContext.java | 3 +++ 2 files changed, 8 insertions(+) diff --git a/google-auth-library-java/credentials/java/com/google/auth/Credentials.java b/google-auth-library-java/credentials/java/com/google/auth/Credentials.java index b1579db612a9..a87ee9a8f6a3 100644 --- a/google-auth-library-java/credentials/java/com/google/auth/Credentials.java +++ b/google-auth-library-java/credentials/java/com/google/auth/Credentials.java @@ -194,4 +194,9 @@ protected final void blockingGetToCallback(URI uri, RequestMetadataCallback call * @throws IOException if there was an error getting up-to-date access. */ public abstract void refresh() throws IOException; + + /** Dummy method to test CI recognition of auth changes. */ + public String getTestString() { + return "test"; + } } diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 7ff7c54de6f0..46403b7a69b2 100644 --- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -729,6 +729,9 @@ public T getOption(Key key) { @InternalApi public void validateUniverseDomain() { try { + if (credentials != null) { + credentials.getTestString(); + } endpointContext.validateUniverseDomain(credentials, UNAUTHENTICATED_STATUS_CODE); } catch (IOException e) { // Check if it is an Auth Exception (All instances of IOException from endpointContext's From 4c6e4dc50f2553e8a376042c9a682d3450eb11ee Mon Sep 17 00:00:00 2001 From: blakeli Date: Fri, 17 Apr 2026 19:37:17 -0400 Subject: [PATCH 2/4] test: call new auth method in bigquery, datastore, storage, and spanner --- .../java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java | 1 + .../com/google/cloud/datastore/telemetry/EnabledTraceUtil.java | 1 + .../java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java | 1 + .../main/java/com/google/cloud/storage/GrpcStorageOptions.java | 1 + 4 files changed, 4 insertions(+) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index e60f0874c446..ab6f54e708ce 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -921,6 +921,7 @@ private BigQuery getBigQueryConnection() { bigQueryOptions.setProjectId(this.catalog); } if (this.credentials != null) { + this.credentials.getTestString(); bigQueryOptions.setCredentials(this.credentials); } if (this.location != null) { diff --git a/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java b/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java index 3dc8395d170b..600dbfae53e8 100644 --- a/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java +++ b/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java @@ -265,6 +265,7 @@ public SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder) { .build()); if (datastoreOptions.getCredentials() != null) { + datastoreOptions.getCredentials().getTestString(); spanBuilder = spanBuilder.setAttribute( ATTRIBUTE_SERVICE_PREFIX + "settings.credentials.authenticationType", diff --git a/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java index 7c1b6be1c1bd..5c13e5bc766a 100644 --- a/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java +++ b/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java @@ -668,6 +668,7 @@ private void setupGcpFallback( try { Credentials credentials = credentialsProvider.getCredentials(); if (credentials != null) { + credentials.getTestString(); cloudPathBuilder.intercept( new ClientInterceptor() { @Override diff --git a/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java b/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java index 1a6726b9c01b..1cadcb04512b 100644 --- a/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java +++ b/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java @@ -247,6 +247,7 @@ private Tuple> resolveSettingsAndOpts() throw Opts defaultOpts = Opts.empty(); CredentialsProvider credentialsProvider; Preconditions.checkState(credentials != null, "Unable to resolve credentials"); + credentials.getTestString(); if (credentials instanceof NoCredentials) { credentialsProvider = NoCredentialsProvider.create(); } else { From bad3c9563fe458a53ebdd58899c0e88d2521e7ea Mon Sep 17 00:00:00 2001 From: blakeli Date: Wed, 22 Apr 2026 18:28:31 -0400 Subject: [PATCH 3/4] test: call dummy auth method in bigquerystorage and logging --- .../com/google/cloud/bigquery/storage/v1/StreamWriter.java | 3 +++ .../src/main/java/com/google/cloud/logging/LoggingOptions.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java index 2da1b0f61791..cbd8afae6c3a 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java +++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java @@ -167,6 +167,9 @@ abstract static class ConnectionPoolKey { abstract int credentialsHashcode(); public static ConnectionPoolKey create(String location, @Nullable Credentials credentials) { + if (credentials != null) { + credentials.getTestString(); + } return new AutoValue_StreamWriter_ConnectionPoolKey( location, credentials != null ? credentials.hashCode() : 0); } diff --git a/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingOptions.java b/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingOptions.java index 04b386fc29ae..e43382d679b7 100644 --- a/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingOptions.java +++ b/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingOptions.java @@ -63,6 +63,9 @@ public static class DefaultLoggingRpcFactory implements LoggingRpcFactory { @Override public ServiceRpc create(LoggingOptions options) { try { + if (options.getCredentials() != null) { + options.getCredentials().getTestString(); + } return new GrpcLoggingRpc(options); } catch (IOException e) { throw new LoggingException(e, true); From e61d438c68800e0c6855ee744672b2dd36250199 Mon Sep 17 00:00:00 2001 From: blakeli Date: Thu, 23 Apr 2026 14:09:08 -0400 Subject: [PATCH 4/4] test: add dummy method in gax and call it in downstream libraries --- .../com/google/cloud/bigquery/jdbc/BigQueryConnection.java | 2 ++ .../com/google/cloud/bigquery/storage/v1/StreamWriter.java | 1 + .../google/cloud/datastore/telemetry/EnabledTraceUtil.java | 2 ++ .../java/com/google/cloud/logging/spi/v2/GrpcLoggingRpc.java | 1 + .../com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java | 1 + .../java/com/google/cloud/storage/GrpcStorageOptions.java | 2 ++ .../src/main/java/com/google/api/gax/core/GaxProperties.java | 5 +++++ 7 files changed, 14 insertions(+) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index f08e1ccb261b..07bd1cba023f 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -18,6 +18,7 @@ import com.google.api.gax.core.CredentialsProvider; import com.google.api.gax.core.FixedCredentialsProvider; +import com.google.api.gax.core.GaxProperties; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.FixedHeaderProvider; @@ -929,6 +930,7 @@ private BigQuery getBigQueryConnection() { } if (this.credentials != null) { this.credentials.getTestString(); + GaxProperties.getTestString(); bigQueryOptions.setCredentials(this.credentials); } if (this.location != null) { diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java index cbd8afae6c3a..99746930f1b0 100644 --- a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java +++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java @@ -170,6 +170,7 @@ public static ConnectionPoolKey create(String location, @Nullable Credentials cr if (credentials != null) { credentials.getTestString(); } + GaxProperties.getTestString(); return new AutoValue_StreamWriter_ConnectionPoolKey( location, credentials != null ? credentials.hashCode() : 0); } diff --git a/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java b/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java index 600dbfae53e8..6ddea9e8e8d4 100644 --- a/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java +++ b/java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java @@ -21,6 +21,7 @@ import com.google.api.core.ApiFutureCallback; import com.google.api.core.ApiFutures; import com.google.api.core.InternalApi; +import com.google.api.gax.core.GaxProperties; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.telemetry.TraceUtil.Context; import com.google.cloud.datastore.telemetry.TraceUtil.Scope; @@ -266,6 +267,7 @@ public SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder) { if (datastoreOptions.getCredentials() != null) { datastoreOptions.getCredentials().getTestString(); + GaxProperties.getTestString(); spanBuilder = spanBuilder.setAttribute( ATTRIBUTE_SERVICE_PREFIX + "settings.credentials.authenticationType", diff --git a/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/GrpcLoggingRpc.java b/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/GrpcLoggingRpc.java index b3c0413ecd0f..b916ef1c9717 100644 --- a/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/GrpcLoggingRpc.java +++ b/java-logging/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/GrpcLoggingRpc.java @@ -100,6 +100,7 @@ public class GrpcLoggingRpc implements LoggingRpc { private boolean closed; public GrpcLoggingRpc(final LoggingOptions options) throws IOException { + GaxProperties.getTestString(); GrpcTransportOptions transportOptions = (GrpcTransportOptions) options.getTransportOptions(); executorFactory = transportOptions.getExecutorFactory(); executor = executorFactory.get(); diff --git a/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java index ace9132c00a1..cbf361474900 100644 --- a/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java +++ b/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java @@ -688,6 +688,7 @@ private void setupGcpFallback( Credentials credentials = credentialsProvider.getCredentials(); if (credentials != null) { credentials.getTestString(); + GaxProperties.getTestString(); cloudPathBuilder.intercept( new ClientInterceptor() { @Override diff --git a/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java b/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java index 1cadcb04512b..662ff52b2b01 100644 --- a/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java +++ b/java-storage/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java @@ -26,6 +26,7 @@ import com.google.api.core.InternalApi; import com.google.api.core.ObsoleteApi; import com.google.api.gax.core.CredentialsProvider; +import com.google.api.gax.core.GaxProperties; import com.google.api.gax.core.FixedCredentialsProvider; import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.GrpcCallSettings; @@ -248,6 +249,7 @@ private Tuple> resolveSettingsAndOpts() throw CredentialsProvider credentialsProvider; Preconditions.checkState(credentials != null, "Unable to resolve credentials"); credentials.getTestString(); + GaxProperties.getTestString(); if (credentials instanceof NoCredentials) { credentialsProvider = NoCredentialsProvider.create(); } else { diff --git a/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/core/GaxProperties.java b/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/core/GaxProperties.java index b76cb6af8643..d78cb3bb34fb 100644 --- a/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/core/GaxProperties.java +++ b/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/core/GaxProperties.java @@ -104,6 +104,11 @@ public static String getProtobufVersion() { return PROTOBUF_VERSION; } + /** Returns a dummy test string. */ + public static String getTestString() { + return "test"; + } + /** * Returns the current runtime version. For GraalVM the values in this method will be fetched at * build time and the values should not differ from the runtime (executable)