From 0fc1f555e7538f719213adc9ebcddd1b309a7d5b Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 9 Dec 2015 11:25:18 -0500 Subject: [PATCH] Test FTP Server - Let OS Choose Port --- .../integration/ftp/TestFtpServer.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/TestFtpServer.java b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/TestFtpServer.java index 7a27818553..306bad8710 100644 --- a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/TestFtpServer.java +++ b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/TestFtpServer.java @@ -32,6 +32,7 @@ import org.apache.ftpserver.ftplet.AuthenticationFailedException; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.ftplet.User; import org.apache.ftpserver.ftplet.UserManager; +import org.apache.ftpserver.listener.Listener; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.usermanager.impl.BaseUser; import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission; @@ -44,7 +45,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.integration.file.remote.session.CachingSessionFactory; import org.springframework.integration.file.remote.session.SessionFactory; import org.springframework.integration.ftp.session.DefaultFtpSessionFactory; -import org.springframework.integration.test.util.SocketUtils; /** * Embedded FTP Server for test cases; exposes an associated session factory @@ -57,12 +57,12 @@ import org.springframework.integration.test.util.SocketUtils; @Configuration public class TestFtpServer { - private final int ftpPort = SocketUtils.findAvailableServerSocket(); - private final TemporaryFolder ftpFolder; private final TemporaryFolder localFolder; + private volatile int ftpPort; + private volatile File ftpRootFolder; private volatile File sourceFtpDirectory; @@ -171,11 +171,14 @@ public class TestFtpServer { serverFactory.setUserManager(new TestUserManager(this.ftpRootFolder.getAbsolutePath())); ListenerFactory factory = new ListenerFactory(); - factory.setPort(ftpPort); + factory.setPort(0); serverFactory.addListener("default", factory.createListener()); server = serverFactory.createServer(); server.start(); + + Listener listener = serverFactory.getListeners().values().iterator().next(); + this.ftpPort = listener.getPort(); }