This is an automated email from the ASF dual-hosted git repository. cml pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/qpid-jms-amqp-0-x.git
commit 83205d0c1a5924bf5390691cee1ae6b6758ccbda Author: Alex Rudyy <[email protected]> AuthorDate: Tue Jun 2 14:26:13 2020 +0100 NO-JIRA: Simplify FailoverMethodTest --- .../systest/connection/FailoverMethodTest.java | 103 +++++---------------- 1 file changed, 22 insertions(+), 81 deletions(-) diff --git a/systests/src/test/java/org/apache/qpid/systest/connection/FailoverMethodTest.java b/systests/src/test/java/org/apache/qpid/systest/connection/FailoverMethodTest.java index 61f8a2a..b36d444 100644 --- a/systests/src/test/java/org/apache/qpid/systest/connection/FailoverMethodTest.java +++ b/systests/src/test/java/org/apache/qpid/systest/connection/FailoverMethodTest.java @@ -27,26 +27,26 @@ import static org.junit.Assume.assumeThat; import java.io.IOException; import java.net.InetSocketAddress; -import java.net.ServerSocket; -import java.net.Socket; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import javax.jms.ExceptionListener; import javax.jms.JMSException; import com.google.common.util.concurrent.SettableFuture; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.qpid.QpidException; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQConnectionURL; +import org.apache.qpid.client.BrokerDetails; +import org.apache.qpid.framing.ProtocolVersion; import org.apache.qpid.systest.core.BrokerAdmin; import org.apache.qpid.systest.core.JmsTestBase; +import org.apache.qpid.systest.core.util.PortHelper; +import org.apache.qpid.transport.TransportException; import org.apache.qpid.util.SystemUtils; public class FailoverMethodTest extends JmsTestBase implements ExceptionListener @@ -55,7 +55,6 @@ public class FailoverMethodTest extends JmsTestBase implements ExceptionListener private final SettableFuture<JMSException> _failoverComplete = SettableFuture.create(); private int _freePortWithNoBroker; private int _port; - private DummyServer _dummyServer; @Before public void setUp() throws Exception @@ -63,16 +62,9 @@ public class FailoverMethodTest extends JmsTestBase implements ExceptionListener assumeThat("Test requires redevelopment - timings/behaviour on windows mean it fails", SystemUtils.isWindows(), is(not(true))); - _dummyServer = new DummyServer(); InetSocketAddress brokerAddress = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.AMQP); _port = brokerAddress.getPort(); - _freePortWithNoBroker = _dummyServer.start(); - } - - @After - public void tearDown() - { - _dummyServer.stop(); + _freePortWithNoBroker = new PortHelper().getNextAvailable(); } /** * Test that the round robin method has the correct delays. @@ -98,7 +90,7 @@ public class FailoverMethodTest extends JmsTestBase implements ExceptionListener try { long start = System.currentTimeMillis(); - connection = new AMQConnection(url); + connection = getConnection(url); connection.setExceptionListener(this); @@ -150,7 +142,7 @@ public class FailoverMethodTest extends JmsTestBase implements ExceptionListener try { long start = System.currentTimeMillis(); - connection = new AMQConnection(url); + connection = getConnection(url); connection.setExceptionListener(this); @@ -186,77 +178,26 @@ public class FailoverMethodTest extends JmsTestBase implements ExceptionListener } } - @Override - public void onException(JMSException e) - { - _failoverComplete.set(e); - } - - class DummyServer implements Runnable + private AMQConnection getConnection(final AMQConnectionURL url) throws QpidException { - private ExecutorService _executorService; - private ServerSocket _serverSocket; - private boolean _started; - - synchronized int start() throws IOException - { - if (!_started) - { - _executorService = Executors.newSingleThreadExecutor(); - _serverSocket = new ServerSocket(0); - _started = true; - _executorService.submit(this); - return _serverSocket.getLocalPort(); - } - return -1; - } - - synchronized void stop() - { - if (_started) - { - _started = false; - closeSafely(); - } - } - - public void run() + return new AMQConnection(url) { - while (_started) + @Override + public ProtocolVersion makeBrokerConnection(final BrokerDetails brokerDetail) + throws IOException, QpidException { - try + if (brokerDetail.getPort() == _freePortWithNoBroker) { - acceptAndClose(); + throw new TransportException("Error creating network connection"); } - catch (IOException e) - { - LOGGER.warn("Failed to close client socket", e); - stop(); - } - } - } - - private void acceptAndClose() throws IOException - { - final Socket socket = _serverSocket.accept(); - socket.close(); - } - - private synchronized void closeSafely() - { - try - { - _serverSocket.close(); + return super.makeBrokerConnection(brokerDetail); } - catch (IOException e) - { - LOGGER.warn("Failed to close server socket", e); - } - finally - { - _executorService.shutdown(); - } - } + }; } + @Override + public void onException(JMSException e) + { + _failoverComplete.set(e); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
