From 09b024e92eb74943aa1142bb2e33bd9a65e58c1b Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Tue, 6 May 2025 15:21:05 -0700 Subject: [PATCH 1/7] don't check transport channel provider endpoint. --- .../google/api/gax/rpc/EndpointContext.java | 3 +-- .../api/gax/rpc/EndpointContextTest.java | 21 ------------------- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index ce5cf8c786..f3d1c4245f 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -327,8 +327,7 @@ boolean shouldUseS2A() { } // If a custom endpoint is being used, skip S2A. - if (!Strings.isNullOrEmpty(clientSettingsEndpoint()) - || !Strings.isNullOrEmpty(transportChannelProviderEndpoint())) { + if (!Strings.isNullOrEmpty(clientSettingsEndpoint())) { return false; } diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java index dd1d383801..d66a7c7001 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java @@ -381,7 +381,6 @@ void endpointContextBuild_shouldUseS2A_tlsEndpoint() throws IOException { defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); EndpointContext endpointContext = defaultEndpointContextBuilder.build(); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isTrue(); @@ -479,7 +478,6 @@ void shouldUseS2A_envVarNotSet_returnsFalse() throws IOException { defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } @@ -492,7 +490,6 @@ void shouldUseS2A_UsingGDCH_returnsFalse() throws IOException { defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setUsingGDCH(true); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } @@ -505,20 +502,6 @@ void shouldUseS2A_customEndpointSetViaClientSettings_returnsFalse() throws IOExc defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("test.endpoint.com:443") - .setTransportChannelProviderEndpoint("") - .setUsingGDCH(false); - Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); - } - - @Test - void shouldUseS2A_customEndpointSetViaTransportChannelProvider_returnsFalse() throws IOException { - EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class); - Mockito.when(envProvider.getenv(EndpointContext.S2A_ENV_ENABLE_USE_S2A)).thenReturn("true"); - defaultEndpointContextBuilder = - defaultEndpointContextBuilder - .setEnvProvider(envProvider) - .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("test.endpoint.com:443") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } @@ -531,7 +514,6 @@ void shouldUseS2A_mtlsEndpointNull_returnsFalse() throws IOException { defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setUsingGDCH(false) .setMtlsEndpoint(null); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); @@ -545,7 +527,6 @@ void shouldUseS2A_mtlsEndpointEmpty_returnsFalse() throws IOException { defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setMtlsEndpoint("") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); @@ -559,7 +540,6 @@ void shouldUseS2A_mtlsEndpointNotGoogleDefaultUniverse_returnsFalse() throws IOE defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setMtlsEndpoint("test.mtls.abcd.com:443") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); @@ -573,7 +553,6 @@ void shouldUseS2A_success() throws IOException { defaultEndpointContextBuilder .setEnvProvider(envProvider) .setClientSettingsEndpoint("") - .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isTrue(); } From da8545090f3472f50f93011013aa8db8b38be2dd Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Thu, 29 May 2025 09:50:39 -0700 Subject: [PATCH 2/7] check transportchannelprovider endpoint not the default endpoint. --- .../src/main/java/com/google/api/gax/rpc/EndpointContext.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index f3d1c4245f..3ecb31090c 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -327,7 +327,9 @@ boolean shouldUseS2A() { } // If a custom endpoint is being used, skip S2A. - if (!Strings.isNullOrEmpty(clientSettingsEndpoint())) { + if (!Strings.isNullOrEmpty(clientSettingsEndpoint()) + || (transportChannelProviderEndpoint() + == buildEndpointTemplate(serviceName(), resolvedUniverseDomain()))) { return false; } From 6ad5b8e0f91af9b489d4008a4298c58449adb592 Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Thu, 29 May 2025 10:29:32 -0700 Subject: [PATCH 3/7] update tests. --- .../api/gax/rpc/EndpointContextTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java index d66a7c7001..964bdcdb7c 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java @@ -380,7 +380,9 @@ void endpointContextBuild_shouldUseS2A_tlsEndpoint() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); EndpointContext endpointContext = defaultEndpointContextBuilder.build(); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isTrue(); @@ -477,7 +479,9 @@ void shouldUseS2A_envVarNotSet_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } @@ -489,7 +493,9 @@ void shouldUseS2A_UsingGDCH_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setUsingGDCH(true); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } @@ -501,7 +507,23 @@ void shouldUseS2A_customEndpointSetViaClientSettings_returnsFalse() throws IOExc defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("test.endpoint.com:443") + .setTransportChannelProviderEndpoint("") + .setUsingGDCH(false); + Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); + } + + @Test + void shouldUseS2A_customEndpointSetViaTransportChannelProvider_returnsFalse() throws IOException { + EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class); + Mockito.when(envProvider.getenv(EndpointContext.S2A_ENV_ENABLE_USE_S2A)).thenReturn("true"); + defaultEndpointContextBuilder = + defaultEndpointContextBuilder + .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("test.endpoint.com:443") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } @@ -513,7 +535,9 @@ void shouldUseS2A_mtlsEndpointNull_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setUsingGDCH(false) .setMtlsEndpoint(null); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); @@ -526,7 +550,9 @@ void shouldUseS2A_mtlsEndpointEmpty_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setMtlsEndpoint("") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); @@ -539,7 +565,9 @@ void shouldUseS2A_mtlsEndpointNotGoogleDefaultUniverse_returnsFalse() throws IOE defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setMtlsEndpoint("test.mtls.abcd.com:443") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); @@ -552,7 +580,9 @@ void shouldUseS2A_success() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) + .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isTrue(); } From 56176502994fa83b4770296e6a940919a67f9c02 Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Thu, 29 May 2025 11:10:09 -0700 Subject: [PATCH 4/7] fix tests. --- .../api/gax/rpc/EndpointContextTest.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java index 964bdcdb7c..59342927ca 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java @@ -380,7 +380,7 @@ void endpointContextBuild_shouldUseS2A_tlsEndpoint() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); @@ -479,7 +479,7 @@ void shouldUseS2A_envVarNotSet_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); @@ -493,7 +493,7 @@ void shouldUseS2A_UsingGDCH_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setUsingGDCH(true); @@ -507,7 +507,7 @@ void shouldUseS2A_customEndpointSetViaClientSettings_returnsFalse() throws IOExc defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("test.endpoint.com:443") .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); @@ -521,7 +521,7 @@ void shouldUseS2A_customEndpointSetViaTransportChannelProvider_returnsFalse() th defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("test.endpoint.com:443") .setUsingGDCH(false); @@ -535,7 +535,7 @@ void shouldUseS2A_mtlsEndpointNull_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setUsingGDCH(false) @@ -550,7 +550,7 @@ void shouldUseS2A_mtlsEndpointEmpty_returnsFalse() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setMtlsEndpoint("") @@ -565,7 +565,7 @@ void shouldUseS2A_mtlsEndpointNotGoogleDefaultUniverse_returnsFalse() throws IOE defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setMtlsEndpoint("test.mtls.abcd.com:443") @@ -580,7 +580,7 @@ void shouldUseS2A_success() throws IOException { defaultEndpointContextBuilder = defaultEndpointContextBuilder .setEnvProvider(envProvider) - .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) + .setResolvedUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint("") .setTransportChannelProviderEndpoint("") .setUsingGDCH(false); From 6fb54f9016a13cab3b19fa148b7479bd74121f56 Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Thu, 29 May 2025 11:24:34 -0700 Subject: [PATCH 5/7] fix if condition. --- .../main/java/com/google/api/gax/rpc/EndpointContext.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index 3ecb31090c..f0e86909cc 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -328,8 +328,9 @@ boolean shouldUseS2A() { // If a custom endpoint is being used, skip S2A. if (!Strings.isNullOrEmpty(clientSettingsEndpoint()) - || (transportChannelProviderEndpoint() - == buildEndpointTemplate(serviceName(), resolvedUniverseDomain()))) { + || ((!Strings.isNullOrEmpty(transportChannelProviderEndpoint())) + && !(transportChannelProviderEndpoint() + == buildEndpointTemplate(serviceName(), resolvedUniverseDomain())))) { return false; } From 4bba85b1917a38a5f9555f635025841029eb1cf0 Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Thu, 29 May 2025 11:58:23 -0700 Subject: [PATCH 6/7] fix if. --- .../main/java/com/google/api/gax/rpc/EndpointContext.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index f0e86909cc..8b4f338547 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -328,9 +328,9 @@ boolean shouldUseS2A() { // If a custom endpoint is being used, skip S2A. if (!Strings.isNullOrEmpty(clientSettingsEndpoint()) - || ((!Strings.isNullOrEmpty(transportChannelProviderEndpoint())) - && !(transportChannelProviderEndpoint() - == buildEndpointTemplate(serviceName(), resolvedUniverseDomain())))) { + || (!Strings.isNullOrEmpty(transportChannelProviderEndpoint()) + && !buildEndpointTemplate(serviceName(), resolvedUniverseDomain()) + .contains(transportChannelProviderEndpoint()))) { return false; } From 5fafdaf36262d9f60b93fc93f57a051b5bf829d9 Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Fri, 30 May 2025 09:10:57 -0700 Subject: [PATCH 7/7] check if clientSettingsEndpoint is default endpoint --- .../src/main/java/com/google/api/gax/rpc/EndpointContext.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index 8b4f338547..2db7361e3a 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -327,7 +327,9 @@ boolean shouldUseS2A() { } // If a custom endpoint is being used, skip S2A. - if (!Strings.isNullOrEmpty(clientSettingsEndpoint()) + if ((!Strings.isNullOrEmpty(clientSettingsEndpoint()) + && !buildEndpointTemplate(serviceName(), resolvedUniverseDomain()) + .contains(clientSettingsEndpoint())) || (!Strings.isNullOrEmpty(transportChannelProviderEndpoint()) && !buildEndpointTemplate(serviceName(), resolvedUniverseDomain()) .contains(transportChannelProviderEndpoint()))) {