You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2009/02/14 22:02:05 UTC

svn commit: r744567 - in /mina/ftpserver/trunk/core/src: main/java/org/apache/ftpserver/listener/nio/ test/java/org/apache/ftpserver/clienttests/ test/java/org/apache/ftpserver/impl/ test/java/org/apache/ftpserver/util/

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