6961894: TEST_BUG: jdk_lang tests fail in samevm mode
Fixed jdk_lang tests to run in samevm mode or mark to run in othervm Reviewed-by: alanb
This commit is contained in:
parent
0b946fc36e
commit
0a801a25db
@ -337,68 +337,12 @@ java/io/StreamTokenizer/Comment.java generic-all
|
||||
|
||||
# jdk_lang
|
||||
|
||||
# Some of these tests (like java/lang/management) may just need to be marked
|
||||
# othervm, but that is partially speculation.
|
||||
|
||||
# Times out on solaris 10 sparc
|
||||
java/lang/ClassLoader/Assert.java generic-all
|
||||
|
||||
# Fedora 9 X64, RuntimeException: MyThread expected to be blocked on lock, but got null
|
||||
java/lang/management/ThreadMXBean/ThreadStateTest.java generic-all
|
||||
|
||||
# RuntimeException: Uptime of the JVM is more than 30 minutes (32 minutes).
|
||||
java/lang/management/RuntimeMXBean/UpTime.java generic-all
|
||||
|
||||
# Solaris sparc, samevm, java.lang.Exception: Read from closed pipe hangs
|
||||
java/lang/Runtime/exec/SleepyCat.java generic-all
|
||||
|
||||
# Fedora 9 32bit, -client, samevm, Error while cleaning up threads after test
|
||||
java/lang/management/ThreadMXBean/Locks.java generic-all
|
||||
|
||||
# Need to be marked othervm, or changed to be samevm safe
|
||||
java/lang/management/ClassLoadingMXBean/LoadCounts.java generic-all
|
||||
java/lang/management/ManagementFactory/MBeanServerMXBeanUnsupportedTest.java generic-all
|
||||
java/lang/management/ManagementFactory/MXBeanProxyTest.java generic-all
|
||||
java/lang/management/ManagementFactory/ThreadMXBeanProxy.java generic-all
|
||||
java/lang/management/MemoryMXBean/CollectionUsageThreshold.java generic-all
|
||||
java/lang/management/MemoryMXBean/GetMBeanInfo.java generic-all
|
||||
java/lang/management/MemoryMXBean/LowMemoryTest.java generic-all
|
||||
java/lang/management/MemoryMXBean/MemoryManagement.java generic-all
|
||||
java/lang/management/MemoryMXBean/MemoryTest.java generic-all
|
||||
java/lang/management/MemoryMXBean/Pending.java generic-all
|
||||
|
||||
# Problematic on all platforms (even as othervm)
|
||||
java/lang/management/MemoryMXBean/ResetPeakMemoryUsage.java generic-all
|
||||
|
||||
# Causes jtreg exit samevm issues due to non-String object in system properties
|
||||
java/lang/management/RuntimeMXBean/GetSystemProperties.java generic-all
|
||||
|
||||
# Need to be marked othervm, or changed to be samevm safe
|
||||
java/lang/management/RuntimeMXBean/PropertiesTest.java generic-all
|
||||
java/lang/management/ThreadMXBean/AllThreadIds.java generic-all
|
||||
java/lang/management/ThreadMXBean/EnableTest.java generic-all
|
||||
java/lang/management/ThreadMXBean/FindMonitorDeadlock.java generic-all
|
||||
java/lang/management/ThreadMXBean/LockingThread.java generic-all
|
||||
java/lang/management/ThreadMXBean/MonitorDeadlock.java generic-all
|
||||
java/lang/management/ThreadMXBean/MyOwnSynchronizer.java generic-all
|
||||
java/lang/management/ThreadMXBean/SharedSynchronizer.java generic-all
|
||||
java/lang/management/ThreadMXBean/SynchronizerLockingThread.java generic-all
|
||||
java/lang/management/ThreadMXBean/ThreadCounts.java generic-all
|
||||
|
||||
# Need to be marked othervm, or changed to be samevm safe
|
||||
java/lang/reflect/Proxy/Boxing.java generic-all
|
||||
java/lang/reflect/Proxy/ClassRestrictions.java generic-all
|
||||
java/lang/reflect/Proxy/returnTypes/Test.java generic-all
|
||||
|
||||
# Need to be marked othervm, or changed to be samevm safe
|
||||
java/lang/Runtime/exec/LotsOfOutput.java generic-all
|
||||
java/lang/System/ExitFinalizersAndJIT.java generic-all
|
||||
java/lang/System/finalization/FinThreads.java generic-all
|
||||
java/lang/Thread/GenerifyStackTraces.java generic-all
|
||||
java/lang/Thread/StackTraces.java generic-all
|
||||
java/lang/ThreadGroup/Daemon.java generic-all
|
||||
java/lang/ThreadGroup/NullThreadName.java generic-all
|
||||
|
||||
# Times out on solaris sparc -server
|
||||
java/lang/ThreadLocal/MemoryLeak.java solaris-all
|
||||
|
||||
@ -415,9 +359,6 @@ java/lang/ClassLoader/deadlock/TestCrossDelegate.sh generic-all
|
||||
# Access denied messages on windows/mks, filed 6954450
|
||||
sun/management/jmxremote/bootstrap/RmiSslNoKeyStoreTest.sh windows-all
|
||||
|
||||
# Filed 6951284, fails on linux 64bit Fedora 9, peak thread count differences
|
||||
java/lang/management/ThreadMXBean/ResetPeakThreadCount.java generic-all
|
||||
|
||||
# Started failing on linux and solaris (filed 6950927)
|
||||
# com.sun.tools.attach.AttachNotSupportedException:
|
||||
# Unable to open socket file:
|
||||
@ -1166,12 +1107,6 @@ tools/jar/index/MetaInf.java windows-all
|
||||
# 11 separate stacktraces created... file reuse problem?
|
||||
java/util/zip/ZipFile/ReadLongZipFileName.java generic-all
|
||||
|
||||
# Recent failure on all platforms
|
||||
sun/util/resources/TimeZone/Bug6317929.java generic-all
|
||||
|
||||
# Fails with -ea -esa on all platforms with Assertion error
|
||||
java/util/ResourceBundle/Test4300693.java generic-all
|
||||
|
||||
# Failing on all -client 32bit platforms starting with b77? See 6908348.
|
||||
java/util/concurrent/BlockingQueue/CancelledProducerConsumerLoops.java generic-all
|
||||
|
||||
@ -1198,10 +1133,6 @@ java/util/EnumSet/EnumSetBash.java solaris-sparc
|
||||
# Failing to close an input stream? "foo", triggers samevm windows failures
|
||||
java/util/Formatter/Constructors.java generic-all
|
||||
|
||||
# Need to be marked othervm, or changed to be samevm safe
|
||||
java/util/Locale/Bug4175998Test.java generic-all
|
||||
java/util/Locale/LocaleTest.java generic-all
|
||||
|
||||
# Need to be marked othervm, or changed to be samevm safe
|
||||
java/util/WeakHashMap/GCDuringIteration.java generic-all
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
@summary runFinalizersOnExit(true) causes JIT to be unloaded and
|
||||
crashes the VM. Interim fix for 1.2 beta4 -- don't unload
|
||||
native libraries loaded by system classes.
|
||||
@run main/othervm ExitFinalizersAndJIT
|
||||
*/
|
||||
|
||||
public class ExitFinalizersAndJIT {
|
||||
|
@ -155,7 +155,7 @@ public class GenerifyStackTraces {
|
||||
printStack(t, stack);
|
||||
}
|
||||
int frame = stack.length - 1;
|
||||
for (int i = 0; i < depth; i++) {
|
||||
for (int i = 0; i < depth && frame >= 0; i++) {
|
||||
if (! stack[frame].getMethodName().equals(methodNames[i])) {
|
||||
throw new RuntimeException("Expected " + methodNames[i] +
|
||||
" in frame " + frame + " but got " +
|
||||
|
@ -159,7 +159,7 @@ public class StackTraces {
|
||||
printStack(t, stack);
|
||||
}
|
||||
int frame = stack.length - 1;
|
||||
for (int i = 0; i < depth; i++) {
|
||||
for (int i = 0; i < depth && frame >= 0; i++) {
|
||||
if (! stack[frame].getMethodName().equals(methodNames[i])) {
|
||||
throw new RuntimeException("Expected " + methodNames[i] +
|
||||
" in frame " + frame + " but got " +
|
||||
|
@ -118,9 +118,21 @@ class Chain {
|
||||
}
|
||||
class Slave {}
|
||||
|
||||
class LeftHand extends ClassLoader {}
|
||||
class RightHand extends ClassLoader {}
|
||||
class LeftHand extends ClassLoader {
|
||||
public LeftHand() {
|
||||
super(LeftHand.class.getClassLoader());
|
||||
}
|
||||
}
|
||||
class RightHand extends ClassLoader {
|
||||
public RightHand() {
|
||||
super(RightHand.class.getClassLoader());
|
||||
}
|
||||
}
|
||||
class Body {}
|
||||
|
||||
class LoaderForTwoInstances extends ClassLoader {}
|
||||
class LoaderForTwoInstances extends ClassLoader {
|
||||
public LoaderForTwoInstances() {
|
||||
super(LoaderForTwoInstances.class.getClassLoader());
|
||||
}
|
||||
}
|
||||
class TheSameClass {}
|
||||
|
@ -25,6 +25,7 @@
|
||||
* @test
|
||||
* @bug 5024531
|
||||
* @summary Basic Test for ManagementFactory.newPlatformMXBean().
|
||||
* @run main/othervm MXBeanProxyTest
|
||||
* @author Mandy Chung
|
||||
*/
|
||||
import javax.management.*;
|
||||
|
@ -41,9 +41,9 @@ import javax.management.openmbean.CompositeData;
|
||||
|
||||
public class CollectionUsageThreshold {
|
||||
private static MemoryMXBean mm = ManagementFactory.getMemoryMXBean();
|
||||
private static List pools = ManagementFactory.getMemoryPoolMXBeans();
|
||||
private static List managers = ManagementFactory.getMemoryManagerMXBeans();
|
||||
private static Map result = new HashMap();
|
||||
private static List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans();
|
||||
private static List<MemoryManagerMXBean> managers = ManagementFactory.getMemoryManagerMXBeans();
|
||||
private static Map<String, PoolRecord> result = new HashMap<>();
|
||||
private static boolean trace = false;
|
||||
private static boolean testFailed = false;
|
||||
private static final int EXPECTED_NUM_POOLS = 2;
|
||||
@ -119,8 +119,7 @@ public class CollectionUsageThreshold {
|
||||
}
|
||||
|
||||
// Find the Old generation which supports low memory detection
|
||||
for (ListIterator iter = pools.listIterator(); iter.hasNext(); ) {
|
||||
MemoryPoolMXBean p = (MemoryPoolMXBean) iter.next();
|
||||
for (MemoryPoolMXBean p : pools) {
|
||||
MemoryUsage u = p.getUsage();
|
||||
if (p.isUsageThresholdSupported() && p.isCollectionUsageThresholdSupported()) {
|
||||
PoolRecord pr = new PoolRecord(p);
|
||||
@ -134,25 +133,30 @@ public class CollectionUsageThreshold {
|
||||
throw new RuntimeException("Unexpected number of selected pools");
|
||||
}
|
||||
|
||||
checker = new Checker("Checker thread");
|
||||
checker.setDaemon(true);
|
||||
checker.start();
|
||||
try {
|
||||
checker = new Checker("Checker thread");
|
||||
checker.setDaemon(true);
|
||||
checker.start();
|
||||
|
||||
for (Iterator iter = result.values().iterator(); iter.hasNext();) {
|
||||
PoolRecord pr = (PoolRecord) iter.next();
|
||||
pr.getPool().setCollectionUsageThreshold(THRESHOLD);
|
||||
System.out.println("Collection usage threshold of " +
|
||||
pr.getPool().getName() + " set to " + THRESHOLD);
|
||||
}
|
||||
for (PoolRecord pr : result.values()) {
|
||||
pr.getPool().setCollectionUsageThreshold(THRESHOLD);
|
||||
System.out.println("Collection usage threshold of " +
|
||||
pr.getPool().getName() + " set to " + THRESHOLD);
|
||||
}
|
||||
|
||||
SensorListener listener = new SensorListener();
|
||||
NotificationEmitter emitter = (NotificationEmitter) mm;
|
||||
emitter.addNotificationListener(listener, null, null);
|
||||
SensorListener listener = new SensorListener();
|
||||
NotificationEmitter emitter = (NotificationEmitter) mm;
|
||||
emitter.addNotificationListener(listener, null, null);
|
||||
|
||||
mm.setVerbose(true);
|
||||
for (int i = 0; i < NUM_GCS; i++) {
|
||||
invokeGC();
|
||||
checker.waitForCheckResult();
|
||||
for (int i = 0; i < NUM_GCS; i++) {
|
||||
invokeGC();
|
||||
checker.waitForCheckResult();
|
||||
}
|
||||
} finally {
|
||||
// restore the default
|
||||
for (PoolRecord pr : result.values()) {
|
||||
pr.getPool().setCollectionUsageThreshold(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (testFailed)
|
||||
@ -168,8 +172,7 @@ public class CollectionUsageThreshold {
|
||||
mm.gc();
|
||||
|
||||
if (trace) {
|
||||
for (Iterator iter = result.values().iterator(); iter.hasNext();) {
|
||||
PoolRecord pr = (PoolRecord) iter.next();
|
||||
for (PoolRecord pr : result.values()) {
|
||||
System.out.println("Usage after GC for: " + pr.getPool().getName());
|
||||
MemoryUtil.printMemoryUsage(pr.getPool().getUsage());
|
||||
}
|
||||
@ -200,8 +203,7 @@ public class CollectionUsageThreshold {
|
||||
}
|
||||
}
|
||||
private void checkResult() {
|
||||
for (Iterator iter = result.values().iterator(); iter.hasNext();) {
|
||||
PoolRecord pr = (PoolRecord) iter.next();
|
||||
for (PoolRecord pr : result.values()) {
|
||||
if (pr.getListenerInvokedCount() != numGCs) {
|
||||
throw new RuntimeException("Listeners invoked count = " +
|
||||
pr.getListenerInvokedCount() + " expected to be " +
|
||||
|
@ -31,7 +31,7 @@
|
||||
* @author Mandy Chung
|
||||
*
|
||||
* @build LowMemoryTest MemoryUtil
|
||||
* @run main/timeout=600 LowMemoryTest
|
||||
* @run main/othervm/timeout=600 LowMemoryTest
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
|
@ -31,7 +31,7 @@
|
||||
* @author Mandy Chung
|
||||
*
|
||||
* @build MemoryManagement MemoryUtil
|
||||
* @run main/timeout=600 MemoryManagement
|
||||
* @run main/othervm/timeout=600 MemoryManagement
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
|
@ -62,9 +62,21 @@ public class Pending {
|
||||
trace = true;
|
||||
}
|
||||
|
||||
// Turn on verbose:gc to track GC
|
||||
mbean.setVerbose(true);
|
||||
try {
|
||||
if (trace) {
|
||||
// Turn on verbose:gc to track GC
|
||||
mbean.setVerbose(true);
|
||||
}
|
||||
test();
|
||||
} finally {
|
||||
if (trace) {
|
||||
mbean.setVerbose(false);
|
||||
}
|
||||
}
|
||||
System.out.println("Test passed.");
|
||||
}
|
||||
|
||||
private static void test() throws Exception {
|
||||
// Clean the memory and remove all objects that are pending
|
||||
// finalization
|
||||
System.gc();
|
||||
@ -130,7 +142,6 @@ public class Pending {
|
||||
+ " end = " + snapshot);
|
||||
}
|
||||
|
||||
System.out.println("Test passed.");
|
||||
}
|
||||
|
||||
private static void checkFinalizerCount(int expectedTotal, int curFinalized)
|
||||
|
@ -28,7 +28,7 @@
|
||||
* @author Mandy Chung
|
||||
*
|
||||
* @build ResetPeakMemoryUsage MemoryUtil
|
||||
* @run main ResetPeakMemoryUsage
|
||||
* @run main/othervm ResetPeakMemoryUsage
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
|
@ -37,11 +37,23 @@ import java.util.*;
|
||||
public class ThresholdTest {
|
||||
public static void main(String args[]) throws Exception {
|
||||
List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans();
|
||||
for (MemoryPoolMXBean p : pools) {
|
||||
// verify if isUsageThresholdExceeded() returns correct value
|
||||
checkUsageThreshold(p);
|
||||
// verify if isCollectionUsageThresholdExceeded() returns correct value
|
||||
checkCollectionUsageThreshold(p);
|
||||
try {
|
||||
for (MemoryPoolMXBean p : pools) {
|
||||
// verify if isUsageThresholdExceeded() returns correct value
|
||||
checkUsageThreshold(p);
|
||||
// verify if isCollectionUsageThresholdExceeded() returns correct value
|
||||
checkCollectionUsageThreshold(p);
|
||||
}
|
||||
} finally {
|
||||
// restore the default
|
||||
for (MemoryPoolMXBean p : pools) {
|
||||
if (p.isUsageThresholdSupported()) {
|
||||
p.setUsageThreshold(0);
|
||||
}
|
||||
if (p.isCollectionUsageThresholdSupported()) {
|
||||
p.setCollectionUsageThreshold(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("Test passed.");
|
||||
|
@ -37,13 +37,18 @@ public class UpTime {
|
||||
= ManagementFactory.getRuntimeMXBean();
|
||||
|
||||
public static void main(String argv[]) throws Exception {
|
||||
long jvmStartTime = metrics.getStartTime();
|
||||
long systemStartOuter = System.currentTimeMillis();
|
||||
long metricsStart = metrics.getUptime();
|
||||
long systemStartInner = System.currentTimeMillis();
|
||||
|
||||
// This JVM might have been running for some time if this test runs
|
||||
// in samevm mode. The sanity check should apply to the test uptime.
|
||||
long testUptime = metricsStart - (systemStartOuter - jvmStartTime);
|
||||
|
||||
// If uptime is more than 30 minutes then it looks like a bug in
|
||||
// the method
|
||||
if (metricsStart > TIMEOUT * 60 * 1000)
|
||||
if (testUptime > TIMEOUT * 60 * 1000)
|
||||
throw new RuntimeException("Uptime of the JVM is more than 30 "
|
||||
+ "minutes ("
|
||||
+ (metricsStart / 60 / 1000)
|
||||
|
@ -28,7 +28,7 @@
|
||||
* @author Alexei Guibadoulline and Mandy Chung
|
||||
*
|
||||
* @run build Barrier
|
||||
* @run main AllThreadIds
|
||||
* @run main/othervm AllThreadIds
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
@ -70,6 +70,12 @@ public class AllThreadIds {
|
||||
}
|
||||
}
|
||||
|
||||
private static void fail(String msg) {
|
||||
trace = true;
|
||||
printThreadList();
|
||||
throw new RuntimeException(msg);
|
||||
}
|
||||
|
||||
private static void checkThreadCount(int numNewThreads,
|
||||
int numTerminatedThreads)
|
||||
throws Exception {
|
||||
@ -82,27 +88,27 @@ public class AllThreadIds {
|
||||
|
||||
if ((curLiveThreadCount - prevLiveThreadCount) !=
|
||||
(numNewThreads - numTerminatedThreads)) {
|
||||
throw new RuntimeException("Unexpected number of live threads: " +
|
||||
" Prev Total = " + prevTotalThreadCount +
|
||||
" Current Total = " + curTotalThreadCount +
|
||||
fail("Unexpected number of live threads: " +
|
||||
" Prev live = " + prevLiveThreadCount +
|
||||
" Current live = " + curLiveThreadCount +
|
||||
" Threads added = " + numNewThreads +
|
||||
" Threads terminated = " + numTerminatedThreads);
|
||||
}
|
||||
if (curPeakThreadCount - prevPeakThreadCount != numNewThreads) {
|
||||
throw new RuntimeException("Unexpected number of peak threads: " +
|
||||
" Prev Total = " + prevTotalThreadCount +
|
||||
" Current Total = " + curTotalThreadCount +
|
||||
fail("Unexpected number of peak threads: " +
|
||||
" Prev peak = " + prevPeakThreadCount +
|
||||
" Current peak = " + curPeakThreadCount +
|
||||
" Threads added = " + numNewThreads);
|
||||
}
|
||||
if (curTotalThreadCount - prevTotalThreadCount != numNewThreads) {
|
||||
throw new RuntimeException("Unexpected number of total threads: " +
|
||||
fail("Unexpected number of total threads: " +
|
||||
" Prev Total = " + prevTotalThreadCount +
|
||||
" Current Total = " + curTotalThreadCount +
|
||||
" Threads added = " + numNewThreads);
|
||||
}
|
||||
long[] list = mbean.getAllThreadIds();
|
||||
if (list.length != curLiveThreadCount) {
|
||||
throw new RuntimeException("Array length returned by " +
|
||||
fail("Array length returned by " +
|
||||
"getAllThreadIds() = " + list.length +
|
||||
" not matched count = " + curLiveThreadCount);
|
||||
}
|
||||
|
@ -36,8 +36,18 @@ public class DisableTest {
|
||||
private static ThreadMXBean tm = ManagementFactory.getThreadMXBean();
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
testThreadContentionMonitoring();
|
||||
testThreadCpuMonitoring();
|
||||
try {
|
||||
testThreadContentionMonitoring();
|
||||
testThreadCpuMonitoring();
|
||||
} finally {
|
||||
// restore the default
|
||||
if (tm.isThreadContentionMonitoringSupported()) {
|
||||
tm.setThreadContentionMonitoringEnabled(false);
|
||||
}
|
||||
if (tm.isThreadCpuTimeSupported()) {
|
||||
tm.setThreadCpuTimeEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("Test passed.");
|
||||
}
|
||||
|
@ -119,8 +119,19 @@ public class EnableTest {
|
||||
}
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
testThreadContentionMonitoring();
|
||||
testThreadCpuTime();
|
||||
try {
|
||||
testThreadContentionMonitoring();
|
||||
testThreadCpuTime();
|
||||
} finally {
|
||||
// restore the default
|
||||
if (tm.isThreadContentionMonitoringSupported()) {
|
||||
tm.setThreadContentionMonitoringEnabled(false);
|
||||
}
|
||||
if (tm.isThreadCpuTimeSupported()) {
|
||||
tm.setThreadCpuTimeEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
System.out.println("Test passed.");
|
||||
}
|
||||
|
@ -33,7 +33,7 @@
|
||||
* @build MonitorDeadlock
|
||||
* @build SynchronizerDeadlock
|
||||
* @build ThreadDump
|
||||
* @run main FindDeadlocks
|
||||
* @run main/othervm FindDeadlocks
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
|
@ -30,7 +30,7 @@
|
||||
*
|
||||
* @build MonitorDeadlock
|
||||
* @build ThreadDump
|
||||
* @run main FindMonitorDeadlock
|
||||
* @run main/othervm FindMonitorDeadlock
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
|
@ -29,7 +29,7 @@
|
||||
* @author Mandy Chung
|
||||
*
|
||||
* @build ThreadExecutionSynchronizer
|
||||
* @run main Locks
|
||||
* @run main/othervm Locks
|
||||
*/
|
||||
|
||||
import java.lang.management.*;
|
||||
|
@ -71,8 +71,8 @@ public class Boxing {
|
||||
Random random = new Random(42); // ensure consistent test domain
|
||||
|
||||
Test proxy = (Test) Proxy.newProxyInstance(
|
||||
ClassLoader.getSystemClassLoader(),
|
||||
new Class[] { Test.class },
|
||||
Test.class.getClassLoader(),
|
||||
new Class<?>[] { Test.class },
|
||||
new TestHandler());
|
||||
|
||||
for (int rep = 0; rep < REPS; rep++) {
|
||||
|
@ -54,16 +54,16 @@ public class ClassRestrictions {
|
||||
"\nTest of restrictions on parameters to Proxy.getProxyClass\n");
|
||||
|
||||
try {
|
||||
ClassLoader loader = ClassLoader.getSystemClassLoader();
|
||||
Class[] interfaces;
|
||||
Class proxyClass;
|
||||
ClassLoader loader = ClassRestrictions.class.getClassLoader();
|
||||
Class<?>[] interfaces;
|
||||
Class<?> proxyClass;
|
||||
|
||||
/*
|
||||
* All of the Class objects in the interfaces array must represent
|
||||
* interfaces, not classes or primitive types.
|
||||
*/
|
||||
try {
|
||||
interfaces = new Class[] { Object.class };
|
||||
interfaces = new Class<?>[] { Object.class };
|
||||
proxyClass = Proxy.getProxyClass(loader, interfaces);
|
||||
throw new RuntimeException(
|
||||
"proxy class created with java.lang.Object as interface");
|
||||
@ -73,7 +73,7 @@ public class ClassRestrictions {
|
||||
// assume exception is for intended failure
|
||||
}
|
||||
try {
|
||||
interfaces = new Class[] { Integer.TYPE };
|
||||
interfaces = new Class<?>[] { Integer.TYPE };
|
||||
proxyClass = Proxy.getProxyClass(loader, interfaces);
|
||||
throw new RuntimeException(
|
||||
"proxy class created with int.class as interface");
|
||||
@ -88,7 +88,7 @@ public class ClassRestrictions {
|
||||
* Class objects.
|
||||
*/
|
||||
try {
|
||||
interfaces = new Class[] { Bar.class, Bar.class };
|
||||
interfaces = new Class<?>[] { Bar.class, Bar.class };
|
||||
proxyClass = Proxy.getProxyClass(loader, interfaces);
|
||||
throw new RuntimeException(
|
||||
"proxy class created with repeated interfaces");
|
||||
@ -107,7 +107,7 @@ public class ClassRestrictions {
|
||||
Class altBarClass;
|
||||
altBarClass = Class.forName(Bar.class.getName(), false, altLoader);
|
||||
try {
|
||||
interfaces = new Class[] { altBarClass };
|
||||
interfaces = new Class<?>[] { altBarClass };
|
||||
proxyClass = Proxy.getProxyClass(loader, interfaces);
|
||||
throw new RuntimeException(
|
||||
"proxy class created with interface " +
|
||||
@ -121,8 +121,8 @@ public class ClassRestrictions {
|
||||
/*
|
||||
* All non-public interfaces must be in the same package.
|
||||
*/
|
||||
Class nonPublic1 = Bashful.class;
|
||||
Class nonPublic2 = null;
|
||||
Class<?> nonPublic1 = Bashful.class;
|
||||
Class<?> nonPublic2 = null;
|
||||
String[] nonPublicInterfaces = new String[] {
|
||||
"java.awt.Conditional",
|
||||
"java.util.zip.ZipConstants",
|
||||
@ -147,7 +147,7 @@ public class ClassRestrictions {
|
||||
"no second non-public interface found for test");
|
||||
}
|
||||
try {
|
||||
interfaces = new Class[] { nonPublic1, nonPublic2 };
|
||||
interfaces = new Class<?>[] { nonPublic1, nonPublic2 };
|
||||
proxyClass = Proxy.getProxyClass(loader, interfaces);
|
||||
throw new RuntimeException(
|
||||
"proxy class created with two non-public interfaces " +
|
||||
@ -163,7 +163,7 @@ public class ClassRestrictions {
|
||||
* parameter signature but different return type.
|
||||
*/
|
||||
try {
|
||||
interfaces = new Class[] { Bar.class, Baz.class };
|
||||
interfaces = new Class<?>[] { Bar.class, Baz.class };
|
||||
proxyClass = Proxy.getProxyClass(loader, interfaces);
|
||||
throw new RuntimeException(
|
||||
"proxy class created with conflicting methods");
|
||||
|
@ -42,7 +42,7 @@ public class Test {
|
||||
|
||||
// additional test cases may be added to both of these lists:
|
||||
|
||||
private static final Class[][] GOOD = {
|
||||
private static final Class<?>[][] GOOD = {
|
||||
{ Collection.class },
|
||||
{ Iterable.class, Collection.class },
|
||||
{ Iterable.class, Collection.class, List.class },
|
||||
@ -51,7 +51,7 @@ public class Test {
|
||||
GetArray.class }
|
||||
};
|
||||
|
||||
private static final Class[][] BAD = {
|
||||
private static final Class<?>[][] BAD = {
|
||||
{ Runnable.class, PrivilegedAction.class },
|
||||
{ GetSerializable.class, GetCloneable.class },
|
||||
{ GetObject.class, GetSerializable.class, GetCloneable.class }
|
||||
@ -60,12 +60,12 @@ public class Test {
|
||||
public static void main(String[] args) throws Exception {
|
||||
System.err.println("\nRegression test for bug 4838310\n");
|
||||
|
||||
ClassLoader loader = ClassLoader.getSystemClassLoader();
|
||||
ClassLoader loader = Test.class.getClassLoader();
|
||||
|
||||
System.err.println("Testing GOOD combinations:");
|
||||
|
||||
for (int i = 0; i < GOOD.length; i++) {
|
||||
Class[] interfaces = GOOD[i];
|
||||
Class<?>[] interfaces = GOOD[i];
|
||||
System.err.println(Arrays.asList(interfaces));
|
||||
Proxy.getProxyClass(loader, interfaces);
|
||||
System.err.println("--- OK.");
|
||||
@ -74,7 +74,7 @@ public class Test {
|
||||
System.err.println("Testing BAD combinations:");
|
||||
|
||||
for (int i = 0; i < BAD.length; i++) {
|
||||
Class[] interfaces = BAD[i];
|
||||
Class<?>[] interfaces = BAD[i];
|
||||
System.err.println(Arrays.asList(interfaces));
|
||||
try {
|
||||
Proxy.getProxyClass(loader, interfaces);
|
||||
|
Loading…
x
Reference in New Issue
Block a user