test/jdk/jdk/jfr/api/consumer/recordingstream/TestOnEvent.java
changeset 59327 2c3578aa0bdf
parent 58863 c16ac7a2eba4
equal deleted inserted replaced
59326:851a389fc54d 59327:2c3578aa0bdf
    34 /**
    34 /**
    35  * @test
    35  * @test
    36  * @summary Tests RecordingStream::onEvent(...)
    36  * @summary Tests RecordingStream::onEvent(...)
    37  * @key jfr
    37  * @key jfr
    38  * @requires vm.hasJFR
    38  * @requires vm.hasJFR
    39  * @library /test/lib
    39  * @library /test/lib /test/jdk
    40  * @run main/othervm jdk.jfr.api.consumer.recordingstream.TestOnEvent
    40  * @run main/othervm jdk.jfr.api.consumer.recordingstream.TestOnEvent
    41  */
    41  */
    42 public class TestOnEvent {
    42 public class TestOnEvent {
    43 
    43 
    44     @Name("A")
    44     @Name("A")
    56     public static void main(String... args) throws Exception {
    56     public static void main(String... args) throws Exception {
    57         testOnEventNull();
    57         testOnEventNull();
    58         testOnEvent();
    58         testOnEvent();
    59         testNamedEvent();
    59         testNamedEvent();
    60         testTwoEventWithSameName();
    60         testTwoEventWithSameName();
       
    61         testOnEventAfterStart();
    61     }
    62     }
    62 
    63 
    63     private static void testOnEventNull() {
    64     private static void testOnEventNull() {
    64         log("Entering testOnEventNull()");
    65         log("Entering testOnEventNull()");
    65         try (RecordingStream rs = new RecordingStream()) {
    66         try (RecordingStream rs = new RecordingStream()) {
   147             event.await();
   148             event.await();
   148         }
   149         }
   149         log("Leaving testOnEvent()");
   150         log("Leaving testOnEvent()");
   150     }
   151     }
   151 
   152 
       
   153     private static void testOnEventAfterStart() {
       
   154         try (RecordingStream r = new RecordingStream()) {
       
   155             EventProducer p = new EventProducer();
       
   156             p.start();
       
   157             Thread addHandler = new Thread(() ->  {
       
   158                 r.onEvent(e -> {
       
   159                     // Got event, close stream
       
   160                     r.close();
       
   161                 });
       
   162             });
       
   163             r.onFlush(() ->  {
       
   164                 // Only add handler once
       
   165                 if (!"started".equals(addHandler.getName()))  {
       
   166                     addHandler.setName("started");
       
   167                     addHandler.start();
       
   168                 }
       
   169             });
       
   170             r.start();
       
   171             p.kill();
       
   172         }
       
   173     }
       
   174 
       
   175 
   152     private static void log(String msg) {
   176     private static void log(String msg) {
   153         System.out.println(msg);
   177         System.out.println(msg);
   154     }
   178     }
   155 }
   179 }