Skip to content

Commit 89770f2

Browse files
committed
8285032: vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy008/ fails with "eventSet.suspendPolicy() != policyExpected"
Backport-of: 5c0934931b097baf76c1f6a25f0c0b73af45ffc3
1 parent fca25f1 commit 89770f2

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy008.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2001, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -247,8 +247,8 @@ private void testRun()
247247
getEventSet();
248248
cpRequest.disable();
249249

250-
ClassPrepareEvent event = (ClassPrepareEvent) eventIterator.next();
251-
debuggeeClass = event.referenceType();
250+
ClassPrepareEvent cpEvent = (ClassPrepareEvent) eventIterator.next();
251+
debuggeeClass = cpEvent.referenceType();
252252

253253
if (!debuggeeClass.name().equals(debuggeeName))
254254
throw new JDITestRuntimeException("** Unexpected ClassName for ClassPrepareEvent **");
@@ -371,13 +371,14 @@ private void testRun()
371371
}
372372

373373
mainThread.resume();
374-
getEventSet();
374+
getEventSetForThreadStartDeath("thread" + i);
375375

376-
if ( !(eventIterator.nextEvent() instanceof ThreadStartEvent)) {
377-
log3("ERROR: new event is not ThreadStartEvent");
376+
Event event = eventIterator.nextEvent();
377+
if (!(event instanceof ThreadStartEvent)) {
378+
log3("ERROR: new event is not ThreadStartEvent: " + event);
378379
testExitCode = FAILED;
379380
} else {
380-
log2("......got : instanceof ThreadStartEvent");
381+
log2("......got : instanceof ThreadStartEvent: " + event);
381382
policy = eventSet.suspendPolicy();
382383
if (policy != policyExpected[i]) {
383384
log3("ERROR: eventSet.suspendPolicy() != policyExpected");
@@ -418,8 +419,6 @@ private ThreadStartRequest settingThreadStartRequest(int suspendPolicy,
418419
throws JDITestRuntimeException {
419420
try {
420421
ThreadStartRequest tsr = eventRManager.createThreadStartRequest();
421-
// tsr.addThreadFilter(mainThread);
422-
tsr.addCountFilter(1);
423422
tsr.setSuspendPolicy(suspendPolicy);
424423
tsr.putProperty("number", property);
425424
return tsr;

test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventFilters.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -337,6 +337,10 @@ public static boolean filtered(Event event) {
337337
if (event.toString().contains("JFR request timer"))
338338
return true;
339339

340+
// Filter out any carrier thread that starts while running the test.
341+
if (event.toString().contains("ForkJoinPool"))
342+
return true;
343+
340344
return false;
341345
}
342346

test/hotspot/jtreg/vmTestbase/nsk/share/jdi/JDIBase.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -165,18 +165,21 @@ protected void getEventSetForThreadStartDeath(String threadName) throws JDITestR
165165
Event event = eventIterator.nextEvent();
166166
if (event instanceof ThreadStartEvent evt) {
167167
if (evt.thread().name().equals(threadName)) {
168+
log2("Got ThreadStartEvent for '" + evt.thread().name());
168169
break;
169170
}
170171
log2("Got ThreadStartEvent for '" + evt.thread().name()
171172
+ "' instead of '" + threadName + "', skipping");
172173
} else if (event instanceof ThreadDeathEvent evt) {
173174
if (evt.thread().name().equals(threadName)) {
175+
log2("Got ThreadDeathEvent for '" + evt.thread().name());
174176
break;
175177
}
176178
log2("Got ThreadDeathEvent for '" + evt.thread().name()
177179
+ "' instead of '" + threadName + "', skipping");
178180
} else {
179181
// not ThreadStartEvent nor ThreadDeathEvent
182+
log2("Did't get ThreadStartEvent or ThreadDeathEvent: " + event);
180183
break;
181184
}
182185
eventSet.resume();
@@ -188,15 +191,22 @@ protected void getEventSetForThreadStartDeath(String threadName) throws JDITestR
188191
protected void breakpointForCommunication() throws JDITestRuntimeException {
189192

190193
log2("breakpointForCommunication");
191-
getEventSet();
194+
while (true) {
195+
getEventSet();
192196

193-
Event event = eventIterator.nextEvent();
194-
if (event instanceof BreakpointEvent) {
195-
bpEvent = (BreakpointEvent) event;
196-
return;
197-
}
197+
Event event = eventIterator.nextEvent();
198+
if (event instanceof BreakpointEvent) {
199+
bpEvent = (BreakpointEvent) event;
200+
return;
201+
}
198202

199-
throw new JDITestRuntimeException("** event '" + event + "' IS NOT a breakpoint **");
203+
if (EventFilters.filtered(event)) {
204+
// We filter out spurious ThreadStartEvents
205+
continue;
206+
}
207+
208+
throw new JDITestRuntimeException("** event '" + event + "' IS NOT a breakpoint **");
209+
}
200210
}
201211

202212
// Similar to breakpointForCommunication, but skips Locatable events from unexpected locations.

0 commit comments

Comments
 (0)