You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2021/03/03 16:58:07 UTC

[camel-kafka-connector] 04/07: Fix Netty tests reliability

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-kafka-connector.git

commit 758bf1eb548e70e6469bcbe10ec2090bdb7a7b0c
Author: Otavio Rodolfo Piske <op...@redhat.com>
AuthorDate: Wed Mar 3 10:06:49 2021 +0100

    Fix Netty tests reliability
    
    - avoid per class lifecycle since it seems to cause the code to try to bind the same port multiple times
    - do not assume local hostnames and/or that they are correctly configured
---
 .../kafkaconnector/netty/sink/CamelSinkNettyITCase.java      | 12 +++++-------
 .../kafkaconnector/netty/source/CamelSourceNettyITCase.java  | 12 +++++-------
 2 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/sink/CamelSinkNettyITCase.java b/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/sink/CamelSinkNettyITCase.java
index bb08243..20b6814 100644
--- a/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/sink/CamelSinkNettyITCase.java
+++ b/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/sink/CamelSinkNettyITCase.java
@@ -31,7 +31,6 @@ import org.apache.camel.kafkaconnector.common.test.CamelSinkTestSupport;
 import org.apache.camel.kafkaconnector.common.utils.NetworkUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.Timeout;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,10 +38,9 @@ import org.slf4j.LoggerFactory;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.fail;
 
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class CamelSinkNettyITCase extends CamelSinkTestSupport {
     private static final Logger LOG = LoggerFactory.getLogger(CamelSinkNettyITCase.class);
-    private static final int PORT = NetworkUtils.getFreePort("localhost");
+    private final int port = NetworkUtils.getFreePort();
 
     private String topicName;
 
@@ -62,7 +60,7 @@ public class CamelSinkNettyITCase extends CamelSinkTestSupport {
 
     @Override
     protected void consumeMessages(CountDownLatch latch) {
-        try (ServerSocket serverSocket = new ServerSocket(PORT);
+        try (ServerSocket serverSocket = new ServerSocket(port);
              Socket socket = serverSocket.accept();
              InputStream is = socket.getInputStream();
              BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
@@ -92,8 +90,8 @@ public class CamelSinkNettyITCase extends CamelSinkTestSupport {
                 .withTopics(topicName)
                 .withProtocol("tcp")
                 // TODO https://github.com/apache/camel-kafka-connector/issues/924
-                .withHost("//localhost")
-                .withPort(PORT)
+                .withHost("//" + NetworkUtils.getHostname())
+                .withPort(port)
                 // disconnect so that it won't keep mock server socket forever
                 .withDisconnect(true)
                 // one-way as mock server doesn't send replies
@@ -107,7 +105,7 @@ public class CamelSinkNettyITCase extends CamelSinkTestSupport {
     public void testBasicSendReceiveUsingUrl() throws Exception {
         ConnectorPropertyFactory connectorPropertyFactory = CamelNettyPropertyFactory.basic()
                 .withTopics(topicName)
-                .withUrl("tcp", "localhost", PORT)
+                .withUrl("tcp", NetworkUtils.getHostname(), port)
                 // disconnect so that it won't keep mock server socket forever
                 .append("disconnect", "true")
                 // one-way as mock server doesn't send replies
diff --git a/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/source/CamelSourceNettyITCase.java b/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/source/CamelSourceNettyITCase.java
index 5384e22..b2ef5ee 100644
--- a/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/source/CamelSourceNettyITCase.java
+++ b/tests/itests-netty/src/test/java/org/apache/camel/kafkaconnector/netty/source/CamelSourceNettyITCase.java
@@ -26,15 +26,13 @@ import org.apache.camel.kafkaconnector.common.test.TestMessageConsumer;
 import org.apache.camel.kafkaconnector.common.utils.NetworkUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.Timeout;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.fail;
 
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class CamelSourceNettyITCase extends CamelSourceTestSupport {
-    private static final int PORT = NetworkUtils.getFreePort("localhost");
+    private final int port = NetworkUtils.getFreePort();
 
     private final int expect = 1;
     private String topicName;
@@ -60,7 +58,7 @@ public class CamelSourceNettyITCase extends CamelSourceTestSupport {
     }
 
     void sendMessage() {
-        try (Socket s = new Socket("localhost", PORT);
+        try (Socket s = new Socket(NetworkUtils.getHostname(), port);
              PrintWriter out = new PrintWriter(s.getOutputStream())) {
             out.print("Hello CKC!");
             out.flush();
@@ -85,8 +83,8 @@ public class CamelSourceNettyITCase extends CamelSourceTestSupport {
                 .withKafkaTopic(topicName)
                 .withProtocol("tcp")
                 // TODO https://github.com/apache/camel-kafka-connector/issues/924
-                .withHost("//localhost")
-                .withPort(PORT)
+                .withHost("//" + NetworkUtils.getHostname())
+                .withPort(port)
                 // one-way as test client doesn't receive response
                 .withSync(false);
 
@@ -99,7 +97,7 @@ public class CamelSourceNettyITCase extends CamelSourceTestSupport {
         CamelNettyPropertyFactory connectorPropertyFactory = CamelNettyPropertyFactory
                 .basic()
                 .withKafkaTopic(topicName)
-                .withUrl("tcp", "localhost", PORT)
+                .withUrl("tcp", NetworkUtils.getHostname(), port)
                 // one-way as test client doesn't receive response
                 .append("sync", "false")
                 .buildUrl();