From e8a2d5669cda59d0f9a10e5a8035c20b8678d3d8 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Mon, 6 May 2024 11:01:55 +0000 Subject: [PATCH] 8331653: JFR: Improve logging for jdk/jfr/api/consumer/recordingstream;TestStop.java Reviewed-by: mgronlun --- .../consumer/recordingstream/TestStop.java | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java b/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java index 5cabd9e6884..58dcbbcbe20 100644 --- a/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java +++ b/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java @@ -24,9 +24,10 @@ package jdk.jfr.api.consumer.recordingstream; import java.nio.file.Path; +import java.time.Instant; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.atomic.AtomicLong; +import java.util.Collections; import jdk.jfr.Event; import jdk.jfr.consumer.RecordedEvent; @@ -106,10 +107,10 @@ public class TestStop { } private static void testNestedStop() throws Exception { - AtomicLong outerCount = new AtomicLong(); - AtomicLong innerCount = new AtomicLong(); + List outerStream = Collections.synchronizedList(new ArrayList<>()); + List innerStream = Collections.synchronizedList(new ArrayList<>()); try (RecordingStream outer = new RecordingStream()) { - outer.onEvent(e -> outerCount.incrementAndGet()); + outer.onEvent(e -> outerStream.add(eventToText(e))); outer.setMaxSize(100_000_000); outer.startAsync(); @@ -119,7 +120,7 @@ public class TestStop { try (RecordingStream inner = new RecordingStream()) { inner.setMaxSize(100_000_000); - inner.onEvent(e -> innerCount.incrementAndGet()); + inner.onEvent(e -> innerStream.add(eventToText(e))); inner.startAsync(); MarkEvent b = new MarkEvent(); @@ -138,30 +139,49 @@ public class TestStop { Path fileInner = Path.of("inner.jfr"); inner.dump(fileInner); outer.dump(fileOuter); - System.out.println("RecordingStream outer:"); + System.out.println("Outer dump:"); var dumpOuter = RecordingFile.readAllEvents(fileOuter); - System.out.println(dumpOuter); - System.out.println("RecordingStream inner:"); + for (RecordedEvent e : dumpOuter) { + System.out.println(eventToText(e)); + } + System.out.println("Inner dump:"); var dumpInner = RecordingFile.readAllEvents(fileInner); - System.out.println(dumpInner); - System.out.println("Outer count: " + outerCount); - System.out.println("Inner count: " + innerCount); + for (RecordedEvent e : dumpInner) { + System.out.println(eventToText(e)); + } + System.out.println(); + System.out.println("Outer stream:"); + for (String s : outerStream) { + System.out.println(s); + } + System.out.println("Inner stream:"); + for (String s : innerStream) { + System.out.println(s); + } if (dumpOuter.size() != 3) { throw new AssertionError("Expected outer dump to have 3 events"); } - if (outerCount.get() != 3) { + if (outerStream.size() != 3) { throw new AssertionError("Expected outer stream to have 3 events"); } if (dumpInner.size() != 1) { throw new AssertionError("Expected inner dump to have 1 event"); } - if (innerCount.get() != 1) { + if (innerStream.size() != 1) { throw new AssertionError("Expected inner stream to have 1 event"); } } } } + private static String eventToText(RecordedEvent event) { + Instant timestamp = event.getEndTime(); + long s = timestamp.getEpochSecond(); + int n = timestamp.getNano(); + String id = event.getString("id"); + return id + ": n=" + n + " s=" + s + " t=" + timestamp; + } + static void testStopClosed() { try (RecordingStream rs = new RecordingStream()) { rs.close();