Index: src/test/org/apache/james/test/util/Util.java =================================================================== --- src/test/org/apache/james/test/util/Util.java (revision 392927) +++ src/test/org/apache/james/test/util/Util.java (working copy) @@ -20,12 +20,41 @@ import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.james.smtpserver.*; +/** + * some utilities for James unit testing + */ public class Util { - public static int getRandomNonPrivilegedPort() { - return ((int)( Math.random() * 3000) + 8000); + private static final int PORT_RANGE_START = 8000; // the lowest possible port number assigned for testing + private static final int PORT_RANGE_END = 11000; // the highest possible port number assigned for testing + private static int PORT_LAST_USED = PORT_RANGE_START; + + /** + * assigns a port from the range of test ports + * @return port number + */ + public static int getNonPrivilegedPort() { + return getNextNonPrivilegedPort(); // uses sequential assignment of ports } + /** + * assigns a random port from the range of test ports + * @return port number + */ + protected static int getRandomNonPrivilegedPortInt() { + return ((int)( Math.random() * (PORT_RANGE_END - PORT_RANGE_START) + PORT_RANGE_START)); + } + + /** + * assigns ports sequentially from the range of test ports + * @return port number + */ + protected synchronized static int getNextNonPrivilegedPort() { + PORT_LAST_USED++; + if (PORT_LAST_USED > PORT_RANGE_END) PORT_LAST_USED = PORT_RANGE_START; + return PORT_LAST_USED; + } + public static Configuration getValuedConfiguration(String name, String value) { DefaultConfiguration defaultConfiguration = new DefaultConfiguration(name); defaultConfiguration.setValue(value); Index: src/test/org/apache/james/remotemanager/RemoteManagerTest.java =================================================================== --- src/test/org/apache/james/remotemanager/RemoteManagerTest.java (revision 392927) +++ src/test/org/apache/james/remotemanager/RemoteManagerTest.java (working copy) @@ -56,7 +56,7 @@ public static final String LINE_SEPARATOR = System.getProperties().getProperty("line.separator"); - protected int m_remoteManagerListenerPort = Util.getRandomNonPrivilegedPort(); + protected int m_remoteManagerListenerPort = Util.getNonPrivilegedPort(); protected RemoteManager m_remoteManager; protected RemoteManagerTestConfiguration m_testConfiguration; protected String m_host = "127.0.0.1"; Index: src/test/org/apache/james/pop3server/POP3ServerTest.java =================================================================== --- src/test/org/apache/james/pop3server/POP3ServerTest.java (revision 392927) +++ src/test/org/apache/james/pop3server/POP3ServerTest.java (working copy) @@ -55,7 +55,7 @@ * Tests the org.apache.james.smtpserver.SMTPServer unit */ public class POP3ServerTest extends TestCase { - private int m_pop3ListenerPort = Util.getRandomNonPrivilegedPort(); + private int m_pop3ListenerPort = Util.getNonPrivilegedPort(); private MockMailServer m_mailServer; Index: src/test/org/apache/james/smtpserver/SMTPServerTest.java =================================================================== --- src/test/org/apache/james/smtpserver/SMTPServerTest.java (revision 392927) +++ src/test/org/apache/james/smtpserver/SMTPServerTest.java (working copy) @@ -61,7 +61,7 @@ * Tests the org.apache.james.smtpserver.SMTPServer unit */ public class SMTPServerTest extends TestCase { - private int m_smtpListenerPort = Util.getRandomNonPrivilegedPort(); + private int m_smtpListenerPort = Util.getNonPrivilegedPort(); private MockMailServer m_mailServer; private SMTPTestConfiguration m_testConfiguration; private SMTPServer m_smtpServer;