From 0de6858e9548e84aebc148747be92a811ba33636 Mon Sep 17 00:00:00 2001
From: vharseko <vharseko@3a-systems.ru>
Date: Wed, 12 Jul 2023 16:41:15 +0000
Subject: [PATCH] Restore IT test for server-legacy and fix many errors (#279)
---
opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java | 123 +++++++++++++++++++++++++++-------------
1 files changed, 83 insertions(+), 40 deletions(-)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java b/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
index 39f127c..3a42c32 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/TestCaseUtils.java
@@ -22,7 +22,7 @@
import static org.forgerock.opendj.server.embedded.EmbeddedDirectoryServer.manageEmbeddedDirectoryServer;
import static org.opends.server.loggers.TextAccessLogPublisher.getStartupTextAccessPublisher;
-import static org.opends.server.loggers.TextErrorLogPublisher.getToolStartupTextErrorPublisher;
+import static org.opends.server.loggers.TextErrorLogPublisher.*;
import static org.opends.server.loggers.TextHTTPAccessLogPublisher.getStartupTextHTTPAccessPublisher;
import static org.opends.server.types.NullOutputStream.nullPrintStream;
import static org.opends.server.util.ServerConstants.PROPERTY_RUNNING_UNIT_TESTS;
@@ -56,6 +56,7 @@
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
@@ -116,7 +117,6 @@
import org.opends.server.util.BuildVersion;
import org.opends.server.util.DynamicConstants;
import org.opends.server.util.LDIFReader;
-import org.testng.Assert;
import com.forgerock.opendj.util.OperatingSystem;
@@ -227,7 +227,7 @@
private static int serverRestarts;
/** The paths to directories and files used in the tests. */
- private static TestPaths paths = new TestPaths();
+ public static TestPaths paths = new TestPaths();
/** The ports used in the tests. */
private static TestPorts ports;
@@ -250,18 +250,19 @@
*/
public static void startFakeServer() throws Exception
{
+ DirectoryServer.bootstrapClient();
schemaBeforeStartingFakeServer = DirectoryServer.getInstance().getServerContext().getSchema();
DirectoryServer.getInstance().getServerContext().getSchemaHandler().updateSchema(Schema.getDefaultSchema());
}
- static class TestPaths
+ public static class TestPaths
{
final String buildRoot;
final File buildDir;
final File unitRoot;
final String installedRoot;
final File testInstallRoot;
- final File testInstanceRoot;
+ public final File testInstanceRoot;
final File testConfigDir;
final File configFile;
final File testSrcRoot;
@@ -272,7 +273,7 @@
buildRoot = System.getProperty(PROPERTY_BUILD_ROOT,System.getProperty("user.dir"));
String buildDirStr = System.getProperty(PROPERTY_BUILD_DIR, buildRoot + File.separator + "target");
buildDir = new File(buildDirStr);
- unitRoot = new File(buildDir, "unit-tests");
+ unitRoot = new File(buildDir, "unit-tests"+((testName!=null)?"/"+testName:""));
if (installedRoot == null)
{
testInstallRoot = new File(unitRoot, "package-install");
@@ -340,7 +341,7 @@
private static void initializePortsAndServer() throws Exception
{
ports = new TestPorts();
- hostname = InetAddress.getLocalHost().getHostName();
+ hostname = "127.0.0.1";
server = manageEmbeddedDirectoryServer(
configParams()
.serverRootDirectory(paths.testInstallRoot.getPath())
@@ -355,7 +356,10 @@
System.out,
System.err);
}
-
+ public static void cleanTestPath() throws IOException {
+ deleteDirectory(paths.unitRoot);
+ }
+
/**
* Setup the directory server in separate install root directory and instance root directory.
* After this method the directory server should be ready to be started.
@@ -366,6 +370,7 @@
String cleanupRequiredString = System.getProperty(PROPERTY_CLEANUP_REQUIRED, "true");
boolean cleanupRequired = !"false".equalsIgnoreCase(cleanupRequiredString);
+ //originalSystemErr.println("start "+paths.unitRoot);
if (cleanupRequired) {
deleteDirectory(paths.testInstallRoot);
deleteDirectory(paths.testInstanceRoot);
@@ -403,7 +408,6 @@
File unitClassesDir = new File(paths.unitRoot, "classes");
File libDir = new File(paths.buildDir.getPath() + "/package/opendj/lib");
File upgradeDir = new File(paths.buildDir.getPath() + "/package/opendj/template/config/upgrade");
- System.out.println("libDir=" + libDir);
File resourceDir = new File(paths.buildRoot, "resource");
File testResourceDir = new File(paths.testSrcRoot, "resource");
// Set the class variable
@@ -533,6 +537,9 @@
// Enable more verbose error logger.
ErrorLogger.getInstance().addLogPublisher(
(ErrorLogPublisher) getToolStartupTextErrorPublisher(ERROR_TEXT_WRITER));
+
+ ErrorLogger.getInstance().addLogPublisher(
+ (ErrorLogPublisher) getServerStartupTextErrorPublisher(ERROR_TEXT_WRITER));
DebugLogger.getInstance().addPublisherIfRequired(DEBUG_TEXT_WRITER);
}
@@ -712,12 +719,31 @@
private static ServerSocket bindPort(int port)
throws IOException
{
- ServerSocket serverLdapSocket = new ServerSocket();
+ ServerSocket serverLdapSocket;
+
+ serverLdapSocket = new ServerSocket();
serverLdapSocket.setReuseAddress(true);
serverLdapSocket.bind(new InetSocketAddress(port));
+ serverLdapSocket.close();
+
+ serverLdapSocket = new ServerSocket();
+ serverLdapSocket.setReuseAddress(true);
+ serverLdapSocket.bind(new InetSocketAddress("localhost",port));
+ serverLdapSocket.close();
+
+
+ serverLdapSocket = new ServerSocket();
+ serverLdapSocket.setReuseAddress(true);
+ serverLdapSocket.bind(new InetSocketAddress(InetAddress.getLocalHost(),port));
+ serverLdapSocket.close();
+
+ serverLdapSocket = new ServerSocket();
+ serverLdapSocket.setReuseAddress(true);
+ serverLdapSocket.bind(new InetSocketAddress("127.0.0.1",port));
return serverLdapSocket;
}
+ static int port = 30000;
/**
* Find and binds to a free server socket port on the local host. Avoid allocating ephemeral ports since these may
* be used by client applications such as dsconfig. Instead scan through ports starting from a reasonably high number
@@ -728,20 +754,17 @@
*
* @throws IOException in case of underlying exception.
*/
- public static ServerSocket bindFreePort() throws IOException
+ public synchronized static ServerSocket bindFreePort() throws IOException
{
- for (int port = 10000; port < 32768; port++)
- {
- try
- {
- return bindPort(port);
- }
- catch (BindException e)
- {
- // Try next port.
- }
- }
- throw new BindException("Unable to bind to a free port");
+ for (; port > 15000;)
+ {
+ try
+ {
+ return bindPort(port--);
+ }
+ catch (BindException e){}
+ }
+ throw new BindException("Unable to bind to a free port");
}
/**
@@ -773,15 +796,15 @@
final int[] ports = new int[nb];
for (int i = 0; i < nb; i++)
{
- final ServerSocket socket = bindFreePort();
- sockets[i] = socket;
- ports[i] = socket.getLocalPort();
+ sockets[i] = bindFreePort();
+ ports[i] = sockets[i].getLocalPort();
}
+ close(sockets);
return ports;
}
finally
{
- close(sockets);
+
}
}
@@ -1379,7 +1402,8 @@
*/
public static void configureSocket(Socket s) throws Exception
{
- s.setSoTimeout(60 * 1000);
+ s.setReuseAddress(true);
+ s.setSoTimeout(60 * 1000);
}
/**
@@ -1642,12 +1666,20 @@
*/
public static void appendLogsContents(StringBuilder logsContents)
{
- appendMessages(logsContents, TestCaseUtils.ACCESS_TEXT_WRITER, "Access Log Messages:");
appendMessages(logsContents, TestCaseUtils.ERROR_TEXT_WRITER, "Error Log Messages:");
appendMessages(logsContents, TestCaseUtils.DEBUG_TEXT_WRITER, "Debug Log Messages:");
-
+ appendMessages(logsContents, TestCaseUtils.ACCESS_TEXT_WRITER, "Access Log Messages:");
+
appendStreamContent(logsContents, TestCaseUtils.getSystemOutContents(), "System.out");
appendStreamContent(logsContents, TestCaseUtils.getSystemErrContents(), "System.err");
+
+ for (final File logFile : Arrays.asList(new File(paths.testInstanceRoot, "logs").listFiles())) {
+ try {
+ appendStreamContent(logsContents, readFile(logFile.getPath()), logFile.getPath());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
private static void appendStreamContent(StringBuilder out, String content, String name)
@@ -1676,16 +1708,20 @@
}
public static synchronized void unsupressOutput() {
- System.setOut(originalSystemOut);
- System.setErr(originalSystemErr);
-
- for (Map.Entry<Logger, Handler> entry : disabledLogHandlers.entrySet())
- {
- Logger l = entry.getKey();
- Handler h = entry.getValue();
- l.addHandler(h);
- }
- disabledLogHandlers.clear();
+ String suppressStr = System.getProperty("org.opends.test.suppressOutput");
+ if ("true".equalsIgnoreCase(suppressStr))
+ {
+ System.setOut(originalSystemOut);
+ System.setErr(originalSystemErr);
+
+ for (Map.Entry<Logger, Handler> entry : disabledLogHandlers.entrySet())
+ {
+ Logger l = entry.getKey();
+ Handler h = entry.getValue();
+ l.addHandler(h);
+ }
+ disabledLogHandlers.clear();
+ }
}
/** Read the contents of a file and return it as a String. */
@@ -1968,4 +2004,11 @@
System.setIn(stdin);
}
}
+
+ static String testName=null;
+ public static void setTestName(String name) {
+ testName=name;
+ paths=new TestPaths();
+ //originalSystemErr.println(paths.unitRoot);
+ }
}
--
Gitblit v1.10.0