From 9d1bd29ee527b598f0e91a9d02920eaacb3f767d Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Wed, 07 May 2014 09:27:48 +0000
Subject: [PATCH] OPENDJ-1388 – Implement simple changelog db based on single log file
---
opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 47 insertions(+), 1 deletions(-)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
index 5514ab7..bc3aee3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
@@ -22,13 +22,17 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2014 ForgeRock AS
* Portions Copyright 2013 Manuel Gaupp
*/
package org.opends.server;
import java.io.*;
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.lang.management.ThreadMXBean;
import java.net.*;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
@@ -1926,4 +1930,46 @@
return new ArrayList<T>(Arrays.asList(elems));
}
+ /** Saves a thread dump in a file with the provided id used in file prefix. */
+ public static void generateThreadDump(String id)
+ {
+ String date = new SimpleDateFormat("yyyyMMdd_hhmmss").format(new Date().getTime());
+ BufferedWriter writer = null;
+ try
+ {
+ writer = new BufferedWriter(new FileWriter("/tmp/thread_dump_" + id + "_" + date));
+ writer.write(generateThreadDump());
+ }
+ catch (Exception e)
+ {
+ // do nothing
+ }
+ finally
+ {
+ close(writer);
+ }
+ }
+
+ /** Generates a thread dump programmatically. */
+ public static String generateThreadDump() {
+ final StringBuilder dump = new StringBuilder();
+ final ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
+ final ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(threadMXBean.getAllThreadIds(), 100);
+ for (ThreadInfo threadInfo : threadInfos) {
+ dump.append('"');
+ dump.append(threadInfo.getThreadName());
+ dump.append("\" ");
+ final Thread.State state = threadInfo.getThreadState();
+ dump.append("\n java.lang.Thread.State: ");
+ dump.append(state);
+ final StackTraceElement[] stackTraceElements = threadInfo.getStackTrace();
+ for (final StackTraceElement stackTraceElement : stackTraceElements) {
+ dump.append("\n at ");
+ dump.append(stackTraceElement);
+ }
+ dump.append("\n\n");
+ }
+ return dump.toString();
+}
+
}
--
Gitblit v1.10.0