test/jdk/jdk/jfr/api/consumer/recordingstream/TestSetEndTime.java
branchJEP-349-branch
changeset 58687 222f727e9b05
parent 58076 ca625d28c580
child 58724 3d0a172353fc
--- a/test/jdk/jdk/jfr/api/consumer/recordingstream/TestSetEndTime.java	Thu Oct 17 09:21:00 2019 -0700
+++ b/test/jdk/jdk/jfr/api/consumer/recordingstream/TestSetEndTime.java	Fri Oct 18 17:45:17 2019 +0200
@@ -25,19 +25,25 @@
 
 package jdk.jfr.api.consumer.recordingstream;
 
+import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import jdk.jfr.Event;
 import jdk.jfr.Name;
 import jdk.jfr.Recording;
 import jdk.jfr.StackTrace;
+import jdk.jfr.Timestamp;
 import jdk.jfr.consumer.EventStream;
 import jdk.jfr.consumer.RecordedEvent;
 import jdk.jfr.consumer.RecordingFile;
+import jdk.jfr.consumer.RecordingStream;
+import jdk.test.lib.jfr.Events;
 
 /**
  * @test
@@ -56,17 +62,48 @@
     }
 
     public static void main(String... args) throws Exception {
+        testEventStream();
+        testRecordingStream();
+    }
+
+    @StackTrace(false)
+    public final static class Now extends Event {
+        @Timestamp(Timestamp.MILLISECONDS_SINCE_EPOCH)
+        public long timestamp;
+    }
+
+    private static void testRecordingStream() throws Exception {
+        try (RecordingStream rs = new RecordingStream()) {
+            AtomicBoolean fail = new AtomicBoolean();
+            Instant endTime = Instant.now().plus(Duration.ofSeconds(1));
+            rs.setReuse(false);
+            rs.onEvent(e -> {
+                if (e.getEndTime().isAfter(endTime)) {
+                    fail.set(true);
+                }
+            });
+            rs.setEndTime(endTime);
+            rs.startAsync();
+            for (int i = 0; i < 100; i++) {
+                Now m = new Now();
+                m.commit();
+                Thread.sleep(10);
+            }
+        }
+    }
+
+    private static void testEventStream() throws InterruptedException, IOException, Exception {
         try (Recording r = new Recording()) {
             r.setFlushInterval(Duration.ofSeconds(1));
             r.start();
             Mark event1 = new Mark();
-            event1.begin();  // start time
+            event1.begin(); // start time
             event1.before = true;
             advanceClock();
             event1.commit();
 
             Mark event2 = new Mark();
-            event2.begin();  // end time
+            event2.begin(); // end time
             advanceClock();
             Thread.sleep(100);
             event2.before = false;