test/jdk/jdk/jfr/api/consumer/recordingstream/TestOnEvent.java
changeset 59327 2c3578aa0bdf
parent 58863 c16ac7a2eba4
--- 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);
     }