Author: ngn
Date: Sat Feb 14 21:02:04 2009
New Revision: 744567

URL: http://svn.apache.org/viewvc?rev=744567&view=rev
Log:
Fixing issue where NioListener.getPort() is not updated on resume when using a 
dynamic port (FTPSERVER-275)
Tests now used dynamic ports rather than trying to find a free port. The 
previous algorithm broke down when the test suite was run concurrently on the 
same host
Updated BasePropertiesTest since the previous bad host address actually 
resolved when using OpenDNS.

Modified:
    
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/NioListener.java
 Sat Feb 14 21:02:04 2009
@@ -183,9 +183,9 @@
             } catch (IOException e) {
                 throw new FtpServerConfigurationException("Failed to bind to 
address " + address + ", check configuration", e);
             }
+            
+            updatePort();
     
-            // update the port to the real port bound by the listener
-            setPort(acceptor.getLocalAddress().getPort());
         } catch(RuntimeException e) {
             // clean up if we fail to start
             stop();
@@ -193,6 +193,11 @@
             throw e;
         }
     }
+    
+    private void updatePort() {
+        // update the port to the real port bound by the listener
+        setPort(acceptor.getLocalAddress().getPort());
+    }
 
     /**
      * @see Listener#stop()
@@ -242,6 +247,8 @@
                 LOG.debug("Resuming listener");
                 acceptor.bind(address);
                 LOG.debug("Listener resumed");
+                
+                updatePort();
             } catch (IOException e) {
                 LOG.error("Failed to resume listener", e);
             }

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ClientTestTemplate.java
 Sat Feb 14 21:02:04 2009
@@ -68,8 +68,6 @@
 
     protected DefaultFtpServer server;
 
-    protected int port = -1;
-
     protected FTPClient client;
 
     private static final File USERS_FILE = new File(TestUtil.getBaseDir(),
@@ -90,7 +88,7 @@
 
         ListenerFactory listenerFactory = new ListenerFactory();
 
-        listenerFactory.setPort(port);
+        listenerFactory.setPort(0);
 
         listenerFactory
                 
.setDataConnectionConfiguration(createDataConnectionConfigurationFactory()
@@ -144,8 +142,6 @@
      * @throws Exception
      */
     protected void initServer() throws IOException, Exception {
-        initPort();
-
         // cast to internal class to get access to getters
         server = (DefaultFtpServer) createServer().createServer();
 
@@ -154,6 +150,10 @@
         }
     }
 
+    protected int getListenerPort() {
+        return server.getListener("default").getPort();
+    }
+    
     protected boolean isStartServer() {
         return true;
     }
@@ -186,11 +186,11 @@
 
     protected void doConnect() throws Exception {
         try {
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
         } catch (FTPConnectionClosedException e) {
             // try again
             Thread.sleep(200);
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
         }
     }
 
@@ -198,19 +198,6 @@
         return true;
     }
 
