From 0ad03e0cc72e75bece911fb51815f3452a05d484 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 31 Oct 2006 21:14:32 +0000
Subject: [PATCH] Update the test case framework so that it is now possible to suppress anything written to standard output or standard error while the unit tests are running. This includes direct references to System.out and System.err as well as logging performed through the JDK logger.
---
opends/tests/unit-tests-testng/src/server/org/opends/server/DirectoryServerTestCase.java | 61 ++++++++++++++++++++++++++++++
1 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/DirectoryServerTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/DirectoryServerTestCase.java
index 3fc04d8..a4b7ac8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/DirectoryServerTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/DirectoryServerTestCase.java
@@ -27,8 +27,17 @@
package org.opends.server;
import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeSuite;
import java.io.PrintStream;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Handler;
+import java.util.logging.Logger;
+import java.util.logging.LogManager;
+
+import org.opends.server.types.NullOutputStream;
/**
* This class defines a base test case that should be subclassed by all
@@ -38,12 +47,60 @@
* have them include the class name.
*/
public abstract class DirectoryServerTestCase {
+ // The set of loggers for which the console logger has been disabled.
+ private HashMap<Logger,Handler> disabledLogHandlers;
+
// The print stream to use for printing error messages.
private PrintStream errorStream;
+ // The original System.err print stream.
+ private PrintStream originalSystemErr;
+
+ // The original System.out print stream.
+ private PrintStream originalSystemOut;
+
+ @BeforeSuite
+ public final void suppressOutput() {
+ String suppressStr = System.getProperty("org.opends.test.suppressOutput");
+ if ((suppressStr != null) && suppressStr.equalsIgnoreCase("true"))
+ {
+ System.setOut(NullOutputStream.printStream());
+ System.setErr(NullOutputStream.printStream());
+ errorStream = NullOutputStream.printStream();
+
+ LogManager logManager = LogManager.getLogManager();
+ Enumeration<String> loggerNames = logManager.getLoggerNames();
+ while (loggerNames.hasMoreElements())
+ {
+ String loggerName = loggerNames.nextElement();
+ Logger logger = logManager.getLogger(loggerName);
+ for (Handler h : logger.getHandlers())
+ {
+ if (h instanceof ConsoleHandler)
+ {
+ disabledLogHandlers.put(logger, h);
+ logger.removeHandler(h);
+ break;
+ }
+ }
+ }
+ }
+ }
+
@AfterSuite
public final void shutdownServer() {
TestCaseUtils.shutdownServer("The current test suite has finished.");
+
+ System.setOut(originalSystemOut);
+ System.setErr(originalSystemErr);
+ errorStream = originalSystemErr;
+
+ for (Logger l : disabledLogHandlers.keySet())
+ {
+ Handler h = disabledLogHandlers.get(l);
+ l.addHandler(h);
+ }
+ disabledLogHandlers.clear();
}
/**
@@ -51,6 +108,10 @@
*/
protected DirectoryServerTestCase() {
this.errorStream = System.err;
+
+ disabledLogHandlers = new HashMap<Logger,Handler>();
+ originalSystemOut = System.out;
+ originalSystemErr = System.err;
}
/**
--
Gitblit v1.10.0