< prev index next >

test/jdk/java/lang/management/CompositeData/ThreadInfoCompositeData.java

Print this page

        

*** 27,38 **** * @summary Test ThreadInfo.from to return a valid * ThreadInfo object. Or throw exception if * the input CompositeData is invalid. * @author Mandy Chung * * @build ThreadInfoCompositeData OpenTypeConverter ! * @run main ThreadInfoCompositeData */ import javax.management.openmbean.*; import java.lang.management.LockInfo; --- 27,39 ---- * @summary Test ThreadInfo.from to return a valid * ThreadInfo object. Or throw exception if * the input CompositeData is invalid. * @author Mandy Chung * + * @modules java.management/sun.management * @build ThreadInfoCompositeData OpenTypeConverter ! * @run testng/othervm ThreadInfoCompositeData */ import javax.management.openmbean.*; import java.lang.management.LockInfo;
*** 40,84 **** import java.lang.management.ThreadInfo; import java.util.Arrays; import java.util.Objects; import java.util.stream.Stream; public class ThreadInfoCompositeData { private static String lockClassName = "myClass"; private static int lockIdentityHashCode = 123456; private static String lockName = lockClassName + '@' + Integer.toHexString(lockIdentityHashCode); private static LockInfo lockInfo = new LockInfo(lockClassName, lockIdentityHashCode); ! public static void main(String[] argv) throws Exception { ! // A valid CompositeData is passed to ThreadInfo ! createGoodCompositeData(); ! // A valid CompositeData for JDK 5 ThreadInfo ! // is passed to ThreadInfo ! createV5ThreadInfo(); ! // ThreadInfo of version N can accept lockedMonitors of version >= N ! withNewMonitorInfoCompositeData(); ! ! // An invalid CompositeData is passed to ThreadInfo.from() ! badNameCompositeData(); ! badTypeCompositeData(); ! badMissingCompositeData(); ! withV5StackTraceCompositeData(); ! withInvalidMonitorInfoCompositeData(); ! System.out.println("Test passed"); ! } ! public static void createGoodCompositeData() throws Exception { CompositeData cd = Factory.makeThreadInfoCompositeData(); ThreadInfo info = ThreadInfo.from(cd); checkThreadInfo(info); } /* * An invalid CompositeData with JDK 9 attributes but missing JDK 6 attributes */ public static void badMissingCompositeData() throws Exception { CompositeData cd = Factory.makeCompositeDataMissingV6(); try { ThreadInfo info = ThreadInfo.from(cd); throw new RuntimeException("IllegalArgumentException not thrown"); --- 41,72 ---- import java.lang.management.ThreadInfo; import java.util.Arrays; import java.util.Objects; import java.util.stream.Stream; + import org.testng.annotations.Test; + import static org.testng.Assert.*; + public class ThreadInfoCompositeData { private static String lockClassName = "myClass"; private static int lockIdentityHashCode = 123456; private static String lockName = lockClassName + '@' + Integer.toHexString(lockIdentityHashCode); private static LockInfo lockInfo = new LockInfo(lockClassName, lockIdentityHashCode); ! @Test public static void createGoodCompositeData() throws Exception { CompositeData cd = Factory.makeThreadInfoCompositeData(); ThreadInfo info = ThreadInfo.from(cd); checkThreadInfo(info); } /* * An invalid CompositeData with JDK 9 attributes but missing JDK 6 attributes */ + @Test public static void badMissingCompositeData() throws Exception { CompositeData cd = Factory.makeCompositeDataMissingV6(); try { ThreadInfo info = ThreadInfo.from(cd); throw new RuntimeException("IllegalArgumentException not thrown");
*** 90,99 **** --- 78,88 ---- /* * Current version of ThreadInfo but an older version of StackTraceElement */ + @Test public static void withV5StackTraceCompositeData() throws Exception { CompositeData cd = Factory.makeThreadInfoWithV5StackTrace(); try { ThreadInfo info = ThreadInfo.from(cd); throw new RuntimeException("IllegalArgumentException not thrown");
*** 102,111 **** --- 91,101 ---- /* * Current version of ThreadInfo but an older version of MonitorInfo * and the value of "lockedStackFrame" attribute is null. */ + @Test public static void withInvalidMonitorInfoCompositeData() throws Exception { CompositeData cd = Factory.makeThreadInfoWithIncompatibleMonitorInfo(); // verify MonitorInfo is valid CompositeData[] monitors = (CompositeData[])cd.get("lockedMonitors");
*** 126,150 **** --- 116,154 ---- } /* * ThreadInfo of version N can accept lockedMonitors of version >= N */ + @Test public static void withNewMonitorInfoCompositeData() throws Exception { CompositeData cd = Factory.makeThreadInfoWithNewMonitorInfo(); ThreadInfo info = ThreadInfo.from(cd); checkThreadInfo(info); } /* * Test CompositeData representing JDK 5 ThreadInfo */ + @Test public static void createV5ThreadInfo() throws Exception { CompositeData cd = Factory.makeThreadInfoV5CompositeData(); ThreadInfo info = ThreadInfo.from(cd); checkThreadInfoV5(info); } + /* + * Test ThreadInfoCompositeData.toCompositeData + */ + @Test + public static void internalToCompositeData() throws Exception { + CompositeData cd = Factory.makeThreadInfoCompositeData(); + ThreadInfo info = ThreadInfo.from(cd); + cd = sun.management.ThreadInfoCompositeData.toCompositeData(info); + info = ThreadInfo.from(cd); + checkThreadInfo(info); + } + static void checkThreadInfoV5(ThreadInfo info) { Object[] values = Factory.VALUES; if (info.getThreadId() != ((Long) values[THREAD_ID]).longValue()) { throw new RuntimeException("Thread Id = " + info.getThreadId() +
*** 260,277 **** --- 264,283 ---- li.getIdentityHashCode() + " expected = " + lockInfo.getIdentityHashCode()); } } + @Test public static void badNameCompositeData() throws Exception { CompositeData cd = Factory.makeCompositeDataWithBadNames(); try { ThreadInfo info = ThreadInfo.from(cd); throw new RuntimeException("IllegalArgumentException not thrown"); } catch (IllegalArgumentException e) { } } + @Test public static void badTypeCompositeData() throws Exception { CompositeData cd = Factory.makeCompositeDataWithBadTypes(); try { ThreadInfo info = ThreadInfo.from(cd);
*** 298,308 **** private static final int LOCKED_SYNCS = 15; // JDK 9 ThreadInfo attributes private static final int DAEMON = 16; private static final int PRIORITY = 17; ! static class Factory { static final CompositeType STE_COMPOSITE_TYPE; static final CompositeType LOCK_INFO_COMPOSITE_TYPE; static final CompositeType MONITOR_INFO_COMPOSITE_TYPE; static final ArrayType STE_ARRAY_COMPOSITE_TYPE; --- 304,314 ---- private static final int LOCKED_SYNCS = 15; // JDK 9 ThreadInfo attributes private static final int DAEMON = 16; private static final int PRIORITY = 17; ! private static class Factory { static final CompositeType STE_COMPOSITE_TYPE; static final CompositeType LOCK_INFO_COMPOSITE_TYPE; static final CompositeType MONITOR_INFO_COMPOSITE_TYPE; static final ArrayType STE_ARRAY_COMPOSITE_TYPE;
< prev index next >