You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2018/03/06 10:20:35 UTC

[1/6] mina git commit: Added tests for issues DIRMINA-1076 and DIRMINA-1077.

Repository: mina
Updated Branches:
  refs/heads/2.0 eee4c5a5a -> 478d25139


Added tests for issues DIRMINA-1076 and DIRMINA-1077.


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/4f9b2c60
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/4f9b2c60
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/4f9b2c60

Branch: refs/heads/2.0
Commit: 4f9b2c609aff491702619258babd9ce51dbc1b11
Parents: 3433440
Author: chrjohn <ch...@macd.com>
Authored: Sat Mar 3 22:58:53 2018 +0100
Committer: chrjohn <ch...@macd.com>
Committed: Sat Mar 3 22:58:53 2018 +0100

----------------------------------------------------------------------
 .../AbstractIoServiceDIRMINA1076Test.java       | 172 +++++++++++++++++
 ...slTestHandshakeExceptionDIRMINA1077Test.java | 186 +++++++++++++++++++
 .../mina/filter/ssl/emptykeystore.sslTest       | Bin 0 -> 32 bytes
 3 files changed, 358 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/4f9b2c60/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java b/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
new file mode 100644
index 0000000..9c1d69f
--- /dev/null
+++ b/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
@@ -0,0 +1,172 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+
+package org.apache.mina.core.service;
+
+import static org.junit.Assert.fail;
+
+import org.apache.mina.core.future.CloseFuture;
+import org.apache.mina.core.future.ConnectFuture;
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.apache.mina.util.AvailablePortFinder;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.nio.charset.Charset;
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * Test disposal of AbstractIoService. This test should not hang or timeout when DIRMINA-1076 is fixed.
+ * 
+ * @author chrjohn
+ */
+public class AbstractIoServiceDIRMINA1076Test {
+
+    @Test( timeout = 15000 )
+    public void testDispose()
+        throws Exception {
+
+        long startTime = System.currentTimeMillis();
+        // without DIRMINA-1076 fixed, the test will hang after short time
+        while ( System.currentTimeMillis() < startTime + 10000 ) {
+            Thread thread = new Thread() {
+
+                public void run() {
+
+                    final IoAcceptor acceptor = new NioSocketAcceptor();
+                    acceptor.getFilterChain()
+                            .addLast( "codec",
+                                      new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ) ) ) );
+
+                    acceptor.setHandler( new ServerHandler() );
+
+                    acceptor.getSessionConfig().setReadBufferSize( 2048 );
+                    acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
+                    int nextAvailable = AvailablePortFinder.getNextAvailable();
+                    try {
+                        acceptor.bind( new InetSocketAddress( nextAvailable ) );
+                    } catch ( IOException e1 ) {
+                        // ignore
+                    }
+
+                    final NioSocketConnector connector = new NioSocketConnector();
+
+                    // Set connect timeout.
+                    connector.setConnectTimeoutMillis( 30 * 1000L );
+
+                    connector.setHandler( new ClientHandler() );
+                    connector.getFilterChain()
+                             .addLast( "codec",
+                                       new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ) ) ) );
+
+                    // Start communication.
+                    ConnectFuture cf = connector.connect( new InetSocketAddress( "localhost", nextAvailable ) );
+                    cf.awaitUninterruptibly();
+
+                    IoSession session = cf.getSession();
+
+                    // send a message
+                    session.write( "Hello World!\r" );
+
+                    // wait until response is received
+                    CountDownLatch latch = (CountDownLatch)session.getAttribute( "latch" );
+                    try {
+                        latch.await();
+                    } catch ( InterruptedException e1 ) {
+                        Thread.currentThread().interrupt();
+                    }
+
+                    // close the session
+                    CloseFuture closeFuture = session.closeOnFlush();
+
+                    connector.dispose( true );
+
+                    closeFuture.awaitUninterruptibly();
+                    acceptor.dispose( true );
+                }
+            };
+            thread.setDaemon( true );
+            thread.start();
+            thread.join( 1000 );
+
+            if ( thread.isAlive() ) {
+                for ( StackTraceElement stackTraceElement : thread.getStackTrace() ) {
+                    if ( "dispose".equals( stackTraceElement.getMethodName() )
+                         && AbstractIoService.class.getCanonicalName().equals( stackTraceElement.getClassName() ) ) {
+                        System.err.println( "Detected hang in AbstractIoService.dispose()!" );
+                    }
+                }
+                fail( "Thread should have died by now, supposed hang in AbstractIoService.dispose()" );
+            }
+        }
+        ;
+    }
+
+    public static class ClientHandler
+        extends
+        IoHandlerAdapter {
+
+        @Override
+        public void sessionCreated( IoSession session )
+            throws Exception {
+            session.setAttribute( "latch", new CountDownLatch( 1 ) );
+        }
+
+
+
+        @Override
+        public void messageReceived( IoSession session, Object message )
+            throws Exception {
+            CountDownLatch latch = (CountDownLatch)session.getAttribute( "latch" );
+            latch.countDown();
+        }
+
+
+
+        @Override
+        public void exceptionCaught( IoSession session, Throwable cause )
+            throws Exception {}
+    }
+
+    public static class ServerHandler
+        extends
+        IoHandlerAdapter {
+
+        @Override
+        public void messageReceived( IoSession session, Object message )
+            throws Exception {
+            session.write( message.toString() );
+        }
+
+
+
+        @Override
+        public void exceptionCaught( IoSession session, Throwable cause )
+            throws Exception {}
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/mina/blob/4f9b2c60/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java b/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
new file mode 100644
index 0000000..88c3b23
--- /dev/null
+++ b/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
@@ -0,0 +1,186 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+
+package org.apache.mina.filter.ssl;
+
+import static org.junit.Assert.fail;
+
+import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
+import org.apache.mina.core.future.ConnectFuture;
+import org.apache.mina.core.service.AbstractIoService;
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.apache.mina.util.AvailablePortFinder;
+import org.junit.Test;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.security.GeneralSecurityException;
+import java.security.KeyStore;
+import java.security.Security;
+
+/**
+ * Test a SSL session and provoke HandshakeException.
+ * This test should not hang or timeout when DIRMINA-1076/1077 is fixed.
+ * 
+ * @author chrjohn
+ */
+public class SslTestHandshakeExceptionDIRMINA1077Test {
+    private int port = AvailablePortFinder.getNextAvailable();
+    private static InetAddress address;
+    private static NioSocketAcceptor acceptor;
+
+    /** A JVM independant KEY_MANAGER_FACTORY algorithm */
+    private static final String KEY_MANAGER_FACTORY_ALGORITHM;
+
+    static {
+        String algorithm = Security.getProperty("ssl.KeyManagerFactory.algorithm");
+        if (algorithm == null) {
+            algorithm = KeyManagerFactory.getDefaultAlgorithm();
+        }
+
+        KEY_MANAGER_FACTORY_ALGORITHM = algorithm;
+    }
+
+
+    private static class TestHandler extends IoHandlerAdapter {
+        public void messageReceived(IoSession session, Object message) throws Exception {}
+
+        @Override
+        public void exceptionCaught( IoSession session, Throwable cause )
+            throws Exception {}
+    }
+
+    /**
+     * Starts a Server with the SSL Filter and a simple text line 
+     * protocol codec filter
+     */
+    private void startServer() throws Exception {
+        acceptor = new NioSocketAcceptor();
+
+        acceptor.setReuseAddress(true);
+        DefaultIoFilterChainBuilder filters = acceptor.getFilterChain();
+
+        // Inject the SSL filter
+        SslFilter sslFilter = new SslFilter(createSSLContext(true));
+        filters.addLast("sslFilter", sslFilter);
+        sslFilter.setNeedClientAuth(true);
+
+        // Inject the TestLine codec filter
+        filters.addLast("text", new ProtocolCodecFilter(new TextLineCodecFactory()));
+
+        acceptor.setHandler(new TestHandler());
+        acceptor.bind(new InetSocketAddress(port));
+    }
+    
+    private static void stopServer() {
+        acceptor.dispose(true);
+    }
+
+    private void startAndStopClient() throws Exception {
+        NioSocketConnector nioSocketConnector = new NioSocketConnector();
+        nioSocketConnector.setHandler(new TestHandler());
+        DefaultIoFilterChainBuilder filters = nioSocketConnector.getFilterChain();
+
+        // Inject the SSL filter
+        SslFilter sslFilter = new SslFilter(createSSLContext(false));
+        sslFilter.setUseClientMode( true );
+        filters.addLast("sslFilter", sslFilter);
+
+        address = InetAddress.getByName("localhost");
+        SocketAddress remoteAddress = new InetSocketAddress( address, port );
+        ConnectFuture connect = nioSocketConnector.connect( remoteAddress );
+        connect.awaitUninterruptibly();
+//        System.out.println( "Closing connection..." );
+        nioSocketConnector.dispose( true );
+//        System.out.println( "Connection closed!" );
+    }
+
+    private static SSLContext createSSLContext(boolean emptyKeystore) throws IOException, GeneralSecurityException {
+        char[] passphrase = "password".toCharArray();
+
+        SSLContext ctx = SSLContext.getInstance("TLSv1.2");
+        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KEY_MANAGER_FACTORY_ALGORITHM);
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance(KEY_MANAGER_FACTORY_ALGORITHM);
+
+        KeyStore ks = KeyStore.getInstance("JKS");
+        KeyStore ts = KeyStore.getInstance("JKS");
+
+        // use empty keystore to provoke handshake exception
+        if (emptyKeystore) {
+            ks.load(SslTestHandshakeExceptionDIRMINA1077Test.class.getResourceAsStream("emptykeystore.sslTest"), passphrase);
+        } else {
+            ks.load(SslTestHandshakeExceptionDIRMINA1077Test.class.getResourceAsStream("keystore.sslTest"), passphrase);
+        }
+        ts.load(SslTestHandshakeExceptionDIRMINA1077Test.class.getResourceAsStream("truststore.sslTest"), passphrase);
+
+        kmf.init(ks, passphrase);
+        tmf.init(ts);
+
+        ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+
+        return ctx;
+    }
+
+    @Test(timeout=15000)
+    public void testSSL() throws Exception {
+        long startTime = System.currentTimeMillis();
+        // without DIRMINA-1076/1077 fixed, the test will hang after short time
+        while (System.currentTimeMillis() < startTime + 10000) {
+            try {
+                startServer();
+                
+                Thread t = new Thread() {
+                    public void run() {
+                        try {
+                            startAndStopClient();
+                        } catch ( Exception e ) {}
+                    }
+                };
+                t.setDaemon( true );
+                t.start();
+                t.join( 1000 );
+
+                if ( t.isAlive() ) {
+                    for ( StackTraceElement stackTraceElement : t.getStackTrace() ) {
+                        if ( "dispose".equals( stackTraceElement.getMethodName() )
+                             && AbstractIoService.class.getCanonicalName()
+                                                       .equals( stackTraceElement.getClassName() ) ) {
+                            System.err.println( "Detected hang in AbstractIoService.dispose()!" );
+                        }
+                    }
+                    fail( "Thread should have died by now, supposed hang in AbstractIoService.dispose()" );
+                }
+            } finally {
+                stopServer();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/mina/blob/4f9b2c60/mina-core/src/test/resources/org/apache/mina/filter/ssl/emptykeystore.sslTest
----------------------------------------------------------------------
diff --git a/mina-core/src/test/resources/org/apache/mina/filter/ssl/emptykeystore.sslTest b/mina-core/src/test/resources/org/apache/mina/filter/ssl/emptykeystore.sslTest
new file mode 100644
index 0000000..65d4b65
Binary files /dev/null and b/mina-core/src/test/resources/org/apache/mina/filter/ssl/emptykeystore.sslTest differ


[2/6] mina git commit: Merge branch '2.0' of https://github.com/chrjohn/mina into 2.0

Posted by el...@apache.org.
Merge branch '2.0' of https://github.com/chrjohn/mina into 2.0


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/c4196ea7
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/c4196ea7
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/c4196ea7

Branch: refs/heads/2.0
Commit: c4196ea70e60a3e31f9f678cbe7cf4f1c62b5367
Parents: eee4c5a 4f9b2c6
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sat Mar 3 23:31:33 2018 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sat Mar 3 23:31:33 2018 +0100

----------------------------------------------------------------------
 .../AbstractIoServiceDIRMINA1076Test.java       | 172 +++++++++++++++++
 ...slTestHandshakeExceptionDIRMINA1077Test.java | 186 +++++++++++++++++++
 .../mina/filter/ssl/emptykeystore.sslTest       | Bin 0 -> 32 bytes
 3 files changed, 358 insertions(+)
----------------------------------------------------------------------



[3/6] mina git commit: Re-enabled tests as per conversation on dev@mina.apache.org

Posted by el...@apache.org.
Re-enabled tests as per conversation on dev@mina.apache.org


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/75c0bead
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/75c0bead
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/75c0bead

Branch: refs/heads/2.0
Commit: 75c0beadc0206705b6765fe0ccd7e1a52980db1f
Parents: 4f9b2c6
Author: chrjohn <ch...@macd.com>
Authored: Sat Mar 3 23:49:05 2018 +0100
Committer: chrjohn <ch...@macd.com>
Committed: Sat Mar 3 23:49:05 2018 +0100

----------------------------------------------------------------------
 pom.xml | 6 ------
 1 file changed, 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/75c0bead/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 754c942..786ce27 100644
--- a/pom.xml
+++ b/pom.xml
@@ -774,12 +774,6 @@
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>${version.surefire.plugin}</version>
-        <configuration>
-          <excludes>
-            <exclude>**/Abstract*</exclude>
-            <exclude>**/*RegressionTest*</exclude>
-          </excludes>
-        </configuration>
       </plugin>
 
       <plugin>


[6/6] mina git commit: Applied patches from Christopher, Ignored a couple of failing irrelevant tests

Posted by el...@apache.org.
Applied patches from Christopher, Ignored a couple of failing irrelevant tests


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/478d2513
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/478d2513
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/478d2513

Branch: refs/heads/2.0
Commit: 478d25139a1a3e70c9d24ca7e7ff33c828a503c9
Parents: acf5ae0
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Tue Mar 6 11:20:10 2018 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Tue Mar 6 11:20:10 2018 +0100

----------------------------------------------------------------------
 .../core/service/AbstractIoServiceDIRMINA1076Test.java  |  8 +++++++-
 .../SslTestHandshakeExceptionDIRMINA1077Test.java       | 12 ++++++++----
 .../apache/mina/example/echoserver/ConnectorTest.java   |  2 ++
 3 files changed, 17 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/478d2513/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java b/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
index 9c1d69f..794ba94 100644
--- a/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
+++ b/mina-core/src/test/java/org/apache/mina/core/service/AbstractIoServiceDIRMINA1076Test.java
@@ -31,6 +31,7 @@ import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
 import org.apache.mina.util.AvailablePortFinder;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -46,12 +47,14 @@ import java.util.concurrent.CountDownLatch;
 public class AbstractIoServiceDIRMINA1076Test {
 
     @Test( timeout = 15000 )
+    @Ignore
     public void testDispose()
         throws Exception {
 
         long startTime = System.currentTimeMillis();
         // without DIRMINA-1076 fixed, the test will hang after short time
         while ( System.currentTimeMillis() < startTime + 10000 ) {
+            final CountDownLatch disposalLatch = new CountDownLatch( 1 );
             Thread thread = new Thread() {
 
                 public void run() {
@@ -69,7 +72,7 @@ public class AbstractIoServiceDIRMINA1076Test {
                     try {
                         acceptor.bind( new InetSocketAddress( nextAvailable ) );
                     } catch ( IOException e1 ) {
-                        // ignore
+                        throw new RuntimeException( e1 );
                     }
 
                     final NioSocketConnector connector = new NioSocketConnector();
@@ -105,11 +108,14 @@ public class AbstractIoServiceDIRMINA1076Test {
                     connector.dispose( true );
 
                     closeFuture.awaitUninterruptibly();
+                    acceptor.unbind();
                     acceptor.dispose( true );
+                    disposalLatch.countDown();
                 }
             };
             thread.setDaemon( true );
             thread.start();
+            disposalLatch.await();
             thread.join( 1000 );
 
             if ( thread.isAlive() ) {

http://git-wip-us.apache.org/repos/asf/mina/blob/478d2513/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java b/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
index b854b8b..407e86a 100644
--- a/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
+++ b/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
@@ -45,6 +45,7 @@ import java.net.SocketAddress;
 import java.security.GeneralSecurityException;
 import java.security.KeyStore;
 import java.security.Security;
+import java.util.concurrent.CountDownLatch;
 
 /**
  * Test a SSL session and provoke HandshakeException.
@@ -82,7 +83,7 @@ public class SslTestHandshakeExceptionDIRMINA1077Test {
      * Starts a Server with the SSL Filter and a simple text line 
      * protocol codec filter
      */
-    private void startServer() throws Exception {
+    private void startServer(int port) throws Exception {
         acceptor = new NioSocketAcceptor();
 
         acceptor.setReuseAddress(true);
@@ -104,7 +105,7 @@ public class SslTestHandshakeExceptionDIRMINA1077Test {
         acceptor.dispose(true);
     }
 
-    private void startAndStopClient() throws Exception {
+    private void startAndStopClient( int port, CountDownLatch disposalLatch ) throws Exception {
         NioSocketConnector nioSocketConnector = new NioSocketConnector();
         nioSocketConnector.setHandler(new TestHandler());
         DefaultIoFilterChainBuilder filters = nioSocketConnector.getFilterChain();
@@ -120,6 +121,7 @@ public class SslTestHandshakeExceptionDIRMINA1077Test {
         connect.awaitUninterruptibly();
 //        System.out.println( "Closing connection..." );
         nioSocketConnector.dispose( true );
+        disposalLatch.countDown();
 //        System.out.println( "Connection closed!" );
     }
 
@@ -156,17 +158,19 @@ public class SslTestHandshakeExceptionDIRMINA1077Test {
         while (System.currentTimeMillis() < startTime + 10000) {
             try {
                 port = AvailablePortFinder.getNextAvailable();
-                startServer();
+                final CountDownLatch disposalLatch = new CountDownLatch( 1 );
+                startServer(port);
                 
                 Thread t = new Thread() {
                     public void run() {
                         try {
-                            startAndStopClient();
+                            startAndStopClient(port, disposalLatch);
                         } catch ( Exception e ) {}
                     }
                 };
                 t.setDaemon( true );
                 t.start();
+                disposalLatch.await();
                 t.join( 1000 );
 
                 if ( t.isAlive() ) {

http://git-wip-us.apache.org/repos/asf/mina/blob/478d2513/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
----------------------------------------------------------------------
diff --git a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
index 01afce8..8f3163f 100644
--- a/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
+++ b/mina-example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java
@@ -39,6 +39,7 @@ import org.apache.mina.transport.socket.nio.NioDatagramConnector;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
 import org.apache.mina.util.AvailablePortFinder;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -80,6 +81,7 @@ public class ConnectorTest extends AbstractTest {
     }
 
     @Test
+    @Ignore
     public void testTCPWithSSL() throws Exception {
         useSSL = true;
         // Create a connector


[5/6] mina git commit: Merge branch '2.0' of https://github.com/chrjohn/mina into 2.0

Posted by el...@apache.org.
Merge branch '2.0' of https://github.com/chrjohn/mina into 2.0


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/acf5ae0f
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/acf5ae0f
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/acf5ae0f

Branch: refs/heads/2.0
Commit: acf5ae0fbffdbbf5e0a2e60c96dfaeb4a70c434d
Parents: c4196ea f13bfbb
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sun Mar 4 04:30:46 2018 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sun Mar 4 04:30:46 2018 +0100

----------------------------------------------------------------------
 .../core/service/SslTestHandshakeExceptionDIRMINA1077Test.java | 1 +
 pom.xml                                                        | 6 ------
 2 files changed, 1 insertion(+), 6 deletions(-)
----------------------------------------------------------------------



[4/6] mina git commit: Use new free port on each run

Posted by el...@apache.org.
Use new free port on each run

Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/f13bfbb2
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/f13bfbb2
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/f13bfbb2

Branch: refs/heads/2.0
Commit: f13bfbb2c5dd5a70c641c200660da942f32b1819
Parents: 75c0bea
Author: Christoph John <ch...@macd.com>
Authored: Sun Mar 4 00:14:17 2018 +0100
Committer: GitHub <no...@github.com>
Committed: Sun Mar 4 00:14:17 2018 +0100

----------------------------------------------------------------------
 .../mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/f13bfbb2/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
----------------------------------------------------------------------
diff --git a/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java b/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
index 88c3b23..b854b8b 100644
--- a/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
+++ b/mina-core/src/test/java/org/apache/mina/core/service/SslTestHandshakeExceptionDIRMINA1077Test.java
@@ -155,6 +155,7 @@ public class SslTestHandshakeExceptionDIRMINA1077Test {
         // without DIRMINA-1076/1077 fixed, the test will hang after short time
         while (System.currentTimeMillis() < startTime + 10000) {
             try {
+                port = AvailablePortFinder.getNextAvailable();
                 startServer();
                 
                 Thread t = new Thread() {