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();
