test/jdk/jdk/jfr/api/consumer/recordingstream/TestEnable.java
branchJEP-349-branch
changeset 58373 849a45ac808a
parent 58180 0a8943b4d0dd
equal deleted inserted replaced
58371:a6d44d9bf80b 58373:849a45ac808a
    24  */
    24  */
    25 
    25 
    26 package jdk.jfr.api.consumer.recordingstream;
    26 package jdk.jfr.api.consumer.recordingstream;
    27 
    27 
    28 import java.util.concurrent.CountDownLatch;
    28 import java.util.concurrent.CountDownLatch;
       
    29 import java.util.function.Consumer;
    29 
    30 
    30 import jdk.jfr.Enabled;
    31 import jdk.jfr.Enabled;
    31 import jdk.jfr.Event;
    32 import jdk.jfr.Event;
    32 import jdk.jfr.consumer.RecordingStream;
    33 import jdk.jfr.consumer.RecordingStream;
    33 
    34 
    44     @Enabled(false)
    45     @Enabled(false)
    45     private static class EnabledEvent extends Event {
    46     private static class EnabledEvent extends Event {
    46     }
    47     }
    47 
    48 
    48     public static void main(String... args) throws Exception {
    49     public static void main(String... args) throws Exception {
       
    50         testEnableWithClass();
       
    51         testEnableWithEventName();
       
    52     }
       
    53 
       
    54     private static void testEnableWithEventName() {
       
    55         test(r -> r.enable(EnabledEvent.class.getName()));
       
    56     }
       
    57 
       
    58     private static void testEnableWithClass() {
       
    59         test(r -> r.enable(EnabledEvent.class));
       
    60     }
       
    61 
       
    62     private static void test(Consumer<RecordingStream> enablement) {
    49         CountDownLatch event = new CountDownLatch(1);
    63         CountDownLatch event = new CountDownLatch(1);
    50         try (RecordingStream r = new RecordingStream()) {
    64         try (RecordingStream r = new RecordingStream()) {
    51             r.onEvent(e -> {
    65             r.onEvent(e -> {
    52                 event.countDown();
    66                 event.countDown();
    53             });
    67             });
    54             r.enable(EnabledEvent.class.getName());
    68             enablement.accept(r);
    55             r.startAsync();
    69             r.startAsync();
    56             EnabledEvent e = new EnabledEvent();
    70             EnabledEvent e = new EnabledEvent();
    57             e.commit();
    71             e.commit();
    58             event.await();
    72             try {
       
    73                 event.await();
       
    74             } catch (InterruptedException ie) {
       
    75                 throw new RuntimeException("Unexpected interruption of latch", ie);
       
    76             }
    59         }
    77         }
    60     }
    78     }
    61 }
    79 }