mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

boli
19.07.2006 23a954009f2051abbfa38c5695f2a181af1cea2f
Added the ability to run unit tests in parallel on the same machine by randomly
choosing the ports the test server uses. The startServer() method picks 3 unused ports and writes them out to config-changes.ldif. It replaces the tokens "#ldapport#", "#jmxport#", and "#ldapsport#" with the port numbers. The getServerLdapPort etc. methods will return the ports assigned to those listeners.

Fix for issue 657
2 files modified
93 ■■■■ changed files
opends/tests/unit-tests-testng/resource/config-changes.ldif 4 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java 89 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/resource/config-changes.ldif
@@ -1,12 +1,12 @@
dn: cn=LDAP Connection Handler,cn=Connection Handlers,cn=config
changeType: modify
replace: ds-cfg-listen-port
ds-cfg-listen-port: 32389
ds-cfg-listen-port: #ldapport#
dn: cn=JMX Connection Handler,cn=Connection Handlers,cn=config
changeType: modify
replace: ds-cfg-listen-port
ds-cfg-listen-port: 33689
ds-cfg-listen-port: #jmxport#
dn: cn=File-Based Access Logger,cn=Loggers,cn=config
changetype: modify
opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
@@ -30,15 +30,11 @@
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.util.LDIFReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringReader;
import java.io.*;
import java.util.List;
import java.util.ArrayList;
import java.net.ServerSocket;
import java.net.InetSocketAddress;
import org.opends.server.backends.MemoryBackend;
import org.opends.server.config.ConfigException;
@@ -83,6 +79,21 @@
  private static MemoryBackend memoryBackend = null;
  /**
   * The LDAP port the server is bound to on start.
   */
  private static int serverLdapPort;
  /**
   * The JMX port the server is bound to on start.
   */
  private static int serverJmxPort;
  /**
   * The LDAPS port the server is bound to on start.
   */
  private static int serverLdapsPort;
  /**
   * Starts the Directory Server so that it will be available for use while
   * running the unit tests.  This will only actually start the server once, so
   * subsequent attempts to start it will be ignored because it will already be
@@ -138,9 +149,54 @@
                  new File(testConfigDir, "schema"));
    copyDirectory(new File(resourceDir, "MakeLDIF"),
                  new File(testConfigDir, "MakeLDIF"));
    copyFile     (new File(testResourceDir, "config-changes.ldif"),
                  new File(testConfigDir, "config-changes.ldif"));
    // Find some free ports for the listeners and write them to the
    // config-chamges.ldif file.
    ServerSocket serverLdapSocket  = null;
    ServerSocket serverJmxSocket   = null;
    ServerSocket serverLdapsSocket = null;
    serverLdapSocket = new ServerSocket();
    serverLdapSocket.setReuseAddress(true);
    serverLdapSocket.bind(new InetSocketAddress("127.0.0.1", 0));
    serverLdapPort = serverLdapSocket.getLocalPort();
    serverJmxSocket = new ServerSocket();
    serverJmxSocket.setReuseAddress(true);
    serverJmxSocket.bind(new InetSocketAddress("127.0.0.1", 0));
    serverJmxPort = serverJmxSocket.getLocalPort();
    serverLdapsSocket = new ServerSocket();
    serverLdapsSocket.setReuseAddress(true);
    serverLdapsSocket.bind(new InetSocketAddress("127.0.0.1", 0));
    serverLdapsPort = serverLdapsSocket.getLocalPort();
    BufferedReader reader = new BufferedReader(new FileReader(
                                               new File(testResourceDir,
                                                        "config-changes.ldif")
                                              ));
    FileOutputStream outFile = new FileOutputStream(
        new File(testConfigDir, "config-changes.ldif"));
    PrintStream writer = new PrintStream(outFile);
    String line = reader.readLine();
    while(line != null)
    {
      line = line.replaceAll("#ldapport#", String.valueOf(serverLdapPort));
      line = line.replaceAll("#jmxport#", String.valueOf(serverJmxPort));
      line = line.replaceAll("#ldapsport#", String.valueOf(serverLdapsPort));
      writer.println(line);
      line = reader.readLine();
    }
    writer.close();
    outFile.close();
    serverLdapSocket.close();
    serverJmxSocket.close();
    serverLdapsSocket.close();
    // Actually start the server and set a variable that will prevent us from
    // needing to do it again.
@@ -312,7 +368,7 @@
   */
  public static long getServerLdapPort()
  {
    return 32389;
    return serverLdapPort;
  }
  /**
@@ -323,7 +379,18 @@
   */
  public static long getServerJmxPort()
  {
    return 33689;
    return serverJmxPort;
  }
  /**
   * Get teh LDAPS port the test environment Directory Server instance is
   * running on
   *
   * @return The port number.
   */
  public static long getServerLdapsPort()
  {
    return serverLdapsPort;
  }
  /**