From 3d368cb8318d662fdef964b93655ff1a24f67609 Mon Sep 17 00:00:00 2001 From: Nicole Lee Date: Wed, 8 Jul 2026 15:33:06 +0000 Subject: [PATCH 1/3] fix: disable annotation on mocks for java 8 --- .../v2/BigtableInstanceAdminClientV2Test.java | 3 +- .../v2/BigtableTableAdminClientV2Test.java | 12 ++-- .../v1/StreamingSubscriberConnectionTest.java | 63 ++++++++++++------- .../SpannerCloudMonitoringExporterTest.java | 5 +- .../google/cloud/spanner/SpannerImplTest.java | 17 +++-- .../gax/grpc/GrpcLongRunningClientTest.java | 9 ++- 6 files changed, 72 insertions(+), 37 deletions(-) diff --git a/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2Test.java b/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2Test.java index 5f7e311b2e5c..c4bc9701df5f 100644 --- a/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2Test.java +++ b/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2Test.java @@ -28,7 +28,8 @@ public class BigtableInstanceAdminClientV2Test { @Test public void testCreateWithStub() { - BigtableInstanceAdminStub mockStub = Mockito.mock(BigtableInstanceAdminStub.class); + BigtableInstanceAdminStub mockStub = + Mockito.mock(BigtableInstanceAdminStub.class, Mockito.withSettings().withoutAnnotations()); BigtableInstanceAdminClientV2 client = new BigtableInstanceAdminClientV2(mockStub); assertThat(client).isNotNull(); diff --git a/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java b/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java index 8507a8f14b94..bad84c9276bf 100644 --- a/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java +++ b/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java @@ -35,7 +35,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @@ -48,11 +47,10 @@ public class BigtableTableAdminClientV2Test { private static final String TABLE_NAME = "projects/my-project/instances/my-instance/tables/my-table"; - @Mock private GrpcBigtableTableAdminStub mockStub; + private GrpcBigtableTableAdminStub mockStub; - @Mock private AwaitConsistencyCallableV2 mockAwaitConsistencyCallable; + private AwaitConsistencyCallableV2 mockAwaitConsistencyCallable; - @Mock private OperationCallable mockOptimizeRestoredTableCallable; @@ -60,6 +58,12 @@ public class BigtableTableAdminClientV2Test { @Before public void setUp() { + mockStub = + Mockito.mock(GrpcBigtableTableAdminStub.class, Mockito.withSettings().withoutAnnotations()); + mockAwaitConsistencyCallable = + Mockito.mock(AwaitConsistencyCallableV2.class, Mockito.withSettings().withoutAnnotations()); + mockOptimizeRestoredTableCallable = + Mockito.mock(OperationCallable.class, Mockito.withSettings().withoutAnnotations()); client = new BigtableTableAdminClientV2( mockStub, null, false, mockAwaitConsistencyCallable, mockOptimizeRestoredTableCallable); diff --git a/java-pubsub/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/StreamingSubscriberConnectionTest.java b/java-pubsub/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/StreamingSubscriberConnectionTest.java index 0d6c65665c6d..35c3f8e86d03 100644 --- a/java-pubsub/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/StreamingSubscriberConnectionTest.java +++ b/java-pubsub/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/StreamingSubscriberConnectionTest.java @@ -103,7 +103,10 @@ public void setUp() { systemExecutor = new FakeScheduledExecutorService(); executor = new FakeScheduledExecutorService(); clock = systemExecutor.getClock(); - mockSubscriberStub = mock(SubscriberStub.class, RETURNS_DEEP_STUBS); + mockSubscriberStub = + mock( + SubscriberStub.class, + withSettings().withoutAnnotations().defaultAnswer(RETURNS_DEEP_STUBS)); } @After @@ -128,7 +131,8 @@ public void testRunShutdown_TimeoutMet() throws Exception { SubscriberShutdownSettings shutdownSettings = SubscriberShutdownSettings.newBuilder().setTimeout(Duration.ofSeconds(10)).build(); StreamingSubscriberConnection.Builder builder = - StreamingSubscriberConnection.newBuilder(mock(MessageReceiverWithAckResponse.class)); + StreamingSubscriberConnection.newBuilder( + mock(MessageReceiverWithAckResponse.class, withSettings().withoutAnnotations())); builder.setSubscriberShutdownSettings(shutdownSettings); StreamingSubscriberConnection streamingSubscriberConnection = getStreamingSubscriberConnectionFromBuilder(builder); @@ -149,7 +153,8 @@ public void testRunShutdown_TimeoutExceeded() throws Exception { SubscriberShutdownSettings shutdownSettings = SubscriberShutdownSettings.newBuilder().setTimeout(Duration.ofSeconds(2)).build(); StreamingSubscriberConnection.Builder builder = - StreamingSubscriberConnection.newBuilder(mock(MessageReceiverWithAckResponse.class)); + StreamingSubscriberConnection.newBuilder( + mock(MessageReceiverWithAckResponse.class, withSettings().withoutAnnotations())); StreamingSubscriberConnection streamingSubscriberConnection = getStreamingSubscriberConnectionFromBuilder(builder, shutdownSettings); streamingSubscriberConnection.setExactlyOnceDeliveryEnabled(true); @@ -199,11 +204,13 @@ public void testAckDuringNackImmediatelyShutdown() throws Exception { .setMode(SubscriberShutdownSettings.ShutdownMode.NACK_IMMEDIATELY) .build(); - MessageDispatcher mockMessageDispatcher = mock(MessageDispatcher.class); + MessageDispatcher mockMessageDispatcher = + mock(MessageDispatcher.class, withSettings().withoutAnnotations()); when(mockMessageDispatcher.getNackImmediatelyShutdownInProgress()).thenReturn(true); StreamingSubscriberConnection.Builder builder = - StreamingSubscriberConnection.newBuilder(mock(MessageReceiverWithAckResponse.class)); + StreamingSubscriberConnection.newBuilder( + mock(MessageReceiverWithAckResponse.class, withSettings().withoutAnnotations())); StreamingSubscriberConnection streamingSubscriberConnection = getStreamingSubscriberConnectionFromBuilder(builder, shutdownSettings); @@ -687,8 +694,9 @@ public void testMaxPerRequestChanges() { @Test public void testClientPinger_pingSent() { BidiStreamingCallable mockStreamingCallable = - mock(BidiStreamingCallable.class); - ClientStream mockClientStream = mock(ClientStream.class); + mock(BidiStreamingCallable.class, withSettings().withoutAnnotations()); + ClientStream mockClientStream = + mock(ClientStream.class, withSettings().withoutAnnotations()); when(mockSubscriberStub.streamingPullCallable()).thenReturn(mockStreamingCallable); when(mockStreamingCallable.splitCall(any(ResponseObserver.class), any())) .thenReturn(mockClientStream); @@ -730,8 +738,9 @@ public void testClientPinger_pingSent() { @Test public void testClientPinger_pingsNotSentWhenDisabled() { BidiStreamingCallable mockStreamingCallable = - mock(BidiStreamingCallable.class); - ClientStream mockClientStream = mock(ClientStream.class); + mock(BidiStreamingCallable.class, withSettings().withoutAnnotations()); + ClientStream mockClientStream = + mock(ClientStream.class, withSettings().withoutAnnotations()); when(mockSubscriberStub.streamingPullCallable()).thenReturn(mockStreamingCallable); when(mockStreamingCallable.splitCall(any(ResponseObserver.class), any())) .thenReturn(mockClientStream); @@ -755,8 +764,9 @@ public void testClientPinger_pingsNotSentWhenDisabled() { @Test public void testServerMonitor_timesOut() { BidiStreamingCallable mockStreamingCallable = - mock(BidiStreamingCallable.class); - ClientStream mockClientStream = mock(ClientStream.class); + mock(BidiStreamingCallable.class, withSettings().withoutAnnotations()); + ClientStream mockClientStream = + mock(ClientStream.class, withSettings().withoutAnnotations()); ArgumentCaptor> observerCaptor = ArgumentCaptor.forClass(ResponseObserver.class); when(mockSubscriberStub.streamingPullCallable()).thenReturn(mockStreamingCallable); @@ -786,7 +796,8 @@ public void testServerMonitor_timesOut() { streamingSubscriberConnection.awaitRunning(); ResponseObserver observer = observerCaptor.getValue(); - StreamController mockController = mock(StreamController.class); + StreamController mockController = + mock(StreamController.class, withSettings().withoutAnnotations()); observer.onStart(mockController); systemExecutor.advanceTime(CLIENT_PING_INTERVAL); @@ -803,8 +814,9 @@ public void testServerMonitor_timesOut() { @Test public void testServerMonitor_doesNotTimeOutIfResponseReceived() { BidiStreamingCallable mockStreamingCallable = - mock(BidiStreamingCallable.class); - ClientStream mockClientStream = mock(ClientStream.class); + mock(BidiStreamingCallable.class, withSettings().withoutAnnotations()); + ClientStream mockClientStream = + mock(ClientStream.class, withSettings().withoutAnnotations()); ArgumentCaptor> observerCaptor = ArgumentCaptor.forClass(ResponseObserver.class); when(mockSubscriberStub.streamingPullCallable()).thenReturn(mockStreamingCallable); @@ -818,7 +830,8 @@ public void testServerMonitor_doesNotTimeOutIfResponseReceived() { streamingSubscriberConnection.awaitRunning(); ResponseObserver observer = observerCaptor.getValue(); - StreamController mockController = mock(StreamController.class); + StreamController mockController = + mock(StreamController.class, withSettings().withoutAnnotations()); observer.onStart(mockController); // t=30s: ping sent. @@ -837,7 +850,8 @@ private StreamingSubscriberConnection getStreamingSubscriberConnection( boolean exactlyOnceDeliveryEnabled) { StreamingSubscriberConnection streamingSubscriberConnection = getStreamingSubscriberConnectionFromBuilder( - StreamingSubscriberConnection.newBuilder(mock(MessageReceiverWithAckResponse.class))); + StreamingSubscriberConnection.newBuilder( + mock(MessageReceiverWithAckResponse.class, withSettings().withoutAnnotations()))); // This would normally be set from the streaming pull response streamingSubscriberConnection.setExactlyOnceDeliveryEnabled(exactlyOnceDeliveryEnabled); @@ -848,7 +862,8 @@ private StreamingSubscriberConnection getStreamingSubscriberConnection( private StreamingSubscriberConnection getKeepaliveStreamingSubscriberConnection() { StreamingSubscriberConnection streamingSubscriberConnection = getStreamingSubscriberConnectionFromBuilder( - StreamingSubscriberConnection.newBuilder(mock(MessageReceiverWithAckResponse.class)) + StreamingSubscriberConnection.newBuilder( + mock(MessageReceiverWithAckResponse.class, withSettings().withoutAnnotations())) .setProtocolVersion(KEEP_ALIVE_SUPPORT_VERSION)); return streamingSubscriberConnection; @@ -860,11 +875,12 @@ private StreamingSubscriberConnection getStreamingSubscriberConnectionFromBuilde .setSubscription(MOCK_SUBSCRIPTION_NAME) .setAckExpirationPadding(ACK_EXPIRATION_PADDING_DEFAULT_DURATION) .setMaxAckExtensionPeriod(MAX_ACK_EXTENSION_PERIOD) - .setAckLatencyDistribution(mock(Distribution.class)) + .setAckLatencyDistribution(mock(Distribution.class, withSettings().withoutAnnotations())) .setSubscriberStub(mockSubscriberStub) .setChannelAffinity(0) - .setFlowControlSettings(mock(FlowControlSettings.class)) - .setFlowController(mock(FlowController.class)) + .setFlowControlSettings( + mock(FlowControlSettings.class, withSettings().withoutAnnotations())) + .setFlowController(mock(FlowController.class, withSettings().withoutAnnotations())) .setExecutor(executor) .setSystemExecutor(systemExecutor) .setClock(clock) @@ -881,11 +897,12 @@ private StreamingSubscriberConnection getStreamingSubscriberConnectionFromBuilde return builder .setSubscription(MOCK_SUBSCRIPTION_NAME) .setAckExpirationPadding(ACK_EXPIRATION_PADDING_DEFAULT_DURATION) - .setAckLatencyDistribution(mock(Distribution.class)) + .setAckLatencyDistribution(mock(Distribution.class, withSettings().withoutAnnotations())) .setSubscriberStub(mockSubscriberStub) .setChannelAffinity(0) - .setFlowControlSettings(mock(FlowControlSettings.class)) - .setFlowController(mock(FlowController.class)) + .setFlowControlSettings( + mock(FlowControlSettings.class, withSettings().withoutAnnotations())) + .setFlowController(mock(FlowController.class, withSettings().withoutAnnotations())) .setExecutor(executor) .setSystemExecutor(systemExecutor) .setClock(clock) diff --git a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java index 8f642eefe120..2f0e7d035308 100644 --- a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java +++ b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java @@ -75,7 +75,6 @@ import org.junit.Rule; import org.junit.Test; import org.mockito.ArgumentCaptor; -import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @@ -93,7 +92,7 @@ public class SpannerCloudMonitoringExporterTest { @Rule public final MockitoRule mockitoRule = MockitoJUnit.rule(); - @Mock private MetricServiceStub mockMetricServiceStub; + private MetricServiceStub mockMetricServiceStub; private MetricServiceClient fakeMetricServiceClient; private SpannerCloudMonitoringExporter exporter; @@ -107,6 +106,8 @@ public class SpannerCloudMonitoringExporterTest { @Before public void setUp() { + mockMetricServiceStub = + Mockito.mock(MetricServiceStub.class, Mockito.withSettings().withoutAnnotations()); fakeMetricServiceClient = new FakeMetricServiceClient(mockMetricServiceStub); exporter = new SpannerCloudMonitoringExporter(fakeMetricServiceClient); diff --git a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerImplTest.java b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerImplTest.java index f1db693e8808..dbcfa7f03fe5 100644 --- a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerImplTest.java +++ b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerImplTest.java @@ -62,10 +62,10 @@ public class SpannerImplTest { @Mock private SpannerRpc rpc; @Mock private SpannerOptions spannerOptions; - @Mock private DatabaseAdminStubSettings databaseAdminStubSettings; - @Mock private DatabaseAdminStub databaseAdminStub; - @Mock private InstanceAdminStubSettings instanceAdminStubSettings; - @Mock private InstanceAdminStub instanceAdminStub; + private DatabaseAdminStubSettings databaseAdminStubSettings; + private DatabaseAdminStub databaseAdminStub; + private InstanceAdminStubSettings instanceAdminStubSettings; + private InstanceAdminStub instanceAdminStub; private SpannerImpl impl; @Captor ArgumentCaptor> options; @@ -78,6 +78,15 @@ public static void setupOpenTelemetry() { @Before public void setUp() { + databaseAdminStubSettings = + Mockito.mock(DatabaseAdminStubSettings.class, Mockito.withSettings().withoutAnnotations()); + databaseAdminStub = + Mockito.mock(DatabaseAdminStub.class, Mockito.withSettings().withoutAnnotations()); + instanceAdminStubSettings = + Mockito.mock(InstanceAdminStubSettings.class, Mockito.withSettings().withoutAnnotations()); + instanceAdminStub = + Mockito.mock(InstanceAdminStub.class, Mockito.withSettings().withoutAnnotations()); + MockitoAnnotations.initMocks(this); when(spannerOptions.getNumChannels()).thenReturn(4); when(spannerOptions.getDatabaseRole()).thenReturn("role"); diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java index 27af7de75c0e..4ef466dd6864 100644 --- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java +++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java @@ -50,7 +50,8 @@ class GrpcLongRunningClientTest { @Test void get() { - OperationsStub operationsStub = mock(OperationsStub.class); + OperationsStub operationsStub = + mock(OperationsStub.class, org.mockito.Mockito.withSettings().withoutAnnotations()); when(operationsStub.getOperationCallable()) .thenReturn( new UnaryCallable() { @@ -73,7 +74,8 @@ public ApiFuture futureCall( @Test void cancel() { - OperationsStub operationsStub = mock(OperationsStub.class); + OperationsStub operationsStub = + mock(OperationsStub.class, org.mockito.Mockito.withSettings().withoutAnnotations()); when(operationsStub.cancelOperationCallable()) .thenReturn( new UnaryCallable() { @@ -94,7 +96,8 @@ public ApiFuture futureCall( @Test void delete() { - OperationsStub operationsStub = mock(OperationsStub.class); + OperationsStub operationsStub = + mock(OperationsStub.class, org.mockito.Mockito.withSettings().withoutAnnotations()); when(operationsStub.deleteOperationCallable()) .thenReturn( new UnaryCallable() { From c47d6f3abf7c6d4b8c94652b10e00db9ad577cfc Mon Sep 17 00:00:00 2001 From: Nicole Lee Date: Wed, 8 Jul 2026 15:49:29 +0000 Subject: [PATCH 2/3] clean up unused mocks --- .../bigtable/admin/v2/BigtableTableAdminClientV2Test.java | 4 ---- .../cloud/spanner/SpannerCloudMonitoringExporterTest.java | 4 ---- 2 files changed, 8 deletions(-) diff --git a/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java b/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java index bad84c9276bf..b6de7085f3ad 100644 --- a/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java +++ b/java-bigtable/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2Test.java @@ -31,18 +31,14 @@ import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mockito; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; import org.mockito.stubbing.Answer; @RunWith(JUnit4.class) public class BigtableTableAdminClientV2Test { - @Rule public final MockitoRule mockitoRule = MockitoJUnit.rule(); private static final String TABLE_NAME = "projects/my-project/instances/my-instance/tables/my-table"; diff --git a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java index 2f0e7d035308..1f8351c732af 100644 --- a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java +++ b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java @@ -72,12 +72,9 @@ import java.util.stream.Collectors; import org.junit.After; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; public class SpannerCloudMonitoringExporterTest { @@ -90,7 +87,6 @@ public class SpannerCloudMonitoringExporterTest { private static final String clientHash = "spanner-test"; private static final String instanceConfigId = "fake-instance-config-id"; - @Rule public final MockitoRule mockitoRule = MockitoJUnit.rule(); private MetricServiceStub mockMetricServiceStub; private MetricServiceClient fakeMetricServiceClient; From efb4c831b41f19a58b85292fb68d76af8903d49d Mon Sep 17 00:00:00 2001 From: Nicole Lee Date: Wed, 8 Jul 2026 16:14:17 +0000 Subject: [PATCH 3/3] fix linting --- .../google/cloud/spanner/SpannerCloudMonitoringExporterTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java index 1f8351c732af..2ccaedfc457c 100644 --- a/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java +++ b/java-spanner/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterTest.java @@ -87,7 +87,6 @@ public class SpannerCloudMonitoringExporterTest { private static final String clientHash = "spanner-test"; private static final String instanceConfigId = "fake-instance-config-id"; - private MetricServiceStub mockMetricServiceStub; private MetricServiceClient fakeMetricServiceClient; private SpannerCloudMonitoringExporter exporter;