--- old/src/share/classes/jdk/jfr/conf/default.jfc 2021-01-22 14:07:08.843112110 +0800
+++ new/src/share/classes/jdk/jfr/conf/default.jfc 2021-01-22 14:07:08.704106684 +0800
@@ -29,6 +29,7 @@
true
+ true
--- old/src/share/classes/jdk/jfr/conf/profile.jfc 2021-01-22 14:07:09.566140337 +0800
+++ new/src/share/classes/jdk/jfr/conf/profile.jfc 2021-01-22 14:07:09.435135223 +0800
@@ -29,6 +29,7 @@
true
+ true
--- old/test/jdk/jfr/event/runtime/TestThreadStartEndEvents.java 2021-01-22 14:07:10.308169306 +0800
+++ new/test/jdk/jfr/event/runtime/TestThreadStartEndEvents.java 2021-01-22 14:07:10.176164153 +0800
@@ -25,12 +25,17 @@
package jdk.jfr.event.runtime;
+import static jdk.test.lib.Asserts.assertEQ;
+import static jdk.test.lib.Asserts.assertNotNull;
+
import java.time.Duration;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import jdk.jfr.Recording;
import jdk.jfr.consumer.RecordedEvent;
+import jdk.jfr.consumer.RecordedMethod;
+import jdk.jfr.consumer.RecordedStackTrace;
import jdk.test.lib.jfr.EventNames;
import jdk.test.lib.jfr.Events;
@@ -62,19 +67,27 @@
recording.stop();
int currThreadIndex = 0;
- long currentThreadId = Thread.currentThread().getId();
List events = Events.fromRecording(recording);
+ events.sort((e1, e2) -> e1.getStartTime().compareTo(e2.getStartTime()));
Events.hasEvents(events);
for (RecordedEvent event : events) {
- System.out.println("Event:" + event);
- if (event.getThread().getJavaThreadId() != currentThreadId) {
+ if (!event.getThread().getJavaName().startsWith(THREAD_NAME_PREFIX)) {
continue;
}
+ System.out.println("Event:" + event);
// Threads should be started and stopped in the correct order.
Events.assertEventThread(event, threads[currThreadIndex % threads.length]);
String eventName = currThreadIndex < threads.length ? EVENT_NAME_THREAD_START : EVENT_NAME_THREAD_END;
if (!eventName.equals(event.getEventType().getName())) {
- throw new Exception("Expected event of tyoe " + eventName + " but got " + event.getEventType().getName());
+ throw new Exception("Expected event of type " + eventName + " but got " + event.getEventType().getName());
+ }
+
+ if (eventName == EVENT_NAME_THREAD_START) {
+ Events.assertEventThread(event, "parentThread", Thread.currentThread());
+ RecordedStackTrace stackTrace = event.getValue("stackTrace");
+ assertNotNull(stackTrace);
+ RecordedMethod topMethod = stackTrace.getFrames().get(0).getMethod();
+ assertEQ(topMethod.getName(), "startThread");
}
currThreadIndex++;
}