< 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 >