From 7956d485c03b79215f01c25d379708dc432cfff5 Mon Sep 17 00:00:00 2001 From: sla Date: Tue, 15 Oct 2013 12:53:54 +0200 Subject: [PATCH] 8009681: TEST_BUG: MethodExitReturnValuesTest.java may fail when there are unexpected background threads Reviewed-by: sla, allwin Contributed-by: mikael.auno@oracle.com --- test/com/sun/jdi/MethodEntryExitEvents.java | 35 +++++++++++-------- .../sun/jdi/MethodExitReturnValuesTest.java | 28 +++++++-------- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/test/com/sun/jdi/MethodEntryExitEvents.java b/test/com/sun/jdi/MethodEntryExitEvents.java index a14a63e34..7f9f11724 100644 --- a/test/com/sun/jdi/MethodEntryExitEvents.java +++ b/test/com/sun/jdi/MethodEntryExitEvents.java @@ -108,14 +108,11 @@ public class MethodEntryExitEvents extends TestScaffold { final int expectedExitCount = 1 + (15 * 3); int methodExitCount = 0; - /* - * Class patterns for which we don't want events (copied - * from the "Trace.java" example): - * http://java.sun.com/javase/technologies/core/toolsapis/jpda/ - */ - private String[] excludes = {"java.*", "javax.*", "sun.*", - "com.sun.*", "com.oracle.*", - "oracle.*", "jdk.internal.*"}; + // Classes which we are interested in + private List includes = Arrays.asList(new String[] { + "MethodEntryExitEventsDebugee", + "t2" + }); MethodEntryExitEvents (String args[]) { super(args); @@ -161,6 +158,10 @@ public class MethodEntryExitEvents extends TestScaffold { str.disable(); } public void methodEntered(MethodEntryEvent event) { + if (!includes.contains(event.method().declaringType().name())) { + return; + } + if (! finishedCounting) { // We have to count the entry to loopComplete, but // not the exit @@ -176,6 +177,10 @@ public class MethodEntryExitEvents extends TestScaffold { } public void methodExited(MethodExitEvent event) { + if (!includes.contains(event.method().declaringType().name())) { + return; + } + if (! finishedCounting){ methodExitCount++; System.out.print (" Method exit number: "); @@ -214,6 +219,10 @@ public class MethodEntryExitEvents extends TestScaffold { connect((String[]) argList.toArray(args2)); waitForVMStart(); + // Determine main thread + ClassPrepareEvent e = resumeToPrepareOf("MethodEntryExitEventsDebugee"); + mainThread = e.thread(); + try { /* @@ -223,6 +232,7 @@ public class MethodEntryExitEvents extends TestScaffold { eventRequestManager().createExceptionRequest(null, // refType (null == all instances) true, // notifyCaught true);// notifyUncaught + exceptionRequest.addThreadFilter(mainThread); exceptionRequest.setSuspendPolicy(EventRequest.SUSPEND_ALL); exceptionRequest.enable(); @@ -231,9 +241,7 @@ public class MethodEntryExitEvents extends TestScaffold { */ MethodEntryRequest entryRequest = eventRequestManager().createMethodEntryRequest(); - for (int i=0; i= 1 && vmm.minorInterfaceVersion() >= 6 && vm().canGetMethodReturnValues()) { @@ -560,10 +560,8 @@ public class MethodExitReturnValuesTest extends TestScaffold { */ MethodExitRequest exitRequest = eventRequestManager().createMethodExitRequest(); + exitRequest.addThreadFilter(mainThread); - for (int i=0; i