8273909: vmTestbase/nsk/jdi/Event/request/request001 can still fail with "ERROR: new event is not ThreadStartEvent"
Reviewed-by: cjplummer, sspitsyn
This commit is contained in:
parent
04891c95e0
commit
5fde4b64e2
test/hotspot/jtreg/vmTestbase/nsk
jdi
Event/request
EventIterator/nextEvent
ThreadDeathRequest/addThreadFilter
share/jdi
@ -335,7 +335,6 @@ public class request001 extends JDIBase {
|
||||
|
||||
log2("......setting up ThreadStartRequest");
|
||||
ThreadStartRequest tsr = eventRManager.createThreadStartRequest();
|
||||
tsr.addCountFilter(1);
|
||||
tsr.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tsr.putProperty("number", "ThreadStartRequest");
|
||||
tsr.enable();
|
||||
@ -344,7 +343,6 @@ public class request001 extends JDIBase {
|
||||
|
||||
log2("......setting up ThreadDeathRequest");
|
||||
ThreadDeathRequest tdr = eventRManager.createThreadDeathRequest();
|
||||
tdr.addCountFilter(1);
|
||||
tdr.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tsr.putProperty("number", "ThreadDeathRequest");
|
||||
tdr.enable();
|
||||
|
@ -324,7 +324,6 @@ public class nextevent001 extends JDIBase {
|
||||
|
||||
log2("......setting up ThreadStartRequest");
|
||||
ThreadStartRequest tsr = eventRManager.createThreadStartRequest();
|
||||
tsr.addCountFilter(1);
|
||||
tsr.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tsr.putProperty("number", "ThreadStartRequest");
|
||||
tsr.enable();
|
||||
@ -333,7 +332,6 @@ public class nextevent001 extends JDIBase {
|
||||
|
||||
log2("......setting up ThreadDeathRequest");
|
||||
ThreadDeathRequest tdr = eventRManager.createThreadDeathRequest();
|
||||
tdr.addCountFilter(1);
|
||||
tdr.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tsr.putProperty("number", "ThreadDeathRequest");
|
||||
tdr.enable();
|
||||
|
@ -279,21 +279,18 @@ public class addthreadfilter001 extends JDIBase {
|
||||
log2("......setting up ThreadDeathRequest");
|
||||
ThreadDeathRequest tdr1 = eventRManager.createThreadDeathRequest();
|
||||
// tdr1.addThreadFilter(mainThread);
|
||||
tdr1.addCountFilter(1);
|
||||
tdr1.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tdr1.putProperty("number", "ThreadDeathRequest1");
|
||||
tdr1.enable();
|
||||
|
||||
ThreadDeathRequest tdr2 = eventRManager.createThreadDeathRequest();
|
||||
// tsr2.addThreadFilter(mainThread);
|
||||
tdr2.addCountFilter(1);
|
||||
tdr2.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tdr2.putProperty("number", "ThreadDeathRequest2");
|
||||
tdr2.enable();
|
||||
|
||||
ThreadDeathRequest tdr3 = eventRManager.createThreadDeathRequest();
|
||||
tdr3.addThreadFilter(testThread);
|
||||
tdr3.addCountFilter(1);
|
||||
tdr3.setSuspendPolicy(EventRequest.SUSPEND_ALL);
|
||||
tdr3.putProperty("number", "ThreadDeathRequest3");
|
||||
tdr3.enable();
|
||||
|
@ -157,27 +157,29 @@ public class JDIBase {
|
||||
// we can get the events from system threads unexpected for tests.
|
||||
// The method skips ThreadStartEvent/ThreadDeathEvent events
|
||||
// for all threads except the expected one.
|
||||
// Note: don't limit ThreadStartRequest/ThreadDeathRequest request by addCountFilter(),
|
||||
// as it limits the requested event to be reported at most once.
|
||||
protected void getEventSetForThreadStartDeath(String threadName) throws JDITestRuntimeException {
|
||||
boolean gotDesiredEvent = false;
|
||||
while (!gotDesiredEvent) {
|
||||
while (true) {
|
||||
getEventSet();
|
||||
Event event = eventIterator.nextEvent();
|
||||
if (event instanceof ThreadStartEvent evt) {
|
||||
if (evt.thread().name().equals(threadName)) {
|
||||
gotDesiredEvent = true;
|
||||
} else {
|
||||
log2("Got ThreadStartEvent for wrong thread: " + event);
|
||||
break;
|
||||
}
|
||||
log2("Got ThreadStartEvent for '" + evt.thread().name()
|
||||
+ "' instead of '" + threadName + "', skipping");
|
||||
} else if (event instanceof ThreadDeathEvent evt) {
|
||||
if (evt.thread().name().equals(threadName)) {
|
||||
gotDesiredEvent = true;
|
||||
} else {
|
||||
log2("Got ThreadDeathEvent for wrong thread: " + event);
|
||||
break;
|
||||
}
|
||||
log2("Got ThreadDeathEvent for '" + evt.thread().name()
|
||||
+ "' instead of '" + threadName + "', skipping");
|
||||
} else {
|
||||
// not ThreadStartEvent nor ThreadDeathEvent
|
||||
gotDesiredEvent = true;
|
||||
break;
|
||||
}
|
||||
eventSet.resume();
|
||||
}
|
||||
// reset the iterator before return
|
||||
eventIterator = eventSet.eventIterator();
|
||||
|
Loading…
x
Reference in New Issue
Block a user