Repository: mina Updated Branches: refs/heads/2.0 109381c94 -> 8238a93fa
Slightly changing the test : - the messageReceive does not anymore close the session (it's already closed on the client) - looping 10 000 times - removing the verbose logs, adding some logs and a counter. Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/8238a93f Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/8238a93f Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/8238a93f Branch: refs/heads/2.0 Commit: 8238a93fab3cb09366f9003d2de591e39c365810 Parents: 109381c Author: Emmanuel Lécharny <[email protected]> Authored: Wed Aug 24 16:39:16 2016 +0200 Committer: Emmanuel Lécharny <[email protected]> Committed: Wed Aug 24 16:39:16 2016 +0200 ---------------------------------------------------------------------- .../transport/socket/nio/DIRMINA1041Test.java | 63 ++++++++++++++++---- 1 file changed, 51 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/8238a93f/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java ---------------------------------------------------------------------- diff --git a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java index 4f70106..08cbf30 100644 --- a/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java +++ b/mina-core/src/test/java/org/apache/mina/transport/socket/nio/DIRMINA1041Test.java @@ -1,5 +1,6 @@ package org.apache.mina.transport.socket.nio; +import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.future.CloseFuture; import org.apache.mina.core.future.ConnectFuture; import org.apache.mina.core.future.WriteFuture; @@ -18,40 +19,71 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.InetSocketAddress; +import java.net.SocketAddress; public class DIRMINA1041Test { private static final Logger LOG = LoggerFactory.getLogger(DIRMINA1041Test.class); private static final String HOST = "localhost"; private static final int PORT = AvailablePortFinder.getNextAvailable(); - private static final long TIMEOUT = 3000L; + private static final long TIMEOUT = 10000L; + private static int counter = 0; private SocketAcceptor acceptor; private SocketConnector connector; @Before public void setUp() throws Exception { acceptor = new NioSocketAcceptor(); + acceptor.setReuseAddress(true); acceptor.setHandler(new SomeAcceptHandler()); acceptor.bind(new InetSocketAddress(HOST, PORT)); connector = new NioSocketConnector(); + connector.getSessionConfig().setReuseAddress(true); connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory())); connector.setHandler(new SomeConnectHandler()); } @Test public void testWrite() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - IoSession session = getSession(); - - WriteFuture future = session.write("Test"); - LOG.info("Waiting for WriteFuture to complete. Session: " + session); - if (!future.await(TIMEOUT)) { - Assert.fail("WriteFuture did not complete. Session: " + session); + SocketAddress address = new InetSocketAddress(HOST, PORT); + + try { + for (int i = 0; i < 10000; i++) { + ConnectFuture future = connector.connect( address); + + if (!future.awaitUninterruptibly(TIMEOUT)) { + + Assert.fail("ConnectFuture did not complete."); + } + + IoSession session = future.getSession(); + + if ( i % 1000 == 0 ) { + System.out.println("Loop " + i +", counter = " + counter); + } + + WriteFuture writeFuture = session.write("Test" + i); + + //LOG.info("Waiting for WriteFuture to complete. Session: " + session); + if (!writeFuture.await(TIMEOUT)) { + LOG.info("WriteFuture did not complete. Session: " + session); + Assert.fail("WriteFuture did not complete. Session: " + session); + } + + CloseFuture closeFuture = session.closeOnFlush(); + + if (!closeFuture.awaitUninterruptibly(TIMEOUT)) { + Assert.fail("CloseFuture did not complete."); + } + + //Thread.sleep( 2 ); } - - closeSession(session); + } catch (Exception e) { + e.printStackTrace(); } + + System.out.println("Done " + 100000 + " loops, counter = " + counter); } @After @@ -63,6 +95,7 @@ public class DIRMINA1041Test { private IoSession getSession() { ConnectFuture future = connector.connect(new InetSocketAddress(HOST, PORT)); if (!future.awaitUninterruptibly(TIMEOUT)) { + Assert.fail("ConnectFuture did not complete."); } return future.getSession(); @@ -78,14 +111,20 @@ public class DIRMINA1041Test { private class SomeConnectHandler extends IoHandlerAdapter { @Override public void sessionClosed(IoSession session) throws Exception { - LOG.info("Connector - Session closed : " + session); + //LOG.info("Connector - Session closed : " + session); + } + + public void messageSent(IoSession session, Object message) throws Exception { + //LOG.info("message sent : " + message); } } private class SomeAcceptHandler extends IoHandlerAdapter { @Override public void messageReceived(IoSession session, Object message) throws Exception { - session.closeNow(); + //LOG.info("Message received : " + ((IoBuffer)message).toString() ); + counter++; + //session.closeNow(); } } }
