diff --git a/.baseline/checkstyle/checkstyle.xml b/.baseline/checkstyle/checkstyle.xml index 1a086c49c8e..0297c79f472 100644 --- a/.baseline/checkstyle/checkstyle.xml +++ b/.baseline/checkstyle/checkstyle.xml @@ -402,7 +402,9 @@ - + + + diff --git a/atlasdb-api/src/test/java/com/palantir/atlasdb/metrics/MetricPublicationArbiterTest.java b/atlasdb-api/src/test/java/com/palantir/atlasdb/metrics/MetricPublicationArbiterTest.java index 1aebc58f86a..53e02582084 100644 --- a/atlasdb-api/src/test/java/com/palantir/atlasdb/metrics/MetricPublicationArbiterTest.java +++ b/atlasdb-api/src/test/java/com/palantir/atlasdb/metrics/MetricPublicationArbiterTest.java @@ -55,6 +55,7 @@ public void metricsWithOneFilterAreFiltered() { } @Test + @SuppressWarnings("DistinctVarargsChecker") public void metricsWithMultipleFiltersAreAcceptedOnlyIfAllFiltersPermit() { MetricPublicationArbiter arbiter = createArbiter(ImmutableMap.of( METRIC_NAME_1, ImmutableSet.of(trueFilter(), falseFilter(), trueFilter()), @@ -100,7 +101,14 @@ public void deduplicatesFilters() { } private static MetricPublicationFilter trueFilter() { - return () -> true; + // Depending on the JDK, identical lambdas may share the same hashcode + // As a result, we cannot use this method to create a set of filters + return new MetricPublicationFilter() { + @Override + public boolean shouldPublish() { + return true; + } + }; } private static MetricPublicationFilter falseFilter() { diff --git a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/BackupTestUtils.java b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/BackupTestUtils.java index 75368debfcb..235b460e7e5 100644 --- a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/BackupTestUtils.java +++ b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/BackupTestUtils.java @@ -24,7 +24,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; -import com.palantir.atlasdb.cassandra.CassandraKeyValueServiceRuntimeConfig; import com.palantir.atlasdb.cassandra.CassandraServersConfigs; import com.palantir.atlasdb.cassandra.ImmutableCqlCapableConfig; import com.palantir.atlasdb.keyvalue.cassandra.LightweightOppToken; @@ -56,6 +55,11 @@ public final class BackupTestUtils { static final Range RANGE_2_TO_3 = Range.openClosed(TOKEN_2, TOKEN_3); static final Range RANGE_GREATER_THAN_3 = Range.greaterThan(TOKEN_3); + static final CassandraServersConfigs.CqlCapableConfig CASSANDRA_SERVERS_CONFIG = ImmutableCqlCapableConfig.builder() + .addAllCqlHosts(HOSTS) + .addAllThriftHosts(HOSTS) + .build(); + private BackupTestUtils() { // utility } @@ -79,14 +83,6 @@ static void mockTokenRanges(CqlSession cqlSession, CqlMetadata cqlMetadata) { when(cqlSession.getMetadata()).thenReturn(cqlMetadata); } - static void mockConfig(CassandraKeyValueServiceRuntimeConfig runtimeConfig) { - CassandraServersConfigs.CqlCapableConfig cqlCapableConfig = ImmutableCqlCapableConfig.builder() - .addAllCqlHosts(HOSTS) - .addAllThriftHosts(HOSTS) - .build(); - when(runtimeConfig.servers()).thenReturn(cqlCapableConfig); - } - static List mockTableMetadatas(KeyspaceMetadata keyspaceMetadata, String... tableNames) { return Arrays.stream(tableNames) .map(tableName -> mockTableMetadata(keyspaceMetadata, tableName)) diff --git a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/RepairRangeFetcherTest.java b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/RepairRangeFetcherTest.java index 18f673b6a6f..51b7bea153d 100644 --- a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/RepairRangeFetcherTest.java +++ b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/RepairRangeFetcherTest.java @@ -29,7 +29,6 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; import com.google.common.collect.RangeSet; -import com.palantir.atlasdb.cassandra.CassandraKeyValueServiceRuntimeConfig; import com.palantir.atlasdb.cassandra.backup.transaction.Transactions1TableInteraction; import com.palantir.atlasdb.cassandra.backup.transaction.Transactions2TableInteraction; import com.palantir.atlasdb.cassandra.backup.transaction.Transactions3TableInteraction; @@ -60,9 +59,6 @@ public class RepairRangeFetcherTest { @Mock private CqlMetadata cqlMetadata; - @Mock - private CassandraKeyValueServiceRuntimeConfig runtimeConfig; - private RepairRangeFetcher repairRangeFetcher; @Before @@ -72,14 +68,14 @@ public void setUp() { when(keyspaceMetadata.getTables()).thenReturn(tableMetadatas); BackupTestUtils.mockTokenRanges(cqlSession, cqlMetadata); - BackupTestUtils.mockConfig(runtimeConfig); when(cqlSession.retrieveRowKeysAtConsistencyAll(anyList())) .thenReturn(ImmutableSet.of(BackupTestUtils.TOKEN_1, OTHER_TOKEN)); when(cqlMetadata.getReplicas(eq(BackupTestUtils.NAMESPACE), any())) .thenReturn(ImmutableSet.copyOf(BackupTestUtils.HOSTS)); - repairRangeFetcher = new RepairRangeFetcher(cqlSession, BackupTestUtils.NAMESPACE, runtimeConfig.servers()); + repairRangeFetcher = + new RepairRangeFetcher(cqlSession, BackupTestUtils.NAMESPACE, BackupTestUtils.CASSANDRA_SERVERS_CONFIG); } @Test diff --git a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/TokenRangeFetcherTest.java b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/TokenRangeFetcherTest.java index b3867aa426e..b84ca130f40 100644 --- a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/TokenRangeFetcherTest.java +++ b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/TokenRangeFetcherTest.java @@ -29,7 +29,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Range; import com.google.common.collect.RangeSet; -import com.palantir.atlasdb.cassandra.CassandraKeyValueServiceRuntimeConfig; import com.palantir.atlasdb.keyvalue.cassandra.LightweightOppToken; import java.net.InetSocketAddress; import java.util.List; @@ -51,9 +50,6 @@ public class TokenRangeFetcherTest { @Mock private CqlMetadata cqlMetadata; - @Mock - private CassandraKeyValueServiceRuntimeConfig runtimeConfig; - private TokenRangeFetcher tokenRangeFetcher; @Before @@ -62,13 +58,13 @@ public void setUp() { List tableMetadatas = BackupTestUtils.mockTableMetadatas(keyspaceMetadata, TABLE_NAME); when(keyspaceMetadata.getTable(TABLE_NAME)).thenReturn(Iterables.getOnlyElement(tableMetadatas)); - BackupTestUtils.mockConfig(runtimeConfig); BackupTestUtils.mockTokenRanges(cqlSession, cqlMetadata); when(cqlSession.retrieveRowKeysAtConsistencyAll(anyList())) .thenReturn(ImmutableSet.of(BackupTestUtils.TOKEN_1, BackupTestUtils.TOKEN_2, BackupTestUtils.TOKEN_3)); - tokenRangeFetcher = new TokenRangeFetcher(cqlSession, BackupTestUtils.NAMESPACE, runtimeConfig.servers()); + tokenRangeFetcher = + new TokenRangeFetcher(cqlSession, BackupTestUtils.NAMESPACE, BackupTestUtils.CASSANDRA_SERVERS_CONFIG); } @Test diff --git a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/transaction/Transactions3TableInteractionTest.java b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/transaction/Transactions3TableInteractionTest.java index 51b450a4c21..dd18db2d717 100644 --- a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/transaction/Transactions3TableInteractionTest.java +++ b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/cassandra/backup/transaction/Transactions3TableInteractionTest.java @@ -26,7 +26,6 @@ import com.datastax.driver.core.Row; import com.datastax.driver.core.Statement; import com.datastax.driver.core.TableMetadata; -import com.datastax.driver.core.policies.RetryPolicy; import com.google.common.collect.Range; import com.google.common.primitives.Longs; import com.palantir.atlasdb.atomic.AtomicValue; @@ -53,8 +52,6 @@ public class Transactions3TableInteractionTest { new TwoPhaseEncodingStrategy(BaseProgressEncodingStrategy.INSTANCE); private static final String KEYSPACE = "keyspace"; - - private final RetryPolicy mockPolicy = mock(RetryPolicy.class); private final TransactionsTableInteraction interaction = new Transactions3TableInteraction(RANGE); private final TableMetadata tableMetadata = mock(TableMetadata.class, RETURNS_DEEP_STUBS); diff --git a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolTest.java b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolTest.java index 2d075e0e29c..335a8c6dcc0 100644 --- a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolTest.java +++ b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/CassandraClientPoolTest.java @@ -31,7 +31,7 @@ import com.palantir.atlasdb.cassandra.CassandraCredentialsConfig; import com.palantir.atlasdb.cassandra.CassandraKeyValueServiceConfig; import com.palantir.atlasdb.cassandra.CassandraKeyValueServiceRuntimeConfig; -import com.palantir.atlasdb.cassandra.CassandraServersConfigs.ThriftHostsExtractingVisitor; +import com.palantir.atlasdb.cassandra.CassandraServersConfigs; import com.palantir.atlasdb.cassandra.ImmutableDefaultConfig; import com.palantir.atlasdb.keyvalue.cassandra.pool.CassandraServer; import com.palantir.atlasdb.keyvalue.cassandra.pool.CassandraService; @@ -108,13 +108,8 @@ public void setup() { when(runtimeConfig.unresponsiveHostBackoffTimeSeconds()).thenReturn(UNRESPONSIVE_HOST_BACKOFF_SECONDS); when(config.credentials()).thenReturn(mock(CassandraCredentialsConfig.class)); when(config.getKeyspaceOrThrow()).thenReturn("ks"); - blacklist = new Blacklist(config, Refreshable.only(runtimeConfig.unresponsiveHostBackoffTimeSeconds())); + blacklist = new Blacklist(config, Refreshable.only(UNRESPONSIVE_HOST_BACKOFF_SECONDS)); - doAnswer(invocation -> runtimeConfig.servers().accept(ThriftHostsExtractingVisitor.INSTANCE).stream() - .map(CassandraServer::of) - .collect(ImmutableSet.toImmutableSet())) - .when(cassandra) - .getCurrentServerListFromConfig(); doAnswer(invocation -> poolServers.add(getInvocationAddress(invocation))) .when(cassandra) .addPool(any()); @@ -277,8 +272,7 @@ public void resilientToRollingRestarts() { @Test public void attemptsShouldBeCountedPerHost() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder().addThriftHosts().build()); + setupThriftServers(ImmutableSet.of()); CassandraClientPoolImpl cassandraClientPool = CassandraClientPoolImpl.createImplForTest( MetricsManagers.of(metricRegistry, taggedMetricRegistry), config, @@ -299,10 +293,7 @@ public void attemptsShouldBeCountedPerHost() { @Test public void hostIsAutomaticallyRemovedOnStartup() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addThriftHosts(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy(), CASS_SERVER_3.proxy()) - .build()); + setupThriftServers(ImmutableSet.of(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy(), CASS_SERVER_3.proxy())); when(config.autoRefreshNodes()).thenReturn(true); setCassandraServersTo(CASS_SERVER_1); @@ -313,10 +304,7 @@ public void hostIsAutomaticallyRemovedOnStartup() { @Test public void hostIsAutomaticallyRemovedOnRefresh() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addThriftHosts(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy(), CASS_SERVER_3.proxy()) - .build()); + setupThriftServers(ImmutableSet.of(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy(), CASS_SERVER_3.proxy())); when(config.autoRefreshNodes()).thenReturn(true); setCassandraServersTo(CASS_SERVER_1, CASS_SERVER_2, CASS_SERVER_3); @@ -325,16 +313,13 @@ public void hostIsAutomaticallyRemovedOnRefresh() { assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2, CASS_SERVER_3); setCassandraServersTo(CASS_SERVER_1, CASS_SERVER_2); - deterministicExecutor.tick(config.poolRefreshIntervalSeconds(), TimeUnit.SECONDS); + deterministicExecutor.tick(POOL_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); } @Test public void hostIsAutomaticallyAddedOnStartup() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addThriftHosts(CASS_SERVER_1.proxy()) - .build()); + setupThriftServers(ImmutableSet.of(CASS_SERVER_1.proxy())); when(config.autoRefreshNodes()).thenReturn(true); setCassandraServersTo(CASS_SERVER_1, CASS_SERVER_2); @@ -345,10 +330,7 @@ public void hostIsAutomaticallyAddedOnStartup() { @Test public void hostIsAutomaticallyAddedOnRefresh() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addThriftHosts(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy()) - .build()); + setupThriftServers(ImmutableSet.of(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy())); when(config.autoRefreshNodes()).thenReturn(true); setCassandraServersTo(CASS_SERVER_1, CASS_SERVER_2); @@ -357,16 +339,13 @@ public void hostIsAutomaticallyAddedOnRefresh() { assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); setCassandraServersTo(CASS_SERVER_1, CASS_SERVER_2, CASS_SERVER_3); - deterministicExecutor.tick(config.poolRefreshIntervalSeconds(), TimeUnit.SECONDS); + deterministicExecutor.tick(POOL_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2, CASS_SERVER_3); } @Test public void hostsAreNotRemovedOrAddedWhenRefreshIsDisabled() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addThriftHosts(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy()) - .build()); + setupThriftServers(ImmutableSet.of(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy())); when(config.autoRefreshNodes()).thenReturn(false); setCassandraServersTo(CASS_SERVER_1); @@ -374,33 +353,7 @@ public void hostsAreNotRemovedOrAddedWhenRefreshIsDisabled() { assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); setCassandraServersTo(CASS_SERVER_1, CASS_SERVER_2, CASS_SERVER_3); - deterministicExecutor.tick(config.poolRefreshIntervalSeconds(), TimeUnit.SECONDS); - assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); - } - - @Test - public void hostsAreResetToConfigOnRefreshWhenRefreshIsDisabled() { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addThriftHosts(CASS_SERVER_1.proxy(), CASS_SERVER_2.proxy()) - .build()); - when(config.autoRefreshNodes()).thenReturn(false); - - setCassandraServersTo(CASS_SERVER_1); - createClientPool(); - assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); - - cassandra.addPool(CASS_SERVER_3); - assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2, CASS_SERVER_3); - - deterministicExecutor.tick(config.poolRefreshIntervalSeconds(), TimeUnit.SECONDS); - assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); - - setCassandraServersTo(CASS_SERVER_2, CASS_SERVER_3); - cassandra.removePool(CASS_SERVER_1); - assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_2); - - deterministicExecutor.tick(config.poolRefreshIntervalSeconds(), TimeUnit.SECONDS); + deterministicExecutor.tick(POOL_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); assertThat(poolServers).containsExactlyInAnyOrder(CASS_SERVER_1, CASS_SERVER_2); } @@ -501,10 +454,7 @@ private CassandraClientPoolImpl throwingClientPoolWithServersInCurrentPool( @SuppressWarnings("OptionalUsedAsFieldOrParameterType") // Unpacking it seems less readable private CassandraClientPoolImpl clientPoolWith( Set servers, Set serversInPool, Optional failureMode) { - when(runtimeConfig.servers()) - .thenReturn(ImmutableDefaultConfig.builder() - .addAllThriftHosts(servers) - .build()); + setupThriftServers(servers); when(config.timeoutOnConnectionClose()).thenReturn(Duration.ofSeconds(10)); when(config.timeoutOnConnectionBorrow()).thenReturn(HumanReadableDuration.minutes(10)); when(config.consecutiveAbsencesBeforePoolRemoval()).thenReturn(1); @@ -596,4 +546,14 @@ private Object getAggregateMetricValueForMetricName(String metricName) { String fullyQualifiedMetricName = MetricRegistry.name(CassandraClientPool.class, metricName); return metricRegistry.getGauges().get(fullyQualifiedMetricName).getValue(); } + + private void setupThriftServers(Set servers) { + CassandraServersConfigs.CassandraServersConfig config = + ImmutableDefaultConfig.builder().addAllThriftHosts(servers).build(); + when(runtimeConfig.servers()).thenReturn(config); + when(cassandra.getCurrentServerListFromConfig()) + .thenReturn(config.accept(CassandraServersConfigs.ThriftHostsExtractingVisitor.INSTANCE).stream() + .map(CassandraServer::of) + .collect(ImmutableSet.toImmutableSet())); + } } diff --git a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/ProfilingCassandraClientTest.java b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/ProfilingCassandraClientTest.java index 580ef29f8a8..69c45e18bf0 100644 --- a/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/ProfilingCassandraClientTest.java +++ b/atlasdb-cassandra/src/test/java/com/palantir/atlasdb/keyvalue/cassandra/ProfilingCassandraClientTest.java @@ -36,6 +36,7 @@ import org.apache.cassandra.thrift.CqlResultType; import org.apache.cassandra.thrift.CqlRow; import org.apache.cassandra.thrift.SlicePredicate; +import org.apache.cassandra.thrift.SliceRange; import org.apache.thrift.TException; import org.junit.After; import org.junit.Test; @@ -89,14 +90,16 @@ public void handlesNullMultigetSliceResponseFromDelegate() throws TException { List columns = ImmutableList.of(new ColumnOrSuperColumn().setColumn(new Column(byteBuffer))); ImmutableMap> resultMap = ImmutableMap.of(byteBuffer, columns); + SlicePredicate slicePredicate = new SlicePredicate(); + slicePredicate.setSlice_range(new SliceRange()); when(delegate.multiget_slice(any(), any(), any(), any(), any())).thenReturn(resultMap); - assertThat(delegate.multiget_slice( + assertThat(profilingClient.multiget_slice( "getRows", TableReference.createFromFullyQualifiedName("a.b"), ImmutableList.of(byteBuffer), - new SlicePredicate(), + slicePredicate, ConsistencyLevel.QUORUM)) .containsExactlyInAnyOrderEntriesOf(resultMap); @@ -105,7 +108,7 @@ public void handlesNullMultigetSliceResponseFromDelegate() throws TException { "getRows", TableReference.createFromFullyQualifiedName("a.b"), ImmutableList.of(byteBuffer), - new SlicePredicate(), + slicePredicate, ConsistencyLevel.QUORUM); } diff --git a/atlasdb-commons/src/test/java/com/palantir/common/proxy/ReplaceIfExceptionMatchingProxyTest.java b/atlasdb-commons/src/test/java/com/palantir/common/proxy/ReplaceIfExceptionMatchingProxyTest.java index a1b8cfd3b10..70e564cba4c 100644 --- a/atlasdb-commons/src/test/java/com/palantir/common/proxy/ReplaceIfExceptionMatchingProxyTest.java +++ b/atlasdb-commons/src/test/java/com/palantir/common/proxy/ReplaceIfExceptionMatchingProxyTest.java @@ -31,6 +31,8 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +// Mock is used as a convenient supplier, alternatives are rather verbose +@SuppressWarnings("DirectInvocationOnMock") @RunWith(MockitoJUnitRunner.class) public class ReplaceIfExceptionMatchingProxyTest { @Mock diff --git a/atlasdb-config/src/test/java/com/palantir/atlasdb/config/AtlasDbConfigTest.java b/atlasdb-config/src/test/java/com/palantir/atlasdb/config/AtlasDbConfigTest.java index c3939bbb781..0d516bf4cd6 100644 --- a/atlasdb-config/src/test/java/com/palantir/atlasdb/config/AtlasDbConfigTest.java +++ b/atlasdb-config/src/test/java/com/palantir/atlasdb/config/AtlasDbConfigTest.java @@ -34,7 +34,6 @@ public class AtlasDbConfigTest { private static final KeyValueServiceConfig KVS_CONFIG_WITHOUT_NAMESPACE = mock(KeyValueServiceConfig.class); private static final KeyValueServiceConfig KVS_CONFIG_WITH_OTHER_NAMESPACE = mock(KeyValueServiceConfig.class); private static final KeyValueServiceConfig KVS_CONFIG_WITH_NAMESPACE = mock(KeyValueServiceConfig.class); - private static final KeyValueServiceConfig CASSANDRA_CONFIG_WITHOUT_NAMESPACE = mock(KeyValueServiceConfig.class); private static final KeyValueServiceConfig CASSANDRA_CONFIG_WITH_NAMESPACE = mock(KeyValueServiceConfig.class); private static final LeaderConfig LEADER_CONFIG = ImmutableLeaderConfig.builder() .quorumSize(1) @@ -72,13 +71,11 @@ public static void setUp() { when(KVS_CONFIG_WITHOUT_NAMESPACE.namespace()).thenReturn(Optional.empty()); when(KVS_CONFIG_WITH_OTHER_NAMESPACE.namespace()).thenReturn(Optional.of(OTHER_CLIENT)); when(KVS_CONFIG_WITH_NAMESPACE.namespace()).thenReturn(Optional.of(TEST_NAMESPACE)); - when(CASSANDRA_CONFIG_WITHOUT_NAMESPACE.namespace()).thenReturn(Optional.empty()); when(CASSANDRA_CONFIG_WITH_NAMESPACE.namespace()).thenReturn(Optional.of(TEST_NAMESPACE)); when(KVS_CONFIG_WITHOUT_NAMESPACE.type()).thenReturn("type"); when(KVS_CONFIG_WITH_OTHER_NAMESPACE.type()).thenReturn("type"); when(KVS_CONFIG_WITH_NAMESPACE.type()).thenReturn("type"); - when(CASSANDRA_CONFIG_WITHOUT_NAMESPACE.type()).thenReturn(CASSANDRA); when(CASSANDRA_CONFIG_WITH_NAMESPACE.type()).thenReturn(CASSANDRA); } diff --git a/atlasdb-config/src/test/java/com/palantir/atlasdb/config/ShouldRunBackgroundSweepSupplierTest.java b/atlasdb-config/src/test/java/com/palantir/atlasdb/config/ShouldRunBackgroundSweepSupplierTest.java index c4dde7044c7..99709ed401e 100644 --- a/atlasdb-config/src/test/java/com/palantir/atlasdb/config/ShouldRunBackgroundSweepSupplierTest.java +++ b/atlasdb-config/src/test/java/com/palantir/atlasdb/config/ShouldRunBackgroundSweepSupplierTest.java @@ -61,7 +61,9 @@ public void disableBackgroundSweepIfNotSet() { .isFalse(); } - @SuppressWarnings("unchecked") // Mock assignment known to be safe + // Mock assignment known to be safe + // Direct mock invocation is safe here as we're using it as a convenient way to create a supplier + @SuppressWarnings({"unchecked", "DirectInvocationOnMock"}) @Test public void liveReload() { Supplier runtimeConfigSupplier = mock(Supplier.class); diff --git a/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/sweep/metrics/SweepMetricsAssert.java b/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/sweep/metrics/SweepMetricsAssert.java index 7b0355cc3a6..b2ae43f9984 100644 --- a/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/sweep/metrics/SweepMetricsAssert.java +++ b/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/sweep/metrics/SweepMetricsAssert.java @@ -260,7 +260,7 @@ private Gauge getGauge(Class metricClass, String name, Map) metrics.getTaggedRegistry().getMetrics().get(metricName); } - private Gauge getGauge(String metricNamespace, String name, Map tag) { + private Gauge getGauge(String metricNamespace, String name, Map tag) { MetricName metricName = MetricName.builder() .safeName(metricNamespace + "." + name) .safeTags(tag) diff --git a/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/transaction/impl/TransactionConflictDetectionManagerTest.java b/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/transaction/impl/TransactionConflictDetectionManagerTest.java index a4cfe57ae5d..073a0710a8d 100644 --- a/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/transaction/impl/TransactionConflictDetectionManagerTest.java +++ b/atlasdb-impl-shared/src/test/java/com/palantir/atlasdb/transaction/impl/TransactionConflictDetectionManagerTest.java @@ -46,6 +46,7 @@ public final class TransactionConflictDetectionManagerTest { private TransactionConflictDetectionManager conflictDetectionManager; @Before + @SuppressWarnings("DirectInvocationOnMock") // Safe usage which is hard to replicate otherwise public void before() { conflictDetectionManager = new TransactionConflictDetectionManager(new ConflictDetectionManager(delegate) { @Override diff --git a/atlasdb-perf/src/test/java/com/palantir/atlasdb/performance/backend/KeyValueServiceInstrumentationTest.java b/atlasdb-perf/src/test/java/com/palantir/atlasdb/performance/backend/KeyValueServiceInstrumentationTest.java index 37b590cae05..979fd25ffb6 100644 --- a/atlasdb-perf/src/test/java/com/palantir/atlasdb/performance/backend/KeyValueServiceInstrumentationTest.java +++ b/atlasdb-perf/src/test/java/com/palantir/atlasdb/performance/backend/KeyValueServiceInstrumentationTest.java @@ -18,8 +18,11 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import com.palantir.atlasdb.spi.KeyValueServiceConfig; +import com.palantir.atlasdb.spi.KeyValueServiceRuntimeConfig; +import java.net.InetSocketAddress; +import java.util.Optional; import org.junit.Test; -import org.mockito.Mockito; public class KeyValueServiceInstrumentationTest { @@ -47,18 +50,40 @@ public void forDatabaseThrowsForInvalidClassName() { @Test public void canAddNewBackendType() { - KeyValueServiceInstrumentation mockKeyValueServiceInstrumentation = - Mockito.mock(KeyValueServiceInstrumentation.class); - Mockito.when(mockKeyValueServiceInstrumentation.toString()).thenReturn("MOCK2"); - Mockito.when(mockKeyValueServiceInstrumentation.getClassName()).thenReturn("mock_classname"); + DummyKeyValueServiceInstrumentation dummyKeyValueServiceInstrumentation = + new DummyKeyValueServiceInstrumentation(5, "foo"); + KeyValueServiceInstrumentation.addNewBackendType(dummyKeyValueServiceInstrumentation); + assertThat(KeyValueServiceInstrumentation.forDatabase(DummyKeyValueServiceInstrumentation.class.getName())) + .isExactlyInstanceOf(DummyKeyValueServiceInstrumentation.class); + assertThat(KeyValueServiceInstrumentation.forDatabase(dummyKeyValueServiceInstrumentation.toString())) + .isExactlyInstanceOf(DummyKeyValueServiceInstrumentation.class); + KeyValueServiceInstrumentation.removeBackendType(dummyKeyValueServiceInstrumentation); + } - KeyValueServiceInstrumentation.addNewBackendType(mockKeyValueServiceInstrumentation); + private static class DummyKeyValueServiceInstrumentation extends KeyValueServiceInstrumentation { - assertThat(KeyValueServiceInstrumentation.forDatabase(mockKeyValueServiceInstrumentation.getClassName())) - .isExactlyInstanceOf(mockKeyValueServiceInstrumentation.getClass()); - assertThat(KeyValueServiceInstrumentation.forDatabase(mockKeyValueServiceInstrumentation.toString())) - .isExactlyInstanceOf(mockKeyValueServiceInstrumentation.getClass()); + DummyKeyValueServiceInstrumentation(int kvsPort, String dockerComposeFileName) { + super(kvsPort, dockerComposeFileName); + } - KeyValueServiceInstrumentation.removeBackendType(mockKeyValueServiceInstrumentation); + @Override + public KeyValueServiceConfig getKeyValueServiceConfig(InetSocketAddress addr) { + return null; + } + + @Override + public Optional getKeyValueServiceRuntimeConfig(InetSocketAddress addr) { + return Optional.empty(); + } + + @Override + public boolean canConnect(InetSocketAddress addr) { + return false; + } + + @Override + public String toString() { + return "dummy"; + } } } diff --git a/build.gradle b/build.gradle index d4b75725236..0f249fc5815 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { dependencies { classpath 'com.netflix.nebula:gradle-info-plugin:11.4.1' classpath 'com.netflix.nebula:nebula-publishing-plugin:18.4.0' - classpath 'com.palantir.baseline:gradle-baseline-java:4.153.0' + classpath 'com.palantir.baseline:gradle-baseline-java:4.173.0' classpath 'com.palantir.gradle.conjure:gradle-conjure:5.30.0' classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:2.11.0' classpath 'com.palantir.gradle.docker:gradle-docker:0.32.0' diff --git a/flake-rule/src/test/java/com/palantir/flake/example/BeforeAndAfterTest.java b/flake-rule/src/test/java/com/palantir/flake/example/BeforeAndAfterTest.java index dd62b746347..b27c117f622 100644 --- a/flake-rule/src/test/java/com/palantir/flake/example/BeforeAndAfterTest.java +++ b/flake-rule/src/test/java/com/palantir/flake/example/BeforeAndAfterTest.java @@ -16,8 +16,8 @@ package com.palantir.flake.example; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -36,10 +36,10 @@ public class BeforeAndAfterTest { private static final AtomicInteger attemptCount = new AtomicInteger(); private static final int SEVENTY_SEVEN = 77; - private static Runnable beforeRunnable = mock(Runnable.class); - private static Runnable afterRunnable = mock(Runnable.class); - private static Runnable beforeClassRunnable = mock(Runnable.class); - private static Runnable afterClassRunnable = mock(Runnable.class); + private static Runnable beforeRunnable = spy(new NoOpRunnable()); + private static Runnable afterRunnable = spy(new NoOpRunnable()); + private static Runnable beforeClassRunnable = spy(new NoOpRunnable()); + private static Runnable afterClassRunnable = spy(new NoOpRunnable()); @Rule public final TestRule flakeRetryingRule = new FlakeRetryingRule(); @@ -76,4 +76,9 @@ public void runsSetUpBeforeEachIteration() { assertThat(attemptNumber).isEqualTo(SEVENTY_SEVEN); } + + public static class NoOpRunnable implements Runnable { + @Override + public void run() {} + } }