test/jdk/jdk/jfr/api/consumer/recordingstream/TestSetEndTime.java
branchJEP-349-branch
changeset 58687 222f727e9b05
parent 58076 ca625d28c580
child 58724 3d0a172353fc
equal deleted inserted replaced
58672:fc3bd6df4c5a 58687:222f727e9b05
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 
    25 
    26 package jdk.jfr.api.consumer.recordingstream;
    26 package jdk.jfr.api.consumer.recordingstream;
    27 
    27 
       
    28 import java.io.IOException;
    28 import java.nio.file.Path;
    29 import java.nio.file.Path;
    29 import java.nio.file.Paths;
    30 import java.nio.file.Paths;
    30 import java.time.Duration;
    31 import java.time.Duration;
    31 import java.time.Instant;
    32 import java.time.Instant;
       
    33 import java.util.ArrayList;
       
    34 import java.util.List;
    32 import java.util.concurrent.atomic.AtomicBoolean;
    35 import java.util.concurrent.atomic.AtomicBoolean;
    33 
    36 
    34 import jdk.jfr.Event;
    37 import jdk.jfr.Event;
    35 import jdk.jfr.Name;
    38 import jdk.jfr.Name;
    36 import jdk.jfr.Recording;
    39 import jdk.jfr.Recording;
    37 import jdk.jfr.StackTrace;
    40 import jdk.jfr.StackTrace;
       
    41 import jdk.jfr.Timestamp;
    38 import jdk.jfr.consumer.EventStream;
    42 import jdk.jfr.consumer.EventStream;
    39 import jdk.jfr.consumer.RecordedEvent;
    43 import jdk.jfr.consumer.RecordedEvent;
    40 import jdk.jfr.consumer.RecordingFile;
    44 import jdk.jfr.consumer.RecordingFile;
       
    45 import jdk.jfr.consumer.RecordingStream;
       
    46 import jdk.test.lib.jfr.Events;
    41 
    47 
    42 /**
    48 /**
    43  * @test
    49  * @test
    44  * @summary Tests EventStream::setEndTime
    50  * @summary Tests EventStream::setEndTime
    45  * @key jfr
    51  * @key jfr
    54     public final static class Mark extends Event {
    60     public final static class Mark extends Event {
    55         public boolean before;
    61         public boolean before;
    56     }
    62     }
    57 
    63 
    58     public static void main(String... args) throws Exception {
    64     public static void main(String... args) throws Exception {
       
    65         testEventStream();
       
    66         testRecordingStream();
       
    67     }
       
    68 
       
    69     @StackTrace(false)
       
    70     public final static class Now extends Event {
       
    71         @Timestamp(Timestamp.MILLISECONDS_SINCE_EPOCH)
       
    72         public long timestamp;
       
    73     }
       
    74 
       
    75     private static void testRecordingStream() throws Exception {
       
    76         try (RecordingStream rs = new RecordingStream()) {
       
    77             AtomicBoolean fail = new AtomicBoolean();
       
    78             Instant endTime = Instant.now().plus(Duration.ofSeconds(1));
       
    79             rs.setReuse(false);
       
    80             rs.onEvent(e -> {
       
    81                 if (e.getEndTime().isAfter(endTime)) {
       
    82                     fail.set(true);
       
    83                 }
       
    84             });
       
    85             rs.setEndTime(endTime);
       
    86             rs.startAsync();
       
    87             for (int i = 0; i < 100; i++) {
       
    88                 Now m = new Now();
       
    89                 m.commit();
       
    90                 Thread.sleep(10);
       
    91             }
       
    92         }
       
    93     }
       
    94 
       
    95     private static void testEventStream() throws InterruptedException, IOException, Exception {
    59         try (Recording r = new Recording()) {
    96         try (Recording r = new Recording()) {
    60             r.setFlushInterval(Duration.ofSeconds(1));
    97             r.setFlushInterval(Duration.ofSeconds(1));
    61             r.start();
    98             r.start();
    62             Mark event1 = new Mark();
    99             Mark event1 = new Mark();
    63             event1.begin();  // start time
   100             event1.begin(); // start time
    64             event1.before = true;
   101             event1.before = true;
    65             advanceClock();
   102             advanceClock();
    66             event1.commit();
   103             event1.commit();
    67 
   104 
    68             Mark event2 = new Mark();
   105             Mark event2 = new Mark();
    69             event2.begin();  // end time
   106             event2.begin(); // end time
    70             advanceClock();
   107             advanceClock();
    71             Thread.sleep(100);
   108             Thread.sleep(100);
    72             event2.before = false;
   109             event2.before = false;
    73             event2.commit();
   110             event2.commit();
    74 
   111