From 4560bcb3080b510eaea5110c66dd12573c77cbc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Mon, 18 Aug 2025 17:48:27 +0200 Subject: [PATCH] chore: reduce test time by skipping mtls The Google Auth libraries have added support for mtls. A check for what type of MtlsProvider is available is executed multiple times every time a Spanner client is created, and this check is relatively expensive. This causes all mock server tests to become slow. This change introduces a temporary hack to work around this, until we have a solution in the auth libraries that allow us to turn off this feature during tests that do not care about mtls. --- .../auth/mtls/DefaultMtlsProviderFactory.java | 45 +++++++++++++++++++ .../spanner/AbstractAsyncTransactionTest.java | 6 +++ .../cloud/spanner/AbstractMockServerTest.java | 6 +++ .../spanner/AbstractNettyMockServerTest.java | 6 +++ .../cloud/spanner/BackendExhaustedTest.java | 6 +++ .../spanner/BatchCreateSessionsSlowTest.java | 6 +++ .../spanner/BatchCreateSessionsTest.java | 6 +++ .../cloud/spanner/ChannelUsageTest.java | 6 +++ .../cloud/spanner/DatabaseClientImplTest.java | 6 +++ ...plWithDefaultRWTransactionOptionsTest.java | 6 +++ .../spanner/InlineBeginTransactionTest.java | 6 +++ .../cloud/spanner/OpenTelemetrySpanTest.java | 7 +++ .../google/cloud/spanner/PgNumericTest.java | 6 +++ .../google/cloud/spanner/ReadAsyncTest.java | 6 +++ ...adWriteTransactionWithInlineBeginTest.java | 6 +++ .../RetryOnInvalidatedSessionTest.java | 6 +++ .../cloud/spanner/SessionPoolLeakTest.java | 6 +++ .../com/google/cloud/spanner/SpanTest.java | 6 +++ .../cloud/spanner/SpannerGaxRetryTest.java | 6 +++ .../cloud/spanner/SpannerThreadsTest.java | 6 +++ .../spanner/TransactionChannelHintTest.java | 6 +++ .../TransactionManagerAbortedTest.java | 6 +++ .../connection/AbstractMockServerTest.java | 6 +++ .../LocalConnectionCheckerTest.java | 6 +++ .../spanner/spi/v1/GapicSpannerRpcTest.java | 6 +++ .../cloud/spanner/spi/v1/GfeLatencyTest.java | 6 +++ .../spanner/spi/v1/SpannerRpcMetricsTest.java | 6 +++ 27 files changed, 202 insertions(+) create mode 100644 google-cloud-spanner/src/test/java/com/google/auth/mtls/DefaultMtlsProviderFactory.java diff --git a/google-cloud-spanner/src/test/java/com/google/auth/mtls/DefaultMtlsProviderFactory.java b/google-cloud-spanner/src/test/java/com/google/auth/mtls/DefaultMtlsProviderFactory.java new file mode 100644 index 00000000000..4a1a4c47431 --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/auth/mtls/DefaultMtlsProviderFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright 2025 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 + * + * http://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. + */ + +package com.google.auth.mtls; + +import java.io.IOException; +import java.util.concurrent.atomic.AtomicBoolean; + +// TODO: Remove once the actual implementation of this class in the auth library has a config +// option that allows us to skip the most expensive code paths during tests. +public class DefaultMtlsProviderFactory { + public static final AtomicBoolean SKIP_MTLS = new AtomicBoolean(false); + + public static MtlsProvider create() throws IOException { + if (SKIP_MTLS.get()) { + return null; + } + // Note: The caller should handle CertificateSourceUnavailableException gracefully, since + // it is an expected error case. All other IOExceptions are unexpected and should be surfaced + // up the call stack. + MtlsProvider mtlsProvider = new X509Provider(); + if (mtlsProvider.isAvailable()) { + return mtlsProvider; + } + mtlsProvider = new SecureConnectProvider(); + if (mtlsProvider.isAvailable()) { + return mtlsProvider; + } + throw new CertificateSourceUnavailableException( + "No Certificate Source is available on this device."); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractAsyncTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractAsyncTransactionTest.java index 4abe06b1028..3107f1357f2 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractAsyncTransactionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractAsyncTransactionTest.java @@ -30,6 +30,7 @@ import static com.google.cloud.spanner.MockSpannerTestUtil.UPDATE_COUNT; import static com.google.cloud.spanner.MockSpannerTestUtil.UPDATE_STATEMENT; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import io.grpc.ManagedChannelBuilder; @@ -54,8 +55,12 @@ public abstract class AbstractAsyncTransactionTest { Spanner spanner; Spanner spannerWithEmptySessionPool; + private static boolean originalSkipMtls; + @BeforeClass public static void setup() throws Exception { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); mockSpanner.putStatementResult( @@ -85,6 +90,7 @@ public static void teardown() throws Exception { server.shutdown(); server.awaitTermination(); executor.shutdown(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractMockServerTest.java index 76d13e73869..3f8b5417a45 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractMockServerTest.java @@ -17,6 +17,7 @@ package com.google.cloud.spanner; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.admin.database.v1.MockDatabaseAdminImpl; import com.google.cloud.spanner.admin.instance.v1.MockInstanceAdminImpl; @@ -48,8 +49,12 @@ abstract class AbstractMockServerTest { protected Spanner spanner; + private static boolean originalSkipMtls; + @BeforeClass public static void startMockServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockInstanceAdmin = new MockInstanceAdminImpl(); @@ -93,6 +98,7 @@ public void getOperation( public static void stopMockServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java index a763f98cf0f..aa765c40cb6 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java @@ -17,6 +17,7 @@ package com.google.cloud.spanner; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import io.grpc.ForwardingServerCall; import io.grpc.ManagedChannelBuilder; @@ -51,8 +52,12 @@ abstract class AbstractNettyMockServerTest { protected Spanner spanner; + private static boolean originalSkipMtls; + @BeforeClass public static void startMockServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. @@ -93,6 +98,7 @@ public static void stopMockServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); executor.shutdown(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BackendExhaustedTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BackendExhaustedTest.java index d9bc779587f..2ec8989d175 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BackendExhaustedTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BackendExhaustedTest.java @@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.grpc.GrpcTransportOptions.ExecutorFactory; @@ -88,8 +89,12 @@ public class BackendExhaustedTest { private Spanner spanner; private DatabaseClientImpl client; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); @@ -115,6 +120,7 @@ public static void stopServer() throws InterruptedException { // Force a shutdown as there are still requests stuck in the server. server.shutdownNow(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsSlowTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsSlowTest.java index 72d04d94614..89147d7700e 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsSlowTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsSlowTest.java @@ -23,6 +23,7 @@ import static org.junit.Assume.assumeFalse; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; @@ -58,8 +59,12 @@ public class BatchCreateSessionsSlowTest { private static LocalChannelProvider channelProvider; private Spanner spanner; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult( @@ -82,6 +87,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsTest.java index 8d359428c77..d06b2a4de3d 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/BatchCreateSessionsTest.java @@ -21,6 +21,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; @@ -77,8 +78,12 @@ public class BatchCreateSessionsTest { private static Server server; private static LocalChannelProvider channelProvider; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.query(SELECT1AND2, SELECT1_RESULTSET)); @@ -97,6 +102,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ChannelUsageTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ChannelUsageTest.java index 30e06719181..cc2ea40cefa 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ChannelUsageTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ChannelUsageTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeFalse; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.common.util.concurrent.ListeningExecutorService; @@ -112,8 +113,12 @@ public static Collection data() { private static Level originalLogLevel; + private static boolean originalSkipMtls; + @BeforeClass public static void startServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.query(SELECT1, SELECT1_RESULTSET)); @@ -166,6 +171,7 @@ public ServerCall.Listener interceptCall( public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @BeforeClass diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java index fa8b5c982fa..3f5cce8ff75 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java @@ -46,6 +46,7 @@ import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ServerStream; import com.google.api.gax.rpc.StatusCode; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.ByteArray; import com.google.cloud.NoCredentials; import com.google.cloud.Timestamp; @@ -208,8 +209,12 @@ public class DatabaseClientImplTest { private Spanner spannerWithEmptySessionPool; private static ExecutorService executor; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); @@ -262,6 +267,7 @@ public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); executor.shutdown(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplWithDefaultRWTransactionOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplWithDefaultRWTransactionOptionsTest.java index 6be28413faf..b1c0f2cded9 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplWithDefaultRWTransactionOptionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplWithDefaultRWTransactionOptionsTest.java @@ -25,6 +25,7 @@ import static org.junit.Assert.assertTrue; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.cloud.spanner.Options.RpcPriority; @@ -82,8 +83,12 @@ public class DatabaseClientImplWithDefaultRWTransactionOptionsTest { private DatabaseClient clientWithSerializableOption; private DatabaseClient clientWithSerOptimisticOption; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); @@ -112,6 +117,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InlineBeginTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InlineBeginTransactionTest.java index 6a4f832633a..ba8cde0d21a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InlineBeginTransactionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InlineBeginTransactionTest.java @@ -28,6 +28,7 @@ import com.google.api.core.ApiFutures; import com.google.api.core.SettableApiFuture; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.AsyncResultSet.CallbackResponse; import com.google.cloud.spanner.AsyncTransactionManager.AsyncTransactionStep; @@ -139,8 +140,12 @@ public class InlineBeginTransactionTest { protected Spanner spanner; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); @@ -177,6 +182,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetrySpanTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetrySpanTest.java index 90e66526f14..689a591988e 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetrySpanTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetrySpanTest.java @@ -23,6 +23,7 @@ import com.google.api.gax.core.GaxProperties; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.common.base.Stopwatch; @@ -166,6 +167,8 @@ public class OpenTelemetrySpanTest { private int expectedReadWriteTransactionErrorWithBeginTransactionEventsCount = 11; + private static boolean originalSkipMtls; + @BeforeClass public static void setupOpenTelemetry() { SpannerOptions.resetActiveTracingFramework(); @@ -192,6 +195,9 @@ public static void startStaticServer() throws Exception { modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(null, failOnOverkillTraceComponent); + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); + mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.query(SELECT1, SELECT1_RESULTSET)); @@ -217,6 +223,7 @@ public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); } + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PgNumericTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PgNumericTest.java index 40591d17fe8..aef4d2ab602 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PgNumericTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PgNumericTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.common.collect.ImmutableMap; @@ -81,8 +82,12 @@ public class PgNumericTest { private Spanner spanner; private DatabaseClient databaseClient; + private static boolean originalSkipMtls; + @BeforeClass public static void beforeClass() throws Exception { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); @@ -94,6 +99,7 @@ public static void beforeClass() throws Exception { public static void afterClass() throws Exception { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadAsyncTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadAsyncTest.java index f793bb0ee60..6078bf027ae 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadAsyncTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadAsyncTest.java @@ -26,6 +26,7 @@ import com.google.api.core.ApiFutures; import com.google.api.core.SettableApiFuture; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.AsyncResultSet.CallbackResponse; import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; @@ -67,8 +68,12 @@ public class ReadAsyncTest { private Spanner spanner; private DatabaseClient client; + private static boolean originalSkipMtls; + @BeforeClass public static void setup() throws Exception { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.putStatementResult( StatementResult.query(READ_ONE_KEY_VALUE_STATEMENT, READ_ONE_KEY_VALUE_RESULTSET)); @@ -94,6 +99,7 @@ public static void teardown() throws Exception { executor.shutdown(); server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadWriteTransactionWithInlineBeginTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadWriteTransactionWithInlineBeginTest.java index aa268382b34..b894697f626 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadWriteTransactionWithInlineBeginTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ReadWriteTransactionWithInlineBeginTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertThrows; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.common.collect.Iterables; @@ -100,8 +101,12 @@ public class ReadWriteTransactionWithInlineBeginTest { private Spanner spanner; private DatabaseClient client; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); @@ -133,6 +138,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnInvalidatedSessionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnInvalidatedSessionTest.java index 5496ad531bf..4743bb6bdf7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnInvalidatedSessionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnInvalidatedSessionTest.java @@ -26,6 +26,7 @@ import com.google.api.core.ApiFutures; import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.AsyncResultSet.CallbackResponse; import com.google.cloud.spanner.AsyncTransactionManager.AsyncTransactionStep; @@ -161,8 +162,12 @@ public static Collection data() { private static DatabaseClient client; private static ExecutorService executor; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult( @@ -201,6 +206,7 @@ public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); executor.shutdown(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolLeakTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolLeakTest.java index 8ccea443dc1..1ac205327e9 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolLeakTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolLeakTest.java @@ -24,6 +24,7 @@ import static org.junit.Assume.assumeFalse; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; @@ -61,8 +62,12 @@ public class SessionPoolLeakTest { private DatabaseClient client; private SessionPool pool; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. String uniqueName = InProcessServerBuilder.generateName(); @@ -79,6 +84,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpanTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpanTest.java index 5e9825c9659..112dc2c8a6d 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpanTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpanTest.java @@ -22,6 +22,7 @@ import com.google.api.gax.grpc.testing.LocalChannelProvider; import com.google.api.gax.retrying.RetrySettings; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; @@ -115,6 +116,8 @@ public class SpanTest { .withDescription("Non-retryable test exception.") .asRuntimeException(); + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws Exception { Assume.assumeTrue( @@ -139,6 +142,8 @@ public static void startStaticServer() throws Exception { modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(null, failOnOverkillTraceComponent); + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); @@ -165,6 +170,7 @@ public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); } + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @BeforeClass diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerGaxRetryTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerGaxRetryTest.java index d132a0805df..1b7a6e841fe 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerGaxRetryTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerGaxRetryTest.java @@ -25,6 +25,7 @@ import com.google.api.gax.grpc.testing.LocalChannelProvider; import com.google.api.gax.retrying.RetrySettings; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; @@ -110,8 +111,12 @@ public class SpannerGaxRetryTest { private Spanner spannerWithTimeout; private DatabaseClient clientWithTimeout; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.query(SELECT1AND2, SELECT1_RESULTSET)); @@ -132,6 +137,7 @@ public static void startStaticServer() throws IOException { public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerThreadsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerThreadsTest.java index 662b7742b5f..545f0f58d44 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerThreadsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerThreadsTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.cloud.spanner.admin.database.v1.MockDatabaseAdminImpl; @@ -87,6 +88,8 @@ public class SpannerThreadsTest { private static Server server; private static InetSocketAddress address; + private static boolean originalSkipMtls; + @BeforeClass public static void startServer() throws IOException { assumeTrue( @@ -94,6 +97,8 @@ public static void startServer() throws IOException { + " emulator is running", System.getenv("SPANNER_EMULATOR_HOST") == null); + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.query(SELECT1AND2, SELECT1_RESULTSET)); @@ -116,6 +121,7 @@ public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); } + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @After diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionChannelHintTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionChannelHintTest.java index 14658210f44..cdbf6d0695b 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionChannelHintTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionChannelHintTest.java @@ -24,6 +24,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.cloud.spanner.Options.RpcPriority; @@ -100,8 +101,12 @@ public class TransactionChannelHintTest { private static final Set streamingReadLocalIps = ConcurrentHashMap.newKeySet(); private static Level originalLogLevel; + private static boolean originalSkipMtls; + @BeforeClass public static void startServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult(StatementResult.query(SELECT1, SELECT1_RESULTSET)); @@ -153,6 +158,7 @@ public ServerCall.Listener interceptCall( public static void stopServer() throws InterruptedException { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @BeforeClass diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerAbortedTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerAbortedTest.java index a437b41ddb4..4e963790ef5 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerAbortedTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerAbortedTest.java @@ -23,6 +23,7 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.cloud.spanner.v1.SpannerClient; @@ -126,8 +127,12 @@ public class TransactionManagerAbortedTest { private static SpannerClient spannerClient; private static Spanner spanner; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult( @@ -169,6 +174,7 @@ public static void stopServer() throws InterruptedException { spannerClient.close(); server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractMockServerTest.java index 201651cfd57..055f3cdb88d 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractMockServerTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.ForceCloseSpannerFunction; import com.google.cloud.spanner.MockSpannerServiceImpl; @@ -155,12 +156,16 @@ public abstract class AbstractMockServerTest { private static boolean nettyServerParentHandlers; private static boolean clientStreamParentHandlers; + private static boolean originalSkipMtls; + @BeforeClass public static void startStaticServer() throws IOException { startStaticServer(createServerInterceptor()); } public static void startStaticServer(ServerInterceptor interceptor) throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockInstanceAdmin = new MockInstanceAdminImpl(); @@ -244,6 +249,7 @@ public static void stopServer() { .setUseParentHandlers(clientStreamParentHandlers); } server.shutdown(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/LocalConnectionCheckerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/LocalConnectionCheckerTest.java index daf42b55af4..d885559bfd6 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/LocalConnectionCheckerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/LocalConnectionCheckerTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.spanner.MockSpannerServiceImpl; import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.SpannerException; @@ -37,8 +38,12 @@ public class LocalConnectionCheckerTest { private static Server server; private LocalConnectionChecker connectionChecker; + private static boolean originalSkipMtls; + @BeforeClass public static void beforeClass() throws Exception { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. @@ -51,6 +56,7 @@ public static void beforeClass() throws Exception { public static void afterClass() throws Exception { server.shutdown(); server.awaitTermination(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Before diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java index e46f61a8ce7..d96f6cb9102 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java @@ -31,6 +31,7 @@ import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.HeaderProvider; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.auth.oauth2.AccessToken; import com.google.auth.oauth2.OAuth2Credentials; import com.google.cloud.ServiceOptions; @@ -158,6 +159,8 @@ public class GapicSpannerRpcTest { private static boolean isEndToEndTracing; private static boolean isTraceContextPresent; + private static boolean originalSkipMtls; + @Parameter public Dialect dialect; @Parameters(name = "dialect = {0}") @@ -176,6 +179,8 @@ public void startServer() throws IOException { + " emulator is running", System.getenv("SPANNER_EMULATOR_HOST") == null); + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); defaultUserAgent = "spanner-java/" + GaxProperties.getLibraryVersion(GapicSpannerRpc.class); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. @@ -250,6 +255,7 @@ public void reset() throws InterruptedException { isRouteToLeader = false; isEndToEndTracing = false; isTraceContextPresent = false; + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @Test diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java index f2d8a07538c..3cbddfc86ac 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.auth.oauth2.AccessToken; import com.google.auth.oauth2.OAuth2Credentials; import com.google.cloud.spanner.DatabaseClient; @@ -131,11 +132,15 @@ public class GfeLatencyTest { private static final Statement UPDATE_FOO_STATEMENT = Statement.of("UPDATE FOO SET BAR=1 WHERE BAZ=2"); + private static boolean originalSkipMtls; + @BeforeClass public static void startServer() throws IOException { //noinspection deprecation SpannerRpcViews.registerGfeLatencyAndHeaderMissingCountViews(); + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. mockSpanner.putStatementResult( @@ -202,6 +207,7 @@ public static void stopServer() throws InterruptedException { serverNoHeader.shutdown(); serverNoHeader.awaitTermination(); } + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @After diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/SpannerRpcMetricsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/SpannerRpcMetricsTest.java index 049ce0d1960..f0d5233b87c 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/SpannerRpcMetricsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/SpannerRpcMetricsTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.assertEquals; +import com.google.auth.mtls.DefaultMtlsProviderFactory; import com.google.cloud.NoCredentials; import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; @@ -110,8 +111,12 @@ public class SpannerRpcMetricsTest { private static InMemoryMetricReader inMemoryMetricReaderInjected; + private static boolean originalSkipMtls; + @BeforeClass public static void startServer() throws IOException { + originalSkipMtls = DefaultMtlsProviderFactory.SKIP_MTLS.get(); + DefaultMtlsProviderFactory.SKIP_MTLS.set(true); SpannerOptions.enableOpenTelemetryMetrics(); mockSpanner = new MockSpannerServiceImpl(); mockSpanner.setAbortProbability(0.0D); // We don't want any unpredictable aborted transactions. @@ -198,6 +203,7 @@ public static void stopServer() throws InterruptedException { serverNoHeader.shutdown(); serverNoHeader.awaitTermination(); } + DefaultMtlsProviderFactory.SKIP_MTLS.set(originalSkipMtls); } @After