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 686d9e86 CASSANDRASC-119: Fix flaky test due to port conflicts (#113)
686d9e86 is described below
commit 686d9e8699bd0a56857e24523d883120023b9841
Author: Yifan Cai <[email protected]>
AuthorDate: Mon Apr 15 09:48:59 2024 -0700
CASSANDRASC-119: Fix flaky test due to port conflicts (#113)
Patch by Yifan Cai; Reviewed by Francisco Guerrero for CASSANDRASC-119
---
.../apache/cassandra/sidecar/server/Server.java | 5 ++-
.../cassandra/sidecar/server/ServerVerticle.java | 5 ++-
.../sidecar/testing/IntegrationTestModule.java | 6 +--
.../cassandra/sidecar/ExecutorPoolsHelper.java | 4 +-
.../org/apache/cassandra/sidecar/TestModule.java | 6 +--
.../sstableuploads/BaseUploadsHandlerTest.java | 8 ++--
.../cassandra/sidecar/server/ServerSSLTest.java | 46 +++++-----------------
.../cassandra/sidecar/utils/CacheFactoryTest.java | 4 +-
.../sidecar/utils/SSTableImporterTest.java | 6 +--
.../config/yaml/TestServiceConfiguration.java | 41 +++++++++++++++++++
10 files changed, 71 insertions(+), 60 deletions(-)
diff --git a/src/main/java/org/apache/cassandra/sidecar/server/Server.java
b/src/main/java/org/apache/cassandra/sidecar/server/Server.java
index 51b67b2d..d6bd652f 100644
--- a/src/main/java/org/apache/cassandra/sidecar/server/Server.java
+++ b/src/main/java/org/apache/cassandra/sidecar/server/Server.java
@@ -208,14 +208,15 @@ public class Server
/**
* Expose the port of the first deployed verticle for testing purposes
*
- * @return the port where the first verticle is deployed, or -1 if the
server has not been deployed
+ * @return the port where the first verticle is deployed
+ * @throws IllegalStateException if the server has not been deployed
*/
@VisibleForTesting
public int actualPort()
{
if (!deployedServerVerticles.isEmpty())
return deployedServerVerticles.get(0).actualPort();
- return -1;
+ throw new IllegalStateException("No deployed server verticles. Maybe
server failed to deploy due to port conflict");
}
protected Future<String> notifyServerStart(String deploymentId)
diff --git
a/src/main/java/org/apache/cassandra/sidecar/server/ServerVerticle.java
b/src/main/java/org/apache/cassandra/sidecar/server/ServerVerticle.java
index 109b3695..54ca7041 100644
--- a/src/main/java/org/apache/cassandra/sidecar/server/ServerVerticle.java
+++ b/src/main/java/org/apache/cassandra/sidecar/server/ServerVerticle.java
@@ -131,13 +131,14 @@ public class ServerVerticle extends AbstractVerticle
}
/**
- * @return the actual port of the first deployed server, or -1 if no
servers are deployed
+ * @return the actual port of the first deployed server
+ * @throws IllegalStateException if no servers are deployed
*/
@VisibleForTesting
int actualPort()
{
if (deployedServers != null && !deployedServers.isEmpty())
return deployedServers.get(0).actualPort();
- return -1;
+ throw new IllegalStateException("No deployed server. Maybe server
failed to deploy due to port conflict");
}
}
diff --git
a/src/test/integration/org/apache/cassandra/sidecar/testing/IntegrationTestModule.java
b/src/test/integration/org/apache/cassandra/sidecar/testing/IntegrationTestModule.java
index d0c069d5..5a5deadc 100644
---
a/src/test/integration/org/apache/cassandra/sidecar/testing/IntegrationTestModule.java
+++
b/src/test/integration/org/apache/cassandra/sidecar/testing/IntegrationTestModule.java
@@ -37,8 +37,8 @@ import
org.apache.cassandra.sidecar.config.ServiceConfiguration;
import org.apache.cassandra.sidecar.config.SidecarConfiguration;
import org.apache.cassandra.sidecar.config.yaml.HealthCheckConfigurationImpl;
import
org.apache.cassandra.sidecar.config.yaml.SchemaKeyspaceConfigurationImpl;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SidecarConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import org.jetbrains.annotations.NotNull;
import static
org.apache.cassandra.sidecar.server.SidecarServerEvents.ON_SERVER_STOP;
@@ -67,9 +67,7 @@ public class IntegrationTestModule extends AbstractModule
public SidecarConfiguration configuration()
{
ServiceConfiguration conf
- = ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0) // let the test find an available
port
+ = TestServiceConfiguration.builder()
.schemaKeyspaceConfiguration(SchemaKeyspaceConfigurationImpl.builder()
.isEnabled(true)
.build())
diff --git
a/src/test/java/org/apache/cassandra/sidecar/ExecutorPoolsHelper.java
b/src/test/java/org/apache/cassandra/sidecar/ExecutorPoolsHelper.java
index fbf2c03e..a7603e40 100644
--- a/src/test/java/org/apache/cassandra/sidecar/ExecutorPoolsHelper.java
+++ b/src/test/java/org/apache/cassandra/sidecar/ExecutorPoolsHelper.java
@@ -27,7 +27,7 @@ import io.vertx.core.Vertx;
import org.apache.cassandra.sidecar.concurrent.ExecutorPools;
import org.apache.cassandra.sidecar.config.ServiceConfiguration;
import org.apache.cassandra.sidecar.config.WorkerPoolConfiguration;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import org.apache.cassandra.sidecar.config.yaml.WorkerPoolConfigurationImpl;
import static
org.apache.cassandra.sidecar.config.ServiceConfiguration.INTERNAL_POOL;
@@ -41,7 +41,7 @@ public class ExecutorPoolsHelper
public static ExecutorPools createdSharedTestPool(Vertx vertx)
{
ServiceConfiguration serviceConfiguration
- = ServiceConfigurationImpl.builder()
+ = TestServiceConfiguration.builder()
.workerPoolsConfiguration(buildTestWorkerPoolConfiguration())
.build();
return new ExecutorPools(vertx, serviceConfiguration);
diff --git a/src/test/java/org/apache/cassandra/sidecar/TestModule.java
b/src/test/java/org/apache/cassandra/sidecar/TestModule.java
index c69e06ad..399f7bcc 100644
--- a/src/test/java/org/apache/cassandra/sidecar/TestModule.java
+++ b/src/test/java/org/apache/cassandra/sidecar/TestModule.java
@@ -52,8 +52,8 @@ import
org.apache.cassandra.sidecar.config.yaml.HealthCheckConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.RestoreJobConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SSTableUploadConfigurationImpl;
import
org.apache.cassandra.sidecar.config.yaml.SchemaKeyspaceConfigurationImpl;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SidecarConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import org.apache.cassandra.sidecar.config.yaml.ThrottleConfigurationImpl;
import org.apache.cassandra.sidecar.metrics.instance.InstanceMetricsImpl;
import org.apache.cassandra.sidecar.stats.RestoreJobStats;
@@ -103,9 +103,7 @@ public class TestModule extends AbstractModule
.replicationStrategy("SimpleStrategy")
.build();
ServiceConfiguration serviceConfiguration =
- ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0) // let the test find an available port
+ TestServiceConfiguration.builder()
.throttleConfiguration(throttleConfiguration)
.schemaKeyspaceConfiguration(schemaKeyspaceConfiguration)
.ssTableUploadConfiguration(uploadConfiguration)
diff --git
a/src/test/java/org/apache/cassandra/sidecar/routes/sstableuploads/BaseUploadsHandlerTest.java
b/src/test/java/org/apache/cassandra/sidecar/routes/sstableuploads/BaseUploadsHandlerTest.java
index d45949f3..0c8683d7 100644
---
a/src/test/java/org/apache/cassandra/sidecar/routes/sstableuploads/BaseUploadsHandlerTest.java
+++
b/src/test/java/org/apache/cassandra/sidecar/routes/sstableuploads/BaseUploadsHandlerTest.java
@@ -57,8 +57,8 @@ import
org.apache.cassandra.sidecar.config.SSTableUploadConfiguration;
import org.apache.cassandra.sidecar.config.ServiceConfiguration;
import org.apache.cassandra.sidecar.config.SidecarConfiguration;
import org.apache.cassandra.sidecar.config.TrafficShapingConfiguration;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SidecarConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import org.apache.cassandra.sidecar.server.MainModule;
import org.apache.cassandra.sidecar.server.Server;
import org.apache.cassandra.sidecar.snapshots.SnapshotUtils;
@@ -95,8 +95,6 @@ class BaseUploadsHandlerTest
protected SidecarRateLimiter ingressFileRateLimiter;
protected CassandraTableOperations mockCFOperations;
-
-
@BeforeEach
void setup() throws InterruptedException, IOException
{
@@ -117,7 +115,7 @@ class BaseUploadsHandlerTest
when(trafficShapingConfiguration.inboundGlobalFileBandwidthBytesPerSecond())
.thenReturn(DEFAULT_INBOUND_FILE_GLOBAL_BANDWIDTH_LIMIT);
ServiceConfiguration serviceConfiguration =
- ServiceConfigurationImpl.builder()
+ TestServiceConfiguration.builder()
.requestIdleTimeoutMillis(500)
.requestTimeoutMillis(TimeUnit.SECONDS.toMillis(30))
.ssTableUploadConfiguration(mockSSTableUploadConfiguration)
@@ -240,7 +238,7 @@ class BaseUploadsHandlerTest
public TestCassandraAdapterDelegate()
{
- super(Vertx.vertx(), 1, null, null, null, null, null, "localhost",
9043);
+ super(Vertx.vertx(), 1, null, null, null, null, null, "localhost",
9042);
}
@Override
diff --git
a/src/test/java/org/apache/cassandra/sidecar/server/ServerSSLTest.java
b/src/test/java/org/apache/cassandra/sidecar/server/ServerSSLTest.java
index bacefd73..e19d8237 100644
--- a/src/test/java/org/apache/cassandra/sidecar/server/ServerSSLTest.java
+++ b/src/test/java/org/apache/cassandra/sidecar/server/ServerSSLTest.java
@@ -54,9 +54,9 @@ import io.vertx.junit5.VertxTestContext;
import org.apache.cassandra.sidecar.TestModule;
import org.apache.cassandra.sidecar.config.SidecarConfiguration;
import org.apache.cassandra.sidecar.config.yaml.KeyStoreConfigurationImpl;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SidecarConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SslConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import org.assertj.core.api.InstanceOfAssertFactories;
import static
org.apache.cassandra.sidecar.common.ResourceUtils.writeResourceToPath;
@@ -184,10 +184,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -207,10 +204,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -231,10 +225,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(9043)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -256,10 +247,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -281,10 +269,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -309,10 +294,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -332,10 +314,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(0)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -361,10 +340,7 @@ class ServerSSLTest
.build();
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
- .port(9043)
- .build());
+ .serviceConfiguration(TestServiceConfiguration.newInstance());
vertx = vertx();
server = server();
@@ -401,12 +377,10 @@ class ServerSSLTest
int serverVerticleInstances = 16;
builder.sslConfiguration(ssl)
- .serviceConfiguration(ServiceConfigurationImpl.builder()
- .host("127.0.0.1")
+ .serviceConfiguration(TestServiceConfiguration.builder()
// > 1 to ensure
that hot reloading works for all
// the deployed
servers on each verticle instance
.serverVerticleInstances(serverVerticleInstances)
- .port(9043)
.build());
vertx = vertx();
diff --git
a/src/test/java/org/apache/cassandra/sidecar/utils/CacheFactoryTest.java
b/src/test/java/org/apache/cassandra/sidecar/utils/CacheFactoryTest.java
index f8b9e35b..2b394bae 100644
--- a/src/test/java/org/apache/cassandra/sidecar/utils/CacheFactoryTest.java
+++ b/src/test/java/org/apache/cassandra/sidecar/utils/CacheFactoryTest.java
@@ -36,7 +36,7 @@ import
org.apache.cassandra.sidecar.config.SSTableImportConfiguration;
import org.apache.cassandra.sidecar.config.ServiceConfiguration;
import org.apache.cassandra.sidecar.config.yaml.CacheConfigurationImpl;
import org.apache.cassandra.sidecar.config.yaml.SSTableImportConfigurationImpl;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
@@ -63,7 +63,7 @@ class CacheFactoryTest
SSTableImportConfiguration ssTableImportConfiguration =
new SSTableImportConfigurationImpl(ssTableImportCacheConfiguration);
ServiceConfiguration serviceConfiguration =
- ServiceConfigurationImpl.builder()
+ TestServiceConfiguration.builder()
.ssTableImportConfiguration(ssTableImportConfiguration)
.build();
SSTableImporter mockSSTableImporter = mock(SSTableImporter.class);
diff --git
a/src/test/java/org/apache/cassandra/sidecar/utils/SSTableImporterTest.java
b/src/test/java/org/apache/cassandra/sidecar/utils/SSTableImporterTest.java
index 957630c6..b54a817b 100644
--- a/src/test/java/org/apache/cassandra/sidecar/utils/SSTableImporterTest.java
+++ b/src/test/java/org/apache/cassandra/sidecar/utils/SSTableImporterTest.java
@@ -35,7 +35,7 @@ import org.apache.cassandra.sidecar.common.TableOperations;
import org.apache.cassandra.sidecar.concurrent.ExecutorPools;
import org.apache.cassandra.sidecar.config.ServiceConfiguration;
import org.apache.cassandra.sidecar.config.yaml.SSTableImportConfigurationImpl;
-import org.apache.cassandra.sidecar.config.yaml.ServiceConfigurationImpl;
+import org.apache.cassandra.sidecar.config.yaml.TestServiceConfiguration;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyString;
@@ -60,7 +60,7 @@ class SSTableImporterTest
{
vertx = Vertx.vertx();
serviceConfiguration =
- ServiceConfigurationImpl.builder()
+ TestServiceConfiguration.builder()
.ssTableImportConfiguration(new
SSTableImportConfigurationImpl(10))
.build();
@@ -205,7 +205,7 @@ class SSTableImporterTest
void testCancelImportSucceeds(VertxTestContext context)
{
serviceConfiguration =
- ServiceConfigurationImpl.builder()
+ TestServiceConfiguration.builder()
.ssTableImportConfiguration(new
SSTableImportConfigurationImpl(500))
.build();
diff --git
a/src/testFixtures/java/org/apache/cassandra/sidecar/config/yaml/TestServiceConfiguration.java
b/src/testFixtures/java/org/apache/cassandra/sidecar/config/yaml/TestServiceConfiguration.java
new file mode 100644
index 00000000..08d27736
--- /dev/null
+++
b/src/testFixtures/java/org/apache/cassandra/sidecar/config/yaml/TestServiceConfiguration.java
@@ -0,0 +1,41 @@
+/*
+ * 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.config.yaml;
+
+
+import org.apache.cassandra.sidecar.config.ServiceConfiguration;
+
+/**
+ * A ServiceConfiguration implementation created for test.
+ * It binds to "127.0.0.1" and port 0 to find an available port at test runtime
+ */
+public class TestServiceConfiguration extends ServiceConfigurationImpl
+{
+ public static ServiceConfiguration newInstance()
+ {
+ return builder().build();
+ }
+
+ public static Builder builder()
+ {
+ return ServiceConfigurationImpl.builder()
+ .host("127.0.0.1")
+ .port(0); // let the test find an
available port
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]