-    /**
-     * Attempts to find a free port or fallback to a default
-     * 
-     * @throws IOException
-     * 
-     * @throws IOException
-     */
-    private void initPort() throws IOException {
-        if (port == -1) {
-            port = TestUtil.findFreePort();
-        }
-    }
-
     protected void cleanTmpDirs() throws IOException {
         if (TEST_TMP_DIR.exists()) {
             IoUtils.delete(TEST_TMP_DIR);

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/ConnectTest.java
 Sat Feb 14 21:02:04 2009
@@ -40,13 +40,13 @@
     }
 
     public void testPort() throws Exception {
-        assertEquals(port, ((NioListener) server.getServerContext()
+        assertEquals(0, ((NioListener) server
                 .getListener("default")).getPort());
 
         server.start();
 
-        assertEquals(port, ((NioListener) server.getServerContext()
-                .getListener("default")).getPort());
+        assertTrue(((NioListener) server
+                .getListener("default")).getPort() > 0);
     }
 
 }

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/InetAddressBlacklistTest.java
 Sat Feb 14 21:02:04 2009
@@ -56,7 +56,7 @@
 
     public void testConnect() throws Exception {
         try {
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
             fail("Must throw");
         } catch (FTPConnectionClosedException e) {
             // OK

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/LoginTest.java
 Sat Feb 14 21:02:04 2009
@@ -152,10 +152,10 @@
         FTPClient client4 = new FTPClient();
 
         try {
-            client1.connect("localhost", port);
-            client2.connect("localhost", port);
-            client3.connect("localhost", port);
-            client4.connect("localhost", port);
+            client1.connect("localhost", getListenerPort());
+            client2.connect("localhost", getListenerPort());
+            client3.connect("localhost", getListenerPort());
+            client4.connect("localhost", getListenerPort());
 
             assertTrue(client1.login(TESTUSER1_USERNAME, TESTUSER_PASSWORD));
             assertTrue(client2.login(TESTUSER1_USERNAME, TESTUSER_PASSWORD));

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/PasvTest.java
 Sat Feb 14 21:02:04 2009
@@ -58,7 +58,7 @@
 
     public void testMultiplePasv() throws Exception {
         for (int i = 0; i < 5; i++) {
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
             client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
             client.pasv();
 
@@ -84,11 +84,11 @@
 
             if (!ip.startsWith("0.")) {
                 try {
-                    client.connect(ip, port);
+                    client.connect(ip, getListenerPort());
                 } catch (FTPConnectionClosedException e) {
                     // try again
                     Thread.sleep(200);
-                    client.connect(ip, port);
+                    client.connect(ip, getListenerPort());
                 }
                 client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
                 client.pasv();

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
 Sat Feb 14 21:02:04 2009
@@ -81,7 +81,7 @@
         
         // let's generate some stats
         FTPClient client1 = new FTPClient();
-        client1.connect("localhost", port);
+        client1.connect("localhost", getListenerPort());
         
         assertTrue(client1.login(ADMIN_USERNAME, ADMIN_PASSWORD));
         assertTrue(client1.makeDirectory("foo"));
@@ -96,12 +96,12 @@
         client1.disconnect();
 
         FTPClient client2 = new FTPClient();
-        client2.connect("localhost", port);
+        client2.connect("localhost", getListenerPort());
 
         assertTrue(client2.login(ANONYMOUS_USERNAME, ANONYMOUS_PASSWORD));
         // done setting up stats
         
-        client.connect("localhost", port);
+        client.connect("localhost", getListenerPort());
         client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
 
         client.sendCommand("SITE STAT");

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SubnetBlacklistTest.java
 Sat Feb 14 21:02:04 2009
@@ -56,7 +56,7 @@
 
     public void testConnect() throws Exception {
         try {
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
             fail("Must throw");
         } catch (FTPConnectionClosedException e) {
             // OK

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SuspendResumeTest.java
 Sat Feb 14 21:02:04 2009
@@ -37,13 +37,13 @@
 
     public void testSuspendResumeServer() throws Exception {
         // connect should work as expected
-        client.connect("localhost", port);
+        client.connect("localhost", getListenerPort());
         client.disconnect();
         
         server.suspend();
 
         try {
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
             fail("Must throw IOException");
         } catch(IOException e) {
             // OK
@@ -54,19 +54,19 @@
         server.resume();
 
         // connect should work again
-        client.connect("localhost", port);
+        client.connect("localhost", getListenerPort());
         client.disconnect();
     }
 
     public void testSuspendResumeListener() throws Exception {
         // connect should work as expected
-        client.connect("localhost", port);
+        client.connect("localhost", getListenerPort());
         client.disconnect();
         
         server.getListener("default").suspend();
 
         try {
-            client.connect("localhost", port);
+            client.connect("localhost", getListenerPort());
             fail("Must throw IOException");
         } catch(IOException e) {
             // OK
@@ -77,7 +77,7 @@
         server.getListener("default").resume();
 
         // connect should work again
-        client.connect("localhost", port);
+        client.connect("localhost", getListenerPort());
         client.disconnect();
     }
     

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpServerTest.java
 Sat Feb 14 21:02:04 2009
@@ -45,7 +45,7 @@
         FtpServerFactory serverFactory = new FtpServerFactory();
         
         ListenerFactory listenerFactory = new ListenerFactory();
-        listenerFactory.setPort(TestUtil.findFreePort());
+        listenerFactory.setPort(0);
         
         // let's create two listeners on the same port, second should not start
      

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java?rev=744567&r1=744566&r2=744567&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/BasePropertiesTest.java
 Sat Feb 14 21:02:04 2009
@@ -449,7 +449,7 @@
         BaseProperties props = new BaseProperties();
         props.setProperty("a1", "1.2.3.4");
         props.setProperty("a2", "localhost");
-        props.setProperty("a4", "1.2.3.4.5");
+        props.setProperty("a4", "1.2.3.4.5.6.7.8.9");
 
         assertEquals(a1, props.getInetAddress("a1"));
         assertEquals(a2, props.getInetAddress("a2"));


Reply via email to