< prev index next >

test/jdk/jdk/jfr/event/runtime/TestShutdownEvent.java

Print this page




  75             for (int j = 0; j < attempts -1; j++) {
  76                 try {
  77                     runSubtest(i);
  78                     return;
  79                 } catch (Exception e) {
  80                     System.out.println("Failed: " + e.getMessage());
  81                     System.out.println();
  82                     System.out.println("Retry " + i + 1);
  83                 } catch (OutOfMemoryError | StackOverflowError e) {
  84                     System.out.println("Error");
  85                     // Can happen when parsing corrupt file. Abort test.
  86                     return;
  87                 }
  88             }
  89             runSubtest(i);
  90         }
  91     }
  92 
  93     private static void runSubtest(int subTestIndex) throws Exception {
  94         ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
  95                                 "-Xlog:jfr=debug",
  96                                 "-XX:-CreateCoredumpOnCrash",
  97                                 "--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
  98                                 "-XX:StartFlightRecording=filename=./dumped.jfr,dumponexit=true,settings=default",
  99                                 "jdk.jfr.event.runtime.TestShutdownEvent$TestMain",
 100                                 String.valueOf(subTestIndex));
 101         OutputAnalyzer output = ProcessTools.executeProcess(pb);
 102         System.out.println(output.getOutput());
 103         int exitCode = output.getExitValue();
 104         System.out.println("Exit code: " + exitCode);
 105 
 106         String recordingName = output.firstMatch("emergency jfr file: (.*.jfr)", 1);
 107         if (recordingName == null) {
 108             recordingName = "./dumped.jfr";
 109         }
 110 
 111         List<RecordedEvent> events = RecordingFile.readAllEvents(Paths.get(recordingName));
 112         List<RecordedEvent> filteredEvents = events.stream()
 113             .filter(e -> e.getEventType().getName().equals(EventNames.Shutdown))
 114             .sorted(Comparator.comparing(RecordedEvent::getStartTime))
 115             .collect(Collectors.toList());
 116 
 117         Asserts.assertEquals(filteredEvents.size(), 1);
 118         RecordedEvent event = filteredEvents.get(0);
 119         subTests[subTestIndex].verifyEvents(event, exitCode);
 120     }
 121 
 122     @SuppressWarnings("unused")
 123     private static class TestMain {
 124         public static void main(String[] args) throws Exception {
 125             ShutdownEventSubTest subTest = subTests[Integer.parseInt(args[0])];
 126             System.out.println("Running subtest " + args[0] + " (" + subTest.getClass().getName() + ")");




  75             for (int j = 0; j < attempts -1; j++) {
  76                 try {
  77                     runSubtest(i);
  78                     return;
  79                 } catch (Exception e) {
  80                     System.out.println("Failed: " + e.getMessage());
  81                     System.out.println();
  82                     System.out.println("Retry " + i + 1);
  83                 } catch (OutOfMemoryError | StackOverflowError e) {
  84                     System.out.println("Error");
  85                     // Can happen when parsing corrupt file. Abort test.
  86                     return;
  87                 }
  88             }
  89             runSubtest(i);
  90         }
  91     }
  92 
  93     private static void runSubtest(int subTestIndex) throws Exception {
  94         ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,

  95                                 "-XX:-CreateCoredumpOnCrash",
  96                                 "--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
  97                                 "-XX:StartFlightRecording=filename=./dumped.jfr,dumponexit=true,settings=default",
  98                                 "jdk.jfr.event.runtime.TestShutdownEvent$TestMain",
  99                                 String.valueOf(subTestIndex));
 100         OutputAnalyzer output = ProcessTools.executeProcess(pb);
 101         System.out.println(output.getOutput());
 102         int exitCode = output.getExitValue();
 103         System.out.println("Exit code: " + exitCode);
 104 
 105         String recordingName = output.firstMatch("JFR recording file will be written. Location: (.*.jfr)", 1);
 106         if (recordingName == null) {
 107             recordingName = "./dumped.jfr";
 108         }
 109 
 110         List<RecordedEvent> events = RecordingFile.readAllEvents(Paths.get(recordingName));
 111         List<RecordedEvent> filteredEvents = events.stream()
 112             .filter(e -> e.getEventType().getName().equals(EventNames.Shutdown))
 113             .sorted(Comparator.comparing(RecordedEvent::getStartTime))
 114             .collect(Collectors.toList());
 115 
 116         Asserts.assertEquals(filteredEvents.size(), 1);
 117         RecordedEvent event = filteredEvents.get(0);
 118         subTests[subTestIndex].verifyEvents(event, exitCode);
 119     }
 120 
 121     @SuppressWarnings("unused")
 122     private static class TestMain {
 123         public static void main(String[] args) throws Exception {
 124             ShutdownEventSubTest subTest = subTests[Integer.parseInt(args[0])];
 125             System.out.println("Running subtest " + args[0] + " (" + subTest.getClass().getName() + ")");


< prev index next >