@Test
public void shouldNotMakeRemoteCallsInAReadonlyTransactionIfNoWorkIsDone() {
TimestampService mockTimestampService = mock(TimestampService.class);
TimestampManagementService mockTimestampManagementService = mock(TimestampManagementService.class);
LockService mockLockService = mock(LockService.class);
TransactionManager txnManagerWithMocks = SerializableTransactionManager.createForTest(
metricsManager,
getKeyValueService(),
mockTimestampService, mockTimestampManagementService,
LockClient.of("foo"), mockLockService, transactionService,
() -> AtlasDbConstraintCheckingMode.FULL_CONSTRAINT_CHECKING_THROWS_EXCEPTIONS,
conflictDetectionManager, sweepStrategyManager, NoOpCleaner.INSTANCE,
AbstractTransactionTest.GET_RANGES_THREAD_POOL_SIZE,
AbstractTransactionTest.DEFAULT_GET_RANGES_CONCURRENCY,
MultiTableSweepQueueWriter.NO_OP);
when(mockTimestampService.getFreshTimestamp()).thenReturn(1L);
when(mockLockService.getMinLockedInVersionId("foo")).thenReturn(1L);
txnManagerWithMocks.getImmutableTimestamp();
verify(mockTimestampService).getFreshTimestamp();
verify(mockLockService).getMinLockedInVersionId("foo");
txnManagerWithMocks.runTaskReadOnly(txn -> null);
verifyNoMoreInteractions(mockLockService);
verifyNoMoreInteractions(mockTimestampService);
verifyNoMoreInteractions(mockTimestampManagementService);
}