diff -r 851a389fc54d -r 2c3578aa0bdf test/jdk/jdk/jfr/api/consumer/recordingstream/TestOnEvent.java --- a/test/jdk/jdk/jfr/api/consumer/recordingstream/TestOnEvent.java Fri Nov 29 15:37:13 2019 +0000 +++ b/test/jdk/jdk/jfr/api/consumer/recordingstream/TestOnEvent.java Fri Nov 29 17:31:01 2019 +0100 @@ -36,7 +36,7 @@ * @summary Tests RecordingStream::onEvent(...) * @key jfr * @requires vm.hasJFR - * @library /test/lib + * @library /test/lib /test/jdk * @run main/othervm jdk.jfr.api.consumer.recordingstream.TestOnEvent */ public class TestOnEvent { @@ -58,6 +58,7 @@ testOnEvent(); testNamedEvent(); testTwoEventWithSameName(); + testOnEventAfterStart(); } private static void testOnEventNull() { @@ -149,6 +150,29 @@ log("Leaving testOnEvent()"); } + private static void testOnEventAfterStart() { + try (RecordingStream r = new RecordingStream()) { + EventProducer p = new EventProducer(); + p.start(); + Thread addHandler = new Thread(() -> { + r.onEvent(e -> { + // Got event, close stream + r.close(); + }); + }); + r.onFlush(() -> { + // Only add handler once + if (!"started".equals(addHandler.getName())) { + addHandler.setName("started"); + addHandler.start(); + } + }); + r.start(); + p.kill(); + } + } + + private static void log(String msg) { System.out.println(msg); }