Repository: mina-sshd
Updated Branches:
  refs/heads/master 158785367 -> f3d58b906


[SSHD-380] Refactor tests to let the system choose the port instead of using 
getFreePort() which can lead to problems

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

Branch: refs/heads/master
Commit: 24a5f7ded90becf4bcb8b174c23d9e0fee948d58
Parents: 1587853
Author: Guillaume Nodet <[email protected]>
Authored: Mon Dec 1 09:30:39 2014 +0100
Committer: Guillaume Nodet <[email protected]>
Committed: Thu Dec 4 10:42:47 2014 +0100

----------------------------------------------------------------------
 .../org/apache/sshd/common/util/IoUtils.java    | 10 ----
 .../test/java/org/apache/sshd/AgentTest.java    |  9 ++-
 .../org/apache/sshd/AuthenticationTest.java     |  4 +-
 .../test/java/org/apache/sshd/CipherTest.java   |  4 +-
 .../test/java/org/apache/sshd/ClientTest.java   |  4 +-
 .../test/java/org/apache/sshd/EcdsaTest.java    |  5 +-
 .../java/org/apache/sshd/KeepAliveTest.java     |  4 +-
 .../src/test/java/org/apache/sshd/KexTest.java  |  4 +-
 .../java/org/apache/sshd/KeyReExchangeTest.java |  4 +-
 .../src/test/java/org/apache/sshd/LoadTest.java |  4 +-
 .../src/test/java/org/apache/sshd/MacTest.java  |  4 +-
 .../org/apache/sshd/PortForwardingLoadTest.java | 33 +++++------
 .../org/apache/sshd/PortForwardingTest.java     | 59 +++++---------------
 .../test/java/org/apache/sshd/ProxyTest.java    |  9 +--
 .../src/test/java/org/apache/sshd/ScpTest.java  |  5 +-
 .../test/java/org/apache/sshd/ServerTest.java   |  4 +-
 .../src/test/java/org/apache/sshd/SftpTest.java |  4 +-
 .../apache/sshd/SinglePublicKeyAuthTest.java    |  3 +-
 .../java/org/apache/sshd/WelcomeBannerTest.java |  4 +-
 .../test/java/org/apache/sshd/util/Utils.java   |  6 +-
 20 files changed, 59 insertions(+), 124 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/main/java/org/apache/sshd/common/util/IoUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/IoUtils.java 
