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";
