From 34475dbde316d5d88f4cd754293a1640bb14bb98 Mon Sep 17 00:00:00 2001 From: "Christopher L. Shannon (cshannon)" Date: Thu, 11 Mar 2021 10:53:51 -0500 Subject: [PATCH] AMQ-8184 - Re-enable NIO tests Re-enable the nio transport tests in activemq-unit-tests by default to catch transport errors. Also fix broken tests (cherry picked from commit 2cf3decd8e59a52ba135d8194279b6a6117d0e9c) --- .../apache/activemq/broker/TransportConnector.java | 2 +- .../transport/auto/nio/AutoNIOSSLTransportServer.java | 11 +++++++++-- activemq-unit-tests/pom.xml | 2 -- .../activemq/transport/nio/NIOSSLBasicTest.java | 2 +- .../activemq/transport/nio/NIOSSLConcurrencyTest.java | 2 +- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java index 270d47d529..3358eeea15 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java @@ -266,7 +266,7 @@ public class TransportConnector implements Connector, BrokerServiceAware { LOG.info("Connector {} started", getName()); } - static Throwable getRootCause(final Throwable throwable) { + public static Throwable getRootCause(final Throwable throwable) { final List list = getThrowableList(throwable); return list.isEmpty() ? null : list.get(list.size() - 1); } diff --git a/activemq-broker/src/main/java/org/apache/activemq/transport/auto/nio/AutoNIOSSLTransportServer.java b/activemq-broker/src/main/java/org/apache/activemq/transport/auto/nio/AutoNIOSSLTransportServer.java index 78d1de29fc..a74f88188b 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/transport/auto/nio/AutoNIOSSLTransportServer.java +++ b/activemq-broker/src/main/java/org/apache/activemq/transport/auto/nio/AutoNIOSSLTransportServer.java @@ -15,6 +15,7 @@ import javax.net.ssl.SSLEngine; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.BrokerServiceAware; +import org.apache.activemq.broker.TransportConnector; import org.apache.activemq.transport.Transport; import org.apache.activemq.transport.auto.AutoTcpTransportServer; import org.apache.activemq.transport.nio.AutoInitNioSSLTransport; @@ -25,6 +26,8 @@ import org.apache.activemq.transport.tcp.TcpTransportFactory; import org.apache.activemq.transport.tcp.TcpTransportServer; import org.apache.activemq.util.IntrospectionSupport; import org.apache.activemq.wireformat.WireFormat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Licensed to the Apache Software Foundation (ASF) under one or more @@ -44,6 +47,7 @@ import org.apache.activemq.wireformat.WireFormat; */ public class AutoNIOSSLTransportServer extends AutoTcpTransportServer { + private static final Logger LOG = LoggerFactory.getLogger(AutoNIOSSLTransportServer.class); private SSLContext context; public AutoNIOSSLTransportServer(SSLContext context, TcpTransportFactory transportFactory, URI location, ServerSocketFactory serverSocketFactory, @@ -118,8 +122,11 @@ public class AutoNIOSSLTransportServer extends AutoTcpTransportServer { public void run() { try { in.start(); - } catch (Exception e) { - throw new IllegalStateException("Could not complete Transport start", e); + } catch (Exception error) { + LOG.warn("Could not accept connection {}: {} ({})", + (in.getRemoteAddress() == null ? "" : "from " + in.getRemoteAddress()), error.getMessage(), + TransportConnector.getRootCause(error).getMessage()); + throw new IllegalStateException("Could not complete Transport start", error); } int attempts = 0; diff --git a/activemq-unit-tests/pom.xml b/activemq-unit-tests/pom.xml index 680c3d4f3d..1920f0d7a2 100644 --- a/activemq-unit-tests/pom.xml +++ b/activemq-unit-tests/pom.xml @@ -654,8 +654,6 @@ **/SSHTunnelNetworkReconnectTest.* **/FailoverConsumerTest.* - - **/nio/** **/NioQueueSubscriptionTest.*/ **/NetworkConnectionsCleanedupTest.*/** diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLBasicTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLBasicTest.java index 01c5e57067..2c64eb3600 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLBasicTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLBasicTest.java @@ -117,7 +117,7 @@ public class NIOSSLBasicTest { final DefaultTestAppender appender = new DefaultTestAppender() { @Override public void doAppend(LoggingEvent event) { - if (event.getLevel().equals(Level.ERROR) && event.getRenderedMessage().contains("Could not accept connection")) { + if (event.getLevel().equals(Level.WARN) && event.getRenderedMessage().contains("Could not accept connection")) { gotLogMessage.countDown(); if (event.getRenderedMessage().contains("tcp")) { // got remote address diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLConcurrencyTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLConcurrencyTest.java index 1ade5165c0..59abcd31a2 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLConcurrencyTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/nio/NIOSSLConcurrencyTest.java @@ -70,7 +70,7 @@ public class NIOSSLConcurrencyTest extends TestCase { broker = new BrokerService(); broker.setPersistent(false); broker.setUseJmx(false); - TransportConnector connector = broker.addConnector("nio+ssl://localhost:0?transport.needClientAuth=true&transport.enabledCipherSuites=SSL_RSA_WITH_RC4_128_SHA,SSL_DH_anon_WITH_3DES_EDE_CBC_SHA"); + TransportConnector connector = broker.addConnector("nio+ssl://localhost:0?socket.verifyHostName=false&transport.needClientAuth=true"); broker.start(); broker.waitUntilStarted();