This is an automated email from the ASF dual-hosted git repository.
ycai pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-sidecar.git
The following commit(s) were added to refs/heads/trunk by this push:
new c1a6225 CASSANDRASC-83: Require gossip to be enabled for ring and
token ranges mapping endpoints
c1a6225 is described below
commit c1a6225dac62db94fd3faee92513e84ba3b9b3b7
Author: Francisco Guerrero <[email protected]>
AuthorDate: Tue Nov 7 10:13:06 2023 -0800
CASSANDRASC-83: Require gossip to be enabled for ring and token ranges
mapping endpoints
The ring and token ranges mapping endpoints leverage JMX to produce the
payload. Ring and token ranges
mapping information is derived from gossip information available to the
Cassandra instance. If gossip
has been disabled, the information might provide an inconsistent view of
the cluster which is
undesirable. We should instead return a 503 (Service Unavailable) to the
client whenever the client
tries to access these endpoints and gossip has been disabled.
In this commit, we ensure the endpoints return a 503 (Service Unavailable)
when gossip is disabled.
Patch by Francisco Guerrero; Reviewed by Dinesh Joshi, Josh McKenzie, Yifan
Cai for CASSANDRASC-83
---
CHANGES.txt | 1 +
.../base/GossipDependentStorageJmxOperations.java | 149 +++++++++++++++++++++
.../sidecar/adapters/base/RingProvider.java | 3 +-
.../adapters/base/StorageJmxOperations.java | 5 +
.../adapters/base/TokenRangeReplicaProvider.java | 4 +-
.../exception/OperationUnavailableException.java | 33 +++++
.../base/TokenRangeReplicaProviderTest.java | 1 +
.../cassandra/sidecar/routes/AbstractHandler.java | 6 +
.../sidecar/routes/RingHandlerIntegrationTest.java | 28 +++-
...nKeyspace.java => BasicGossipDisabledTest.java} | 29 ++--
...estMultiDCRf3.java => BasicMultiDCRf3Test.java} | 4 +-
....java => BasicMultiDCSingleReplicatedTest.java} | 4 +-
.../{BasicTestRf1.java => BasicRf1Test.java} | 4 +-
.../{BasicTestRf3.java => BasicRf3Test.java} | 4 +-
...Keyspace.java => BasicUnknownKeyspaceTest.java} | 4 +-
15 files changed, 248 insertions(+), 31 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 6c22d9c..36aa800 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
1.0.0
-----
+ * Require gossip to be enabled for ring and token ranges mapping endpoints
(CASSANDRASC-83)
* Improve TokenRangeReplicasResponse payload (CASSANDRASC-81)
* HealthCheckPeriodicTask execute never completes the promise when instances
are empty (CASSANDRASC-80)
* Fix token-ranges endpoint to handle gossip-info responses without 'status'
(CASSANDRASC-78)
diff --git
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/GossipDependentStorageJmxOperations.java
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/GossipDependentStorageJmxOperations.java
new file mode 100644
index 0000000..c76927a
--- /dev/null
+++
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/GossipDependentStorageJmxOperations.java
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.cassandra.sidecar.adapters.base;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import
org.apache.cassandra.sidecar.adapters.base.exception.OperationUnavailableException;
+
+/**
+ * A wrapper class for {@link StorageJmxOperations} that ensures gossip is
enabled during initialization.
+ */
+public class GossipDependentStorageJmxOperations implements
StorageJmxOperations
+{
+ private static final Logger LOGGER =
LoggerFactory.getLogger(GossipDependentStorageJmxOperations.class);
+
+ private final StorageJmxOperations delegate;
+
+ public GossipDependentStorageJmxOperations(StorageJmxOperations delegate)
+ {
+ this.delegate = Objects.requireNonNull(delegate, "delegate must be
not-null");
+ ensureGossipIsEnabled();
+ }
+
+ @Override
+ public List<String> getLiveNodesWithPort()
+ {
+ return delegate.getLiveNodesWithPort();
+ }
+
+ @Override
+ public List<String> getUnreachableNodesWithPort()
+ {
+ return delegate.getUnreachableNodesWithPort();
+ }
+
+ @Override
+ public List<String> getJoiningNodesWithPort()
+ {
+ return delegate.getJoiningNodesWithPort();
+ }
+
+ @Override
+ public List<String> getLeavingNodesWithPort()
+ {
+ return delegate.getLeavingNodesWithPort();
+ }
+
+ @Override
+ public List<String> getMovingNodesWithPort()
+ {
+ return delegate.getMovingNodesWithPort();
+ }
+
+ @Override
+ public Map<String, String> getLoadMapWithPort()
+ {
+ return delegate.getLoadMapWithPort();
+ }
+
+ @Override
+ public Map<String, String> getTokenToEndpointWithPortMap()
+ {
+ return delegate.getTokenToEndpointWithPortMap();
+ }
+
+ @Override
+ public Map<String, Float> effectiveOwnershipWithPort(String keyspace)
throws IllegalStateException
+ {
+ return delegate.effectiveOwnershipWithPort(keyspace);
+ }
+
+ @Override
+ public Map<String, Float> getOwnershipWithPort()
+ {
+ return delegate.getOwnershipWithPort();
+ }
+
+ @Override
+ public Map<String, String> getEndpointWithPortToHostId()
+ {
+ return delegate.getEndpointWithPortToHostId();
+ }
+
+ @Override
+ public void takeSnapshot(String tag, Map<String, String> options,
String... entities) throws IOException
+ {
+ delegate.takeSnapshot(tag, options, entities);
+ }
+
+ @Override
+ public void clearSnapshot(String tag, String... keyspaceNames)
+ {
+ delegate.clearSnapshot(tag, keyspaceNames);
+ }
+
+ @Override
+ public Map<List<String>, List<String>>
getRangeToEndpointWithPortMap(String keyspace)
+ {
+ return delegate.getRangeToEndpointWithPortMap(keyspace);
+ }
+
+ @Override
+ public Map<List<String>, List<String>>
getPendingRangeToEndpointWithPortMap(String keyspace)
+ {
+ return delegate.getPendingRangeToEndpointWithPortMap(keyspace);
+ }
+
+ @Override
+ public boolean isGossipRunning()
+ {
+ return delegate.isGossipRunning();
+ }
+
+ /**
+ * Ensures that gossip is running on the Cassandra instance
+ *
+ * @throws OperationUnavailableException when gossip is not running
+ */
+ public void ensureGossipIsEnabled()
+ {
+ if (delegate.isGossipRunning())
+ return;
+
+ LOGGER.warn("Gossip is disabled and unavailable for the operation");
+ throw OperationUnavailableException.GOSSIP_DISABLED;
+ }
+}
diff --git
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/RingProvider.java
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/RingProvider.java
index 5d44711..8fd3253 100644
---
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/RingProvider.java
+++
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/RingProvider.java
@@ -126,7 +126,8 @@ public class RingProvider
protected StorageJmxOperations initializeStorageOps()
{
- return jmxClient.proxy(StorageJmxOperations.class,
STORAGE_SERVICE_OBJ_NAME);
+ return new
GossipDependentStorageJmxOperations(jmxClient.proxy(StorageJmxOperations.class,
+
STORAGE_SERVICE_OBJ_NAME));
}
/**
diff --git
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/StorageJmxOperations.java
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/StorageJmxOperations.java
index d39ba8f..c2cb77d 100644
---
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/StorageJmxOperations.java
+++
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/StorageJmxOperations.java
@@ -134,4 +134,9 @@ public interface StorageJmxOperations
* a list of endpoints
*/
Map<List<String>, List<String>>
getPendingRangeToEndpointWithPortMap(String keyspace);
+
+ /**
+ * @return {@code true} if gossip is running, {@code false} otherwise
+ */
+ boolean isGossipRunning();
}
diff --git
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProvider.java
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProvider.java
index 71a70e8..f1f5ff1 100644
---
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProvider.java
+++
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProvider.java
@@ -177,10 +177,10 @@ public class TokenRangeReplicaProvider
protected StorageJmxOperations initializeStorageOps()
{
- return jmxClient.proxy(StorageJmxOperations.class,
STORAGE_SERVICE_OBJ_NAME);
+ return new
GossipDependentStorageJmxOperations(jmxClient.proxy(StorageJmxOperations.class,
+
STORAGE_SERVICE_OBJ_NAME));
}
-
protected String getRawGossipInfo()
{
return jmxClient.proxy(ClusterMembershipJmxOperations.class,
FAILURE_DETECTOR_OBJ_NAME)
diff --git
a/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/exception/OperationUnavailableException.java
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/exception/OperationUnavailableException.java
new file mode 100644
index 0000000..818b878
--- /dev/null
+++
b/adapters/base/src/main/java/org/apache/cassandra/sidecar/adapters/base/exception/OperationUnavailableException.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.cassandra.sidecar.adapters.base.exception;
+
+/**
+ * Indicates that the operation is unavailable because a requirement for the
operation has not been met
+ */
+public class OperationUnavailableException extends RuntimeException
+{
+ public static final OperationUnavailableException GOSSIP_DISABLED
+ = new OperationUnavailableException("Gossip is required for the operation
but it is disabled");
+
+ public OperationUnavailableException(String errorMessage)
+ {
+ super(errorMessage);
+ }
+}
diff --git
a/adapters/base/src/test/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProviderTest.java
b/adapters/base/src/test/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProviderTest.java
index 5c1253d..8c244bb 100644
---
a/adapters/base/src/test/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProviderTest.java
+++
b/adapters/base/src/test/java/org/apache/cassandra/sidecar/adapters/base/TokenRangeReplicaProviderTest.java
@@ -82,6 +82,7 @@ public class TokenRangeReplicaProviderTest
dnsResolver = mock(DnsResolver.class);
instance = new TokenRangeReplicaProvider(jmxClient, dnsResolver);
+ when(storageOperations.isGossipRunning()).thenReturn(true);
when(jmxClient.proxy(StorageJmxOperations.class,
"org.apache.cassandra.db:type=StorageService"))
.thenReturn(storageOperations);
when(jmxClient.proxy(EndpointSnitchJmxOperations.class,
"org.apache.cassandra.db:type=EndpointSnitchInfo"))
diff --git
a/src/main/java/org/apache/cassandra/sidecar/routes/AbstractHandler.java
b/src/main/java/org/apache/cassandra/sidecar/routes/AbstractHandler.java
index 7cd7dc2..e8d1304 100644
--- a/src/main/java/org/apache/cassandra/sidecar/routes/AbstractHandler.java
+++ b/src/main/java/org/apache/cassandra/sidecar/routes/AbstractHandler.java
@@ -30,6 +30,7 @@ import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.net.SocketAddress;
import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.handler.HttpException;
+import
org.apache.cassandra.sidecar.adapters.base.exception.OperationUnavailableException;
import org.apache.cassandra.sidecar.cluster.instance.InstanceMetadata;
import org.apache.cassandra.sidecar.common.data.QualifiedTableName;
import
org.apache.cassandra.sidecar.common.exceptions.JmxAuthenticationException;
@@ -194,6 +195,11 @@ public abstract class AbstractHandler<T> implements
Handler<RoutingContext>
return wrapHttpException(HttpResponseStatus.SERVICE_UNAVAILABLE,
cause);
}
+ if (cause instanceof OperationUnavailableException)
+ {
+ return wrapHttpException(HttpResponseStatus.SERVICE_UNAVAILABLE,
cause.getMessage(), cause);
+ }
+
return wrapHttpException(HttpResponseStatus.INTERNAL_SERVER_ERROR,
cause);
}
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/RingHandlerIntegrationTest.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/RingHandlerIntegrationTest.java
index e52ba30..0d3000f 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/RingHandlerIntegrationTest.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/RingHandlerIntegrationTest.java
@@ -36,6 +36,7 @@ import org.apache.cassandra.sidecar.common.data.RingEntry;
import org.apache.cassandra.sidecar.common.data.RingResponse;
import org.apache.cassandra.sidecar.test.CassandraSidecarTestContext;
import org.apache.cassandra.testing.CassandraIntegrationTest;
+import org.apache.cassandra.testing.CassandraTestContext;
import static org.assertj.core.api.Assertions.assertThat;
@@ -45,8 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat;
@ExtendWith(VertxExtension.class)
class RingHandlerIntegrationTest extends IntegrationTestBase
{
-
- @CassandraIntegrationTest
+ @CassandraIntegrationTest(gossip = true)
void retrieveRingWithoutKeyspace(VertxTestContext context)
throws Exception
{
@@ -61,7 +61,7 @@ class RingHandlerIntegrationTest extends IntegrationTestBase
});
}
- @CassandraIntegrationTest
+ @CassandraIntegrationTest(gossip = true)
void retrieveRingWithUnknownKeyspace(VertxTestContext context) throws
Exception
{
retrieveRingWithKeyspace(context, "unknown_ks", response -> {
@@ -75,7 +75,27 @@ class RingHandlerIntegrationTest extends IntegrationTestBase
});
}
- @CassandraIntegrationTest
+ @CassandraIntegrationTest(gossip = true)
+ void ringFailsWhenGossipIsDisabled(CassandraTestContext context,
VertxTestContext testContext) throws Exception
+ {
+ int disableGossip =
context.getCluster().getFirstRunningInstance().nodetool("disablegossip");
+ assertThat(disableGossip).isEqualTo(0);
+ String testRoute = "/api/v1/cassandra/ring";
+ testWithClient(testContext, client -> {
+ client.get(server.actualPort(), "127.0.0.1", testRoute)
+ .expect(ResponsePredicate.SC_SERVICE_UNAVAILABLE)
+ .send(testContext.succeeding(response -> {
+ JsonObject payload = response.bodyAsJsonObject();
+
assertThat(payload.getString("status")).isEqualTo("Service Unavailable");
+ assertThat(payload.getInteger("code")).isEqualTo(503);
+ assertThat(payload.getString("message"))
+ .isEqualTo("Gossip is required for the operation but it
is disabled");
+ testContext.completeNow();
+ }));
+ });
+ }
+
+ @CassandraIntegrationTest(gossip = true)
void retrieveRingWithExistingKeyspace(VertxTestContext context) throws
Exception
{
createTestKeyspace();
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestUnknownKeyspace.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicGossipDisabledTest.java
similarity index 54%
copy from
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestUnknownKeyspace.java
copy to
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicGossipDisabledTest.java
index 2b1a158..6331bd2 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestUnknownKeyspace.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicGossipDisabledTest.java
@@ -25,29 +25,30 @@ import io.vertx.core.json.JsonObject;
import io.vertx.junit5.VertxExtension;
import io.vertx.junit5.VertxTestContext;
import org.apache.cassandra.testing.CassandraIntegrationTest;
+import org.apache.cassandra.testing.CassandraTestContext;
import static org.assertj.core.api.Assertions.assertThat;
/**
- * Test the token range replica mapping endpoint with the in-jvm dtest
framework.
- *
- * Note: Some related test classes are broken down to have a single test case
to parallelize test execution and
- * therefore limit the instance size required to run the tests from CircleCI
as the in-jvm-dtests tests are memory bound
+ * Tests that the token range mapping endpoint fails with service unavailable
when gossip is disabled
*/
@ExtendWith(VertxExtension.class)
-class BasicTestUnknownKeyspace extends BaseTokenRangeIntegrationTest
+public class BasicGossipDisabledTest extends BaseTokenRangeIntegrationTest
{
@CassandraIntegrationTest
- void retrieveMappingWithUnknownKeyspace(VertxTestContext context) throws
Exception
+ void tokenRangeEndpointFailsWhenGossipIsDisabled(CassandraTestContext
context, VertxTestContext testContext)
+ throws Exception
{
- retrieveMappingWithKeyspace(context, "unknown_ks", response -> {
- int errorCode = HttpResponseStatus.NOT_FOUND.code();
- assertThat(response.statusCode()).isEqualTo(errorCode);
- JsonObject body = response.bodyAsJsonObject();
- assertThat(body.getInteger("code")).isEqualTo(errorCode);
- assertThat(body.getString("message")).contains("Unknown keyspace");
-
- context.completeNow();
+ int disableGossip =
context.getCluster().getFirstRunningInstance().nodetool("disablegossip");
+ assertThat(disableGossip).isEqualTo(0);
+ retrieveMappingWithKeyspace(testContext, TEST_KEYSPACE, response -> {
+
assertThat(response.statusCode()).isEqualTo(HttpResponseStatus.SERVICE_UNAVAILABLE.code());
+ JsonObject payload = response.bodyAsJsonObject();
+ assertThat(payload.getString("status")).isEqualTo("Service
Unavailable");
+ assertThat(payload.getInteger("code")).isEqualTo(503);
+ assertThat(payload.getString("message"))
+ .isEqualTo("Gossip is required for the operation but it is
disabled");
+ testContext.completeNow();
});
}
}
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestMultiDCRf3.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicMultiDCRf3Test.java
similarity index 94%
rename from
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestMultiDCRf3.java
rename to
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicMultiDCRf3Test.java
index 8e70364..5389b83 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestMultiDCRf3.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicMultiDCRf3Test.java
@@ -39,9 +39,9 @@ import static org.assertj.core.api.Assertions.assertThat;
* therefore limit the instance size required to run the tests from CircleCI
as the in-jvm-dtests tests are memory bound
*/
@ExtendWith(VertxExtension.class)
-class BasicTestMultiDCRf3 extends BaseTokenRangeIntegrationTest
+class BasicMultiDCRf3Test extends BaseTokenRangeIntegrationTest
{
- @CassandraIntegrationTest(nodesPerDc = 5, numDcs = 2)
+ @CassandraIntegrationTest(nodesPerDc = 5, numDcs = 2, gossip = true)
void retrieveMappingMultiDcRf3(VertxTestContext context) throws Exception
{
int replicationFactor = 3;
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestMultiDCSingleReplicated.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicMultiDCSingleReplicatedTest.java
similarity index 94%
rename from
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestMultiDCSingleReplicated.java
rename to
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicMultiDCSingleReplicatedTest.java
index 782e760..075d707 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestMultiDCSingleReplicated.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicMultiDCSingleReplicatedTest.java
@@ -35,9 +35,9 @@ import org.apache.cassandra.testing.CassandraIntegrationTest;
* therefore limit the instance size required to run the tests from CircleCI
as the in-jvm-dtests tests are memory bound
*/
@ExtendWith(VertxExtension.class)
-class BasicTestMultiDCSingleReplicated extends BaseTokenRangeIntegrationTest
+class BasicMultiDCSingleReplicatedTest extends BaseTokenRangeIntegrationTest
{
- @CassandraIntegrationTest(nodesPerDc = 5, numDcs = 2)
+ @CassandraIntegrationTest(nodesPerDc = 5, numDcs = 2, gossip = true)
void retrieveMappingSingleDCReplicatedRf3(VertxTestContext context)
throws Exception
{
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestRf1.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicRf1Test.java
similarity index 94%
rename from
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestRf1.java
rename to
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicRf1Test.java
index b11bcd0..4a63ef1 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestRf1.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicRf1Test.java
@@ -37,9 +37,9 @@ import static org.assertj.core.api.Assertions.assertThat;
* therefore limit the instance size required to run the tests from CircleCI
as the in-jvm-dtests tests are memory bound
*/
@ExtendWith(VertxExtension.class)
-class BasicTestRf1 extends BaseTokenRangeIntegrationTest
+class BasicRf1Test extends BaseTokenRangeIntegrationTest
{
- @CassandraIntegrationTest(nodesPerDc = 3)
+ @CassandraIntegrationTest(nodesPerDc = 3, gossip = true)
void retrieveMappingRf1(VertxTestContext context) throws Exception
{
createTestKeyspace();
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestRf3.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicRf3Test.java
similarity index 94%
rename from
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestRf3.java
rename to
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicRf3Test.java
index b99e6fd..940be7e 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestRf3.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicRf3Test.java
@@ -35,9 +35,9 @@ import org.apache.cassandra.testing.CassandraIntegrationTest;
* therefore limit the instance size required to run the tests from CircleCI
as the in-jvm-dtests tests are memory bound
*/
@ExtendWith(VertxExtension.class)
-class BasicTestRf3 extends BaseTokenRangeIntegrationTest
+class BasicRf3Test extends BaseTokenRangeIntegrationTest
{
- @CassandraIntegrationTest(nodesPerDc = 5)
+ @CassandraIntegrationTest(nodesPerDc = 5, gossip = true)
void retrieveMappingRf3(VertxTestContext context) throws Exception
{
int replicationFactor = 3;
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestUnknownKeyspace.java
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicUnknownKeyspaceTest.java
similarity index 95%
rename from
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestUnknownKeyspace.java
rename to
src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicUnknownKeyspaceTest.java
index 2b1a158..6da3fb3 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicTestUnknownKeyspace.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/routes/tokenrange/BasicUnknownKeyspaceTest.java
@@ -35,9 +35,9 @@ import static org.assertj.core.api.Assertions.assertThat;
* therefore limit the instance size required to run the tests from CircleCI
as the in-jvm-dtests tests are memory bound
*/
@ExtendWith(VertxExtension.class)
-class BasicTestUnknownKeyspace extends BaseTokenRangeIntegrationTest
+class BasicUnknownKeyspaceTest extends BaseTokenRangeIntegrationTest
{
- @CassandraIntegrationTest
+ @CassandraIntegrationTest(gossip = true)
void retrieveMappingWithUnknownKeyspace(VertxTestContext context) throws
Exception
{
retrieveMappingWithKeyspace(context, "unknown_ks", response -> {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]