b/sshd-core/src/main/java/org/apache/sshd/common/util/IoUtils.java
index 77f1de2..da53e91 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/IoUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/IoUtils.java
@@ -20,7 +20,6 @@ package org.apache.sshd.common.util;
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.net.ServerSocket;
 
 /**
  * TODO Add javadoc
@@ -29,15 +28,6 @@ import java.net.ServerSocket;
  */
 public class IoUtils {
 
-    public static int getFreePort() throws IOException {
-        ServerSocket s = new ServerSocket(0);
-        try {
-            return s.getLocalPort();
-        } finally {
-            s.close();
-        }
-    }
-
     public static void closeQuietly(Closeable... closeables) {
         for (Closeable c : closeables) {
             try {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/AgentTest.java 
b/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
index c7caba5..c268d76 100644
--- a/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/AgentTest.java
@@ -43,7 +43,6 @@ import org.apache.sshd.util.Utils;
 import org.junit.Test;
 
 import static org.apache.sshd.util.Utils.createTestKeyPairProvider;
-import static org.apache.sshd.util.Utils.getFreePort;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -99,8 +98,8 @@ public class AgentTest extends BaseTest {
             return;
         }
 
-        int port1 = getFreePort();
-        int port2 = getFreePort();
+        int port1;
+        int port2;
 
         TestEchoShellFactory shellFactory = new TestEchoShellFactory();
         ProxyAgentFactory agentFactory = new ProxyAgentFactory();
@@ -110,22 +109,22 @@ public class AgentTest extends BaseTest {
         localAgentFactory.getAgent().addIdentity(pair, "smx");
 
         SshServer sshd1 = SshServer.setUpDefaultServer();
-        sshd1.setPort(port1);
         sshd1.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd1.setShellFactory(shellFactory);
         sshd1.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd1.setPublickeyAuthenticator(new BogusPublickeyAuthenticator());
         sshd1.setAgentFactory(agentFactory);
         sshd1.start();
+        port1 = sshd1.getPort();
 
         SshServer sshd2 = SshServer.setUpDefaultServer();
-        sshd2.setPort(port2);
         sshd2.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd2.setShellFactory(new TestEchoShellFactory());
         sshd2.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd2.setPublickeyAuthenticator(new BogusPublickeyAuthenticator());
         sshd2.setAgentFactory(new ProxyAgentFactory());
         sshd2.start();
+        port2 = sshd2.getPort();
 
         SshClient client1 = SshClient.setUpDefaultClient();
         client1.setAgentFactory(localAgentFactory);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java 
b/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
index 5a7ce51..8c1fb0b 100644
--- a/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/AuthenticationTest.java
@@ -48,10 +48,7 @@ public class AuthenticationTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setPublickeyAuthenticator(new BogusPublickeyAuthenticator());
@@ -64,6 +61,7 @@ public class AuthenticationTest extends BaseTest {
             }
         });
         sshd.start();
+        port = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/CipherTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/CipherTest.java 
b/sshd-core/src/test/java/org/apache/sshd/CipherTest.java
index 7d2334f..af53004 100644
--- a/sshd-core/src/test/java/org/apache/sshd/CipherTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/CipherTest.java
@@ -116,15 +116,13 @@ public class CipherTest extends BaseTest {
 
 
     protected void setUp(NamedFactory<org.apache.sshd.common.Cipher> cipher) 
throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         
sshd.setCipherFactories(Arrays.<NamedFactory<org.apache.sshd.common.Cipher>>asList(cipher));
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/ClientTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/ClientTest.java 
b/sshd-core/src/test/java/org/apache/sshd/ClientTest.java
index 22d738d..245973d 100644
--- a/sshd-core/src/test/java/org/apache/sshd/ClientTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/ClientTest.java
@@ -105,12 +105,10 @@ public class ClientTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
         authLatch = new CountDownLatch(0);
         channelLatch = new CountDownLatch(0);
 
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new TestEchoShellFactory());
         sshd.setCommandFactory(new CommandFactory() {
@@ -159,6 +157,7 @@ public class ClientTest extends BaseTest {
                 },
                 new TcpipServerChannel.DirectTcpipFactory()));
         sshd.start();
+        port = sshd.getPort();
 
         client = SshClient.setUpDefaultClient();
     }
@@ -620,7 +619,6 @@ public class ClientTest extends BaseTest {
     @Test
     public void testKeyboardInteractiveWithFailures() throws Exception {
         final AtomicInteger count = new AtomicInteger();
-        SshClient client = SshClient.setUpDefaultClient();
         client.getProperties().put(ClientFactoryManager.PASSWORD_PROMPTS, "3");
         client.setUserAuthFactories(Arrays.<NamedFactory<UserAuth>>asList(new 
UserAuthKeyboardInteractive.Factory()));
         client.setUserInteraction(new UserInteraction() {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/EcdsaTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/EcdsaTest.java 
b/sshd-core/src/test/java/org/apache/sshd/EcdsaTest.java
index 894c9a9..ae60071 100644
--- a/sshd-core/src/test/java/org/apache/sshd/EcdsaTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/EcdsaTest.java
@@ -90,10 +90,7 @@ public class EcdsaTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
 //        sshd.setShellFactory(new TestEchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setSessionFactory(new 
org.apache.sshd.server.session.SessionFactory());
@@ -127,6 +124,7 @@ public class EcdsaTest extends BaseTest {
                 }
             });
             sshd.start();
+            port = sshd.getPort();
 
             client = SshClient.setUpDefaultClient();
             
client.setSignatureFactories(Arrays.<NamedFactory<Signature>>asList(
@@ -150,6 +148,7 @@ public class EcdsaTest extends BaseTest {
                 }
             });
             sshd.start();
+            port  = sshd.getPort();
 
             client = SshClient.setUpDefaultClient();
             client.start();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/KeepAliveTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/KeepAliveTest.java 
b/sshd-core/src/test/java/org/apache/sshd/KeepAliveTest.java
index 3c3f5a2..0b51c33 100644
--- a/sshd-core/src/test/java/org/apache/sshd/KeepAliveTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/KeepAliveTest.java
@@ -51,16 +51,14 @@ public class KeepAliveTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
         sshd.getProperties().put(ServerFactoryManager.IDLE_TIMEOUT, 
Integer.toString(timeout));
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new TestEchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setPublickeyAuthenticator(new BogusPublickeyAuthenticator());
         sshd.start();
+        port  = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/KexTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/KexTest.java 
b/sshd-core/src/test/java/org/apache/sshd/KexTest.java
index ecca320..2b866e5 100644
--- a/sshd-core/src/test/java/org/apache/sshd/KexTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/KexTest.java
@@ -58,14 +58,12 @@ public class KexTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port  = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java 
b/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
index d94d768..34e1560 100644
--- a/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
@@ -60,8 +60,6 @@ public class KeyReExchangeTest extends BaseTest {
     }
 
     protected void setUp(long bytesLimit, long timeLimit) throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
         if (bytesLimit > 0) {
             sshd.getProperties().put(ServerFactoryManager.REKEY_BYTES_LIMIT, 
Long.toString(bytesLimit));
@@ -69,11 +67,11 @@ public class KeyReExchangeTest extends BaseTest {
         if (timeLimit > 0) {
             sshd.getProperties().put(ServerFactoryManager.REKEY_TIME_LIMIT, 
Long.toString(timeLimit));
         }
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port  = sshd.getPort();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/LoadTest.java 
b/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
index 067bb08..cd73484 100644
--- a/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/LoadTest.java
@@ -47,14 +47,12 @@ public class LoadTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port  = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/MacTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/MacTest.java 
b/sshd-core/src/test/java/org/apache/sshd/MacTest.java
index 478d9be..54e8d4a 100644
--- a/sshd-core/src/test/java/org/apache/sshd/MacTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/MacTest.java
@@ -127,15 +127,13 @@ public class MacTest extends BaseTest {
 
 
     protected void setUp(NamedFactory<Mac> mac) throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setMacFactories(Arrays.<NamedFactory<Mac>>asList(mac));
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port  = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java 
b/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
index 66b2584..bee776c 100644
--- a/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/PortForwardingLoadTest.java
@@ -23,6 +23,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
@@ -76,16 +77,13 @@ public class PortForwardingLoadTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        sshPort = getFreePort();
-        echoPort = getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(sshPort);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setTcpipForwardingFilter(new BogusForwardingFilter());
         sshd.start();
+        sshPort = sshd.getPort();
 
         NioSocketAcceptor acceptor = new NioSocketAcceptor();
         acceptor.setHandler(new IoHandlerAdapter() {
@@ -99,7 +97,8 @@ public class PortForwardingLoadTest extends BaseTest {
             }
         });
         acceptor.setReuseAddress(true);
-        acceptor.bind(new InetSocketAddress(echoPort));
+        acceptor.bind(new InetSocketAddress(0));
+        echoPort = acceptor.getLocalAddress().getPort();
         this.acceptor = acceptor;
 
     }
@@ -129,10 +128,11 @@ public class PortForwardingLoadTest extends BaseTest {
         }
         final String PAYLOAD = sb.toString();
         Session session = createSession();
-        final ServerSocket ss = new ServerSocket(0);
+        final ServerSocket ss = new ServerSocket();
+        ss.setReuseAddress(true);
+        ss.bind(new InetSocketAddress((InetAddress) null, 0));
         int forwardedPort = ss.getLocalPort();
-        int sinkPort = getFreePort();
-        session.setPortForwardingL(sinkPort, "localhost", forwardedPort);
+        int sinkPort = session.setPortForwardingL(0, "localhost", 
forwardedPort);
         final AtomicInteger conCount = new AtomicInteger(0);
 
         new Thread() {
@@ -188,6 +188,7 @@ public class PortForwardingLoadTest extends BaseTest {
             }
         }
         session.delPortForwardingL(sinkPort);
+        ss.close();
     }
 
     @Test
@@ -200,7 +201,9 @@ public class PortForwardingLoadTest extends BaseTest {
                 "longer Test Data. This is significantly longer Test Data. 
This is significantly "+
                 "longer Test Data. ";
         Session session = createSession();
-        final ServerSocket ss = new ServerSocket(0);
+        final ServerSocket ss = new ServerSocket();
+        ss.setReuseAddress(true);
+        ss.bind(new InetSocketAddress((InetAddress) null, 0));
         int forwardedPort = ss.getLocalPort();
         int sinkPort = getFreePort();
         session.setPortForwardingR(sinkPort, "localhost", forwardedPort);
@@ -262,6 +265,7 @@ public class PortForwardingLoadTest extends BaseTest {
             Assert.assertTrue(dataOK[i]);
         }
         session.delPortForwardingR(forwardedPort);
+        ss.close();
     }
 
     @Test
@@ -276,7 +280,6 @@ public class PortForwardingLoadTest extends BaseTest {
         final int nbDownloads = 2;
         final int nbLoops = 2;
 
-        final int port = getFreePort();
         StringBuilder resp = new StringBuilder();
         resp.append("<html><body>\n");
         for (int i = 0; i < 1000; i++) {
@@ -297,17 +300,15 @@ public class PortForwardingLoadTest extends BaseTest {
             }
         });
         acceptor.setReuseAddress(true);
-        acceptor.bind(new InetSocketAddress(port));
-
+        acceptor.bind(new InetSocketAddress(0));
+        final int port = acceptor.getLocalAddress().getPort();
 
         Session session = createSession();
 
-        final int forwardedPort1 = getFreePort();
+        final int forwardedPort1 = session.setPortForwardingL(0, host, port);
         final int forwardedPort2 = getFreePort();
-        System.err.println("URL: http://localhost:"; + forwardedPort2);
-
-        session.setPortForwardingL(forwardedPort1, host, port);
         session.setPortForwardingR(forwardedPort2, "localhost", 
forwardedPort1);
+        System.err.println("URL: http://localhost:"; + forwardedPort2);
 
 
         final CountDownLatch latch = new CountDownLatch(nbThread * nbDownloads 
* nbLoops);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java 
b/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
index 4f8be1c..cd21784 100644
--- a/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/PortForwardingTest.java
@@ -33,8 +33,6 @@ import org.apache.mina.core.service.IoHandlerAdapter;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.sshd.client.channel.ChannelDirectTcpip;
-import org.apache.sshd.client.future.AuthFuture;
-import org.apache.sshd.client.future.ConnectFuture;
 import org.apache.sshd.common.SshdSocketAddress;
 import org.apache.sshd.util.BaseTest;
 import org.apache.sshd.util.BogusForwardingFilter;
@@ -67,18 +65,15 @@ public class PortForwardingTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        sshPort = getFreePort();
-        echoPort = getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
         sshd.getProperties().put(SshServer.WINDOW_SIZE, "2048");
         sshd.getProperties().put(SshServer.MAX_PACKET_SIZE, "256");
-        sshd.setPort(sshPort);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setTcpipForwardingFilter(new BogusForwardingFilter());
         sshd.start();
+        sshPort = sshd.getPort();
 
         NioSocketAcceptor acceptor = new NioSocketAcceptor();
         acceptor.setHandler(new IoHandlerAdapter() {
@@ -92,7 +87,8 @@ public class PortForwardingTest extends BaseTest {
             }
         });
         acceptor.setReuseAddress(true);
-        acceptor.bind(new InetSocketAddress(echoPort));
+        acceptor.bind(new InetSocketAddress(0));
+        echoPort = acceptor.getLocalAddress().getPort();
         this.acceptor = acceptor;
 
     }
@@ -135,13 +131,12 @@ public class PortForwardingTest extends BaseTest {
     public void testRemoteForwardingNative() throws Exception {
         ClientSession session = createNativeSession();
 
-        int forwardedPort = getFreePort();
-        SshdSocketAddress remote = new SshdSocketAddress("", forwardedPort);
+        SshdSocketAddress remote = new SshdSocketAddress("", 0);
         SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
 
-        session.startRemotePortForwarding(remote, local);
+        SshdSocketAddress bound = session.startRemotePortForwarding(remote, 
local);
 
-        Socket s = new Socket(remote.getHostName(), remote.getPort());
+        Socket s = new Socket(bound.getHostName(), bound.getPort());
         s.getOutputStream().write("Hello".getBytes());
         s.getOutputStream().flush();
         byte[] buf = new byte[1024];
@@ -158,15 +153,14 @@ public class PortForwardingTest extends BaseTest {
     public void testRemoteForwardingNativeBigPayload() throws Exception {
         ClientSession session = createNativeSession();
 
-        int forwardedPort = getFreePort();
-        SshdSocketAddress remote = new SshdSocketAddress("", forwardedPort);
+        SshdSocketAddress remote = new SshdSocketAddress("", 0);
         SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
 
-        session.startRemotePortForwarding(remote, local);
+        SshdSocketAddress bound = session.startRemotePortForwarding(remote, 
local);
 
         byte[] buf = new byte[1024];
 
-        Socket s = new Socket(remote.getHostName(), remote.getPort());
+        Socket s = new Socket(bound.getHostName(), bound.getPort());
         for (int i = 0; i < 1000; i++) {
             s.getOutputStream().write("0123456789".getBytes());
             s.getOutputStream().flush();
@@ -181,28 +175,6 @@ public class PortForwardingTest extends BaseTest {
     }
 
     @Test
-    public void testRemoteForwardingNativeNoExplicitPort() throws Exception {
-        ClientSession session = createNativeSession();
-
-        SshdSocketAddress remote = new SshdSocketAddress("0.0.0.0", 0);
-        SshdSocketAddress local = new SshdSocketAddress("localhost", echoPort);
-
-        SshdSocketAddress bound = session.startRemotePortForwarding(remote, 
local);
-
-        Socket s = new Socket(bound.getHostName(), bound.getPort());
-        s.getOutputStream().write("Hello".getBytes());
-        s.getOutputStream().flush();
-        byte[] buf = new byte[1024];
-        int n = s.getInputStream().read(buf);
-        String res = new String(buf, 0, n);
-        assertEquals("Hello", res);
-        s.close();
-
-        session.stopRemotePortForwarding(bound);
-        session.close(false).await();
-    }
-
-    @Test
     public void testLocalForwarding() throws Exception {
         Session session = createSession();
 
@@ -248,9 +220,7 @@ public class PortForwardingTest extends BaseTest {
     public void testLocalForwardingNativeReuse() throws Exception {
         ClientSession session = createNativeSession();
 
-        int port = getFreePort();
-
-        SshdSocketAddress local = new SshdSocketAddress("", port);
+        SshdSocketAddress local = new SshdSocketAddress("", 0);
         SshdSocketAddress remote = new SshdSocketAddress("localhost", 
echoPort);
 
         SshdSocketAddress bound = session.startLocalPortForwarding(local, 
remote);
@@ -266,7 +236,7 @@ public class PortForwardingTest extends BaseTest {
     public void testLocalForwardingNativeBigPayload() throws Exception {
         ClientSession session = createNativeSession();
 
-        SshdSocketAddress local = new SshdSocketAddress("", getFreePort());
+        SshdSocketAddress local = new SshdSocketAddress("", 0);
         SshdSocketAddress remote = new SshdSocketAddress("localhost", 
echoPort);
 
         SshdSocketAddress bound = session.startLocalPortForwarding(local, 
remote);
@@ -290,8 +260,7 @@ public class PortForwardingTest extends BaseTest {
     public void testForwardingChannel() throws Exception {
         ClientSession session = createNativeSession();
 
-        int forwardedPort = getFreePort();
-        SshdSocketAddress local = new SshdSocketAddress("", forwardedPort);
+        SshdSocketAddress local = new SshdSocketAddress("", 0);
         SshdSocketAddress remote = new SshdSocketAddress("localhost", 
echoPort);
 
         ChannelDirectTcpip channel = session.createDirectTcpipChannel(local, 
remote);
@@ -317,7 +286,7 @@ public class PortForwardingTest extends BaseTest {
         session.setPortForwardingR(forwardedPort, "localhost", echoPort);
 
         // 2. Establish a connection through it
-        new Socket("localhost", forwardedPort);
+        Socket s = new Socket("localhost", forwardedPort);
 
         // 3. Simulate the client going away
         rudelyDisconnectJschSession(session);
@@ -348,6 +317,8 @@ public class PortForwardingTest extends BaseTest {
 
         session.delPortForwardingR(forwardedPort);
         session.disconnect();
+
+        s.close();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java 
b/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
index e8170a5..0bb3dba 100644
--- a/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/ProxyTest.java
@@ -42,7 +42,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.sshd.util.Utils.getFreePort;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
@@ -61,18 +60,15 @@ public class ProxyTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        sshPort = getFreePort();
-        echoPort = getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
         sshd.getProperties().put(SshServer.WINDOW_SIZE, "2048");
         sshd.getProperties().put(SshServer.MAX_PACKET_SIZE, "256");
-        sshd.setPort(sshPort);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setTcpipForwardingFilter(new BogusForwardingFilter());
         sshd.start();
+        sshPort = sshd.getPort();
 
         NioSocketAcceptor acceptor = new NioSocketAcceptor();
         acceptor.setHandler(new IoHandlerAdapter() {
@@ -86,7 +82,8 @@ public class ProxyTest extends BaseTest {
             }
         });
         acceptor.setReuseAddress(true);
-        acceptor.bind(new InetSocketAddress(echoPort));
+        acceptor.bind(new InetSocketAddress(0));
+        echoPort = acceptor.getLocalAddress().getPort();
         this.acceptor = acceptor;
 
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/ScpTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/ScpTest.java 
b/sshd-core/src/test/java/org/apache/sshd/ScpTest.java
index 66322b1..0c6679b 100644
--- a/sshd-core/src/test/java/org/apache/sshd/ScpTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/ScpTest.java
@@ -63,16 +63,13 @@ public class ScpTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-//        port = 8102;
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setCommandFactory(new ScpCommandFactory());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port = sshd.getPort();
     }
 
     protected com.jcraft.jsch.Session getJschSession() throws JSchException {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/ServerTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/ServerTest.java 
b/sshd-core/src/test/java/org/apache/sshd/ServerTest.java
index 87b59e5..a1ce149 100644
--- a/sshd-core/src/test/java/org/apache/sshd/ServerTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/ServerTest.java
@@ -63,15 +63,13 @@ public class ServerTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setShellFactory(new TestEchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setSessionFactory(new 
org.apache.sshd.server.session.SessionFactory());
         sshd.start();
+        port = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/SftpTest.java 
b/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
index 2d1b341..6585966 100644
--- a/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
@@ -62,16 +62,14 @@ public class SftpTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setSubsystemFactories(Arrays.<NamedFactory<Command>>asList(new 
SftpSubsystem.Factory()));
         sshd.setCommandFactory(new ScpCommandFactory());
         sshd.setShellFactory(new EchoShellFactory());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.start();
+        port = sshd.getPort();
 
         JSchLogger.init();
         JSch sch = new JSch();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/SinglePublicKeyAuthTest.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/test/java/org/apache/sshd/SinglePublicKeyAuthTest.java 
b/sshd-core/src/test/java/org/apache/sshd/SinglePublicKeyAuthTest.java
index 5341bbb..240ba1f 100644
--- a/sshd-core/src/test/java/org/apache/sshd/SinglePublicKeyAuthTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/SinglePublicKeyAuthTest.java
@@ -57,9 +57,7 @@ public class SinglePublicKeyAuthTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setCommandFactory(new CommandFactory() {
             public Command createCommand(String command) {
@@ -73,6 +71,7 @@ public class SinglePublicKeyAuthTest extends BaseTest {
             }
         });
         sshd.start();
+        port = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/WelcomeBannerTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/WelcomeBannerTest.java 
b/sshd-core/src/test/java/org/apache/sshd/WelcomeBannerTest.java
index cafdc34..9fae759 100644
--- a/sshd-core/src/test/java/org/apache/sshd/WelcomeBannerTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/WelcomeBannerTest.java
@@ -40,15 +40,13 @@ public class WelcomeBannerTest extends BaseTest {
 
     @Before
     public void setUp() throws Exception {
-        port = Utils.getFreePort();
-
         sshd = SshServer.setUpDefaultServer();
-        sshd.setPort(port);
         sshd.setKeyPairProvider(Utils.createTestHostKeyProvider());
         sshd.setPasswordAuthenticator(new BogusPasswordAuthenticator());
         sshd.setPublickeyAuthenticator(new BogusPublickeyAuthenticator());
         sshd.getProperties().put(SshServer.WELCOME_BANNER, WELCOME);
         sshd.start();
+        port = sshd.getPort();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/24a5f7de/sshd-core/src/test/java/org/apache/sshd/util/Utils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/Utils.java 
b/sshd-core/src/test/java/org/apache/sshd/util/Utils.java
index ae91d64..7cdf950 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/Utils.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/Utils.java
@@ -19,6 +19,8 @@
 package org.apache.sshd.util;
 
 import java.io.File;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -39,8 +41,10 @@ public class Utils {
     }
 
     public static int getFreePort() throws Exception {
-        ServerSocket s = new ServerSocket(0);
+        ServerSocket s = new ServerSocket();
         try {
+            s.setReuseAddress(true);
+            s.bind(new InetSocketAddress((InetAddress) null, 0));
             return s.getLocalPort();
         } finally {
             s.close();

Reply via email to