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

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

commit cc76192dcb46de44e57280be277ee0c0d327cc5c
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Tue Feb 16 08:44:33 2021 +0100

    Delay starting the producer on the syslog test to avoid failing due to port 
not being available
---
 .../kafkaconnector/common/utils/NetworkUtils.java  | 25 ++++++++++++++++++++++
 .../syslog/services/SourceRouteConfigurator.java   |  7 +++++-
 .../syslog/sink/CamelSinkSyslogITCase.java         |  2 --
 .../syslog/source/CamelSourceSyslogITCase.java     |  2 --
 4 files changed, 31 insertions(+), 5 deletions(-)

diff --git 
a/tests/itests-common/src/test/java/org/apache/camel/kafkaconnector/common/utils/NetworkUtils.java
 
b/tests/itests-common/src/test/java/org/apache/camel/kafkaconnector/common/utils/NetworkUtils.java
index 4b1437e..79f9c60 100644
--- 
a/tests/itests-common/src/test/java/org/apache/camel/kafkaconnector/common/utils/NetworkUtils.java
+++ 
b/tests/itests-common/src/test/java/org/apache/camel/kafkaconnector/common/utils/NetworkUtils.java
@@ -17,14 +17,22 @@
 package org.apache.camel.kafkaconnector.common.utils;
 
 import java.io.IOException;
+import java.net.ConnectException;
 import java.net.DatagramSocket;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public final class NetworkUtils {
     public static final int  DEFAULT_STARTING_PORT = 49152;
     public static final int  DEFAULT_ENDING_PORT = 65535;
 
+    private static final Logger LOG = 
LoggerFactory.getLogger(NetworkUtils.class);
+
     private NetworkUtils() {
         // utils class
     }
@@ -80,6 +88,23 @@ public final class NetworkUtils {
         }
     }
 
+    public static boolean portIsOpen(String host, int port) {
+        try (Socket socket = new Socket(host, port)) {
+            return true;
+        } catch (UnknownHostException e) {
+            LOG.warn("Unknown host: {}", host);
+            return false;
+        } catch (IOException e) {
+            if (e instanceof ConnectException) {
+                LOG.info("Port {} is likely closed: {}", port, e.getMessage());
+            } else {
+                LOG.warn("Unhandled I/O exception: {}", e.getMessage(), e);
+            }
+
+            return false;
+        }
+    }
+
     public enum Protocol {
         UDP,
         TCP
diff --git 
a/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/services/SourceRouteConfigurator.java
 
b/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/services/SourceRouteConfigurator.java
index a088940..5281966 100644
--- 
a/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/services/SourceRouteConfigurator.java
+++ 
b/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/services/SourceRouteConfigurator.java
@@ -21,6 +21,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.syslog.SyslogDataFormat;
 import org.apache.camel.component.syslog.netty.Rfc5425Encoder;
+import org.apache.camel.kafkaconnector.common.utils.NetworkUtils;
+import org.apache.camel.kafkaconnector.common.utils.TestUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,8 +49,11 @@ public class SourceRouteConfigurator implements 
RouteConfigurator {
             public void configure() {
                 from("direct:test")
                         .marshal(new SyslogDataFormat())
-                        
.toF("netty:%s://%s:%d?sync=false&encoders=#encoder&useByteBuf=true", protocol, 
host, port);
+                        
.toF("netty:%s://%s:%d?sync=false&encoders=#encoder&useByteBuf=true&lazyStartProducer=true",
+                                protocol, host, port);
             }
         });
+
+        TestUtils.waitFor(() -> NetworkUtils.portIsOpen(host, port));
     }
 }
diff --git 
a/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/sink/CamelSinkSyslogITCase.java
 
b/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/sink/CamelSinkSyslogITCase.java
index a2620dc..ab04b7d 100644
--- 
a/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/sink/CamelSinkSyslogITCase.java
+++ 
b/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/sink/CamelSinkSyslogITCase.java
@@ -28,7 +28,6 @@ import 
org.apache.camel.kafkaconnector.common.utils.NetworkUtils;
 import org.apache.camel.kafkaconnector.syslog.services.SyslogService;
 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.junit.jupiter.api.extension.RegisterExtension;
 
@@ -41,7 +40,6 @@ import static org.junit.jupiter.api.Assertions.fail;
  * A simple test case that checks whether the syslog send the expected number 
of
  * messages
  */
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class CamelSinkSyslogITCase extends CamelSinkTestSupport {
     private static final String HOST = "localhost";
     private static final String PROTOCOL = "udp";
diff --git 
a/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/source/CamelSourceSyslogITCase.java
 
b/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/source/CamelSourceSyslogITCase.java
index ab80914..52a77b8 100644
--- 
a/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/source/CamelSourceSyslogITCase.java
+++ 
b/tests/itests-syslog/src/test/java/org/apache/camel/kafkaconnector/syslog/source/CamelSourceSyslogITCase.java
@@ -30,7 +30,6 @@ import 
org.apache.camel.kafkaconnector.syslog.services.SyslogService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
@@ -43,7 +42,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
  * A simple test case that checks whether the timer produces the expected 
number of
  * messages
  */
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class CamelSourceSyslogITCase extends CamelSourceTestSupport {
     private static final String HOST = "localhost";
     private static final String PROTOCOL = "udp";

Reply via email to