diff options
author | Andrey Loskutov | 2021-06-14 08:40:39 +0000 |
---|---|---|
committer | Andrey Loskutov | 2021-06-14 09:36:30 +0000 |
commit | 237fca83451403f4b4cdb10b6e7814e607e28d99 (patch) | |
tree | 95f65eda58be04916da3046ea25a01610a72c413 /bundles/org.eclipse.test.performance | |
parent | 0905fa35c4671117d43e752f735053fa27815295 (diff) | |
download | eclipse.platform.releng-237fca83451403f4b4cdb10b6e7814e607e28d99.tar.gz eclipse.platform.releng-237fca83451403f4b4cdb10b6e7814e607e28d99.tar.xz eclipse.platform.releng-237fca83451403f4b4cdb10b6e7814e607e28d99.zip |
Bug 574180 - Improve
org.eclipse.test.TracingSuite.DumpTask.dumpStackTraces()
Use similar (better) format from
org.eclipse.jdt.core.tests.model.FreezeMonitor.expectCompletionIn(long)
Change-Id: Ia397d0a52f36ed370c43a5959ca931e0bad52b10
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.releng/+/181909
Tested-by: Platform Bot <platform-bot@eclipse.org>
Diffstat (limited to 'bundles/org.eclipse.test.performance')
-rw-r--r-- | bundles/org.eclipse.test.performance/src/org/eclipse/test/TracingSuite.java | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/bundles/org.eclipse.test.performance/src/org/eclipse/test/TracingSuite.java b/bundles/org.eclipse.test.performance/src/org/eclipse/test/TracingSuite.java index 64ee9d37..a1716f3a 100644 --- a/bundles/org.eclipse.test.performance/src/org/eclipse/test/TracingSuite.java +++ b/bundles/org.eclipse.test.performance/src/org/eclipse/test/TracingSuite.java @@ -19,13 +19,14 @@ import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadInfo; +import java.lang.management.ThreadMXBean; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; -import java.util.Map; -import java.util.Map.Entry; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ConcurrentHashMap; @@ -233,19 +234,29 @@ public class TracingSuite extends Suite { System.gc(); stream.format("freeMemory (after GC): %11d\n", Runtime.getRuntime().freeMemory()); - Thread main = null; - Map<Thread, StackTraceElement[]> stackTraces = Thread.getAllStackTraces(); - for (Entry<Thread, StackTraceElement[]> entry : stackTraces.entrySet()) { - String name = entry.getKey().getName(); + ThreadMXBean threadStuff = ManagementFactory.getThreadMXBean(); + ThreadInfo[] allThreads = threadStuff.getThreadInfo(threadStuff.getAllThreadIds(), 200); + for (ThreadInfo threadInfo : allThreads) { + stream.print("\""); + stream.print(threadInfo.getThreadName()); + stream.print("\": "); + stream.print(threadInfo.getThreadState()); + stream.println(); + final StackTraceElement[] elements = threadInfo.getStackTrace(); + for (StackTraceElement element : elements) { + stream.print(" "); + stream.print(element); + stream.println(); + } + stream.println(); + } + for (Thread t : Thread.getAllStackTraces().keySet()) { + String name = t.getName(); if ("main".equals(name)) { - main = entry.getKey(); + return t; } - StackTraceElement[] stack = entry.getValue(); - ThreadDump exception = new ThreadDump("for thread \"" + name + "\""); - exception.setStackTrace(stack); - exception.printStackTrace(stream); } - return main; + return null; } } |