< prev index next >

test/gc/g1/TestGCLogMessages.java

Print this page

        

*** 22,32 **** */ /* * @test TestGCLogMessages * @bug 8035406 8027295 8035398 8019342 8027959 8048179 8027962 8069330 ! * @summary Ensure that the PrintGCDetails output for a minor GC with G1 * includes the expected necessary messages. * @key gc * @library /testlibrary * @modules java.base/sun.misc * java.management --- 22,32 ---- */ /* * @test TestGCLogMessages * @bug 8035406 8027295 8035398 8019342 8027959 8048179 8027962 8069330 ! * @summary Ensure the output for a minor GC with G1 * includes the expected necessary messages. * @key gc * @library /testlibrary * @modules java.base/sun.misc * java.management
*** 36,46 **** import jdk.test.lib.OutputAnalyzer; public class TestGCLogMessages { private enum Level { ! OFF, FINER, FINEST; public boolean lessOrEqualTo(Level other) { return this.compareTo(other) < 0; } } --- 36,46 ---- import jdk.test.lib.OutputAnalyzer; public class TestGCLogMessages { private enum Level { ! OFF, DEBUG, TRACE; public boolean lessOrEqualTo(Level other) { return this.compareTo(other) < 0; } }
*** 54,93 **** } }; private LogMessageWithLevel allLogMessages[] = new LogMessageWithLevel[] { // Update RS ! new LogMessageWithLevel("Scan HCC (ms)", Level.FINER), // Ext Root Scan ! new LogMessageWithLevel("Thread Roots (ms)", Level.FINEST), ! new LogMessageWithLevel("StringTable Roots (ms)", Level.FINEST), ! new LogMessageWithLevel("Universe Roots (ms)", Level.FINEST), ! new LogMessageWithLevel("JNI Handles Roots (ms)", Level.FINEST), ! new LogMessageWithLevel("ObjectSynchronizer Roots (ms)", Level.FINEST), ! new LogMessageWithLevel("FlatProfiler Roots", Level.FINEST), ! new LogMessageWithLevel("Management Roots", Level.FINEST), ! new LogMessageWithLevel("SystemDictionary Roots", Level.FINEST), ! new LogMessageWithLevel("CLDG Roots", Level.FINEST), ! new LogMessageWithLevel("JVMTI Roots", Level.FINEST), ! new LogMessageWithLevel("SATB Filtering", Level.FINEST), ! new LogMessageWithLevel("CM RefProcessor Roots", Level.FINEST), ! new LogMessageWithLevel("Wait For Strong CLD", Level.FINEST), ! new LogMessageWithLevel("Weak CLD Roots", Level.FINEST), // Redirty Cards ! new LogMessageWithLevel("Redirty Cards", Level.FINER), ! new LogMessageWithLevel("Parallel Redirty", Level.FINEST), ! new LogMessageWithLevel("Redirtied Cards", Level.FINEST), // Misc Top-level ! new LogMessageWithLevel("Code Root Purge", Level.FINER), ! new LogMessageWithLevel("String Dedup Fixup", Level.FINER), ! new LogMessageWithLevel("Expand Heap After Collection", Level.FINER), // Free CSet ! new LogMessageWithLevel("Young Free CSet", Level.FINEST), ! new LogMessageWithLevel("Non-Young Free CSet", Level.FINEST), // Humongous Eager Reclaim ! new LogMessageWithLevel("Humongous Reclaim", Level.FINER), ! new LogMessageWithLevel("Humongous Register", Level.FINER), }; void checkMessagesAtLevel(OutputAnalyzer output, LogMessageWithLevel messages[], Level level) throws Exception { for (LogMessageWithLevel l : messages) { if (level.lessOrEqualTo(l.level)) { --- 54,93 ---- } }; private LogMessageWithLevel allLogMessages[] = new LogMessageWithLevel[] { // Update RS ! new LogMessageWithLevel("Scan HCC", Level.DEBUG), // Ext Root Scan ! new LogMessageWithLevel("Thread Roots:", Level.DEBUG), ! new LogMessageWithLevel("StringTable Roots:", Level.DEBUG), ! new LogMessageWithLevel("Universe Roots:", Level.DEBUG), ! new LogMessageWithLevel("JNI Handles Roots:", Level.DEBUG), ! new LogMessageWithLevel("ObjectSynchronizer Roots:", Level.DEBUG), ! new LogMessageWithLevel("FlatProfiler Roots", Level.DEBUG), ! new LogMessageWithLevel("Management Roots", Level.DEBUG), ! new LogMessageWithLevel("SystemDictionary Roots", Level.DEBUG), ! new LogMessageWithLevel("CLDG Roots", Level.DEBUG), ! new LogMessageWithLevel("JVMTI Roots", Level.DEBUG), ! new LogMessageWithLevel("SATB Filtering", Level.DEBUG), ! new LogMessageWithLevel("CM RefProcessor Roots", Level.DEBUG), ! new LogMessageWithLevel("Wait For Strong CLD", Level.DEBUG), ! new LogMessageWithLevel("Weak CLD Roots", Level.DEBUG), // Redirty Cards ! new LogMessageWithLevel("Redirty Cards", Level.DEBUG), ! new LogMessageWithLevel("Parallel Redirty", Level.DEBUG), ! new LogMessageWithLevel("Redirtied Cards", Level.DEBUG), // Misc Top-level ! new LogMessageWithLevel("Code Root Purge", Level.DEBUG), ! new LogMessageWithLevel("String Dedup Fixup", Level.DEBUG), ! new LogMessageWithLevel("Expand Heap After Collection", Level.DEBUG), // Free CSet ! new LogMessageWithLevel("Young Free CSet", Level.TRACE), ! new LogMessageWithLevel("Non-Young Free CSet", Level.TRACE), // Humongous Eager Reclaim ! new LogMessageWithLevel("Humongous Reclaim", Level.DEBUG), ! new LogMessageWithLevel("Humongous Register", Level.DEBUG), }; void checkMessagesAtLevel(OutputAnalyzer output, LogMessageWithLevel messages[], Level level) throws Exception { for (LogMessageWithLevel l : messages) { if (level.lessOrEqualTo(l.level)) {
*** 114,170 **** output.shouldHaveExitValue(0); pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-XX:+UseStringDeduplication", "-Xmx10M", ! "-XX:+PrintGCDetails", GCTest.class.getName()); output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, allLogMessages, Level.FINER); pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-XX:+UseStringDeduplication", "-Xmx10M", ! "-XX:+PrintGCDetails", ! "-XX:+UnlockExperimentalVMOptions", ! "-XX:G1LogLevel=finest", GCTest.class.getName()); output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, allLogMessages, Level.FINEST); output.shouldHaveExitValue(0); } LogMessageWithLevel exhFailureMessages[] = new LogMessageWithLevel[] { ! new LogMessageWithLevel("Evacuation Failure", Level.FINER), ! new LogMessageWithLevel("Recalculate Used", Level.FINEST), ! new LogMessageWithLevel("Remove Self Forwards", Level.FINEST), ! new LogMessageWithLevel("Restore RemSet", Level.FINEST), }; private void testWithToSpaceExhaustionLogs() throws Exception { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-Xmx32M", "-Xmn16M", ! "-XX:+PrintGCDetails", GCTestWithToSpaceExhaustion.class.getName()); OutputAnalyzer output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, exhFailureMessages, Level.FINER); output.shouldHaveExitValue(0); pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-Xmx32M", "-Xmn16M", ! "-XX:+PrintGCDetails", ! "-XX:+UnlockExperimentalVMOptions", ! "-XX:G1LogLevel=finest", GCTestWithToSpaceExhaustion.class.getName()); output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, exhFailureMessages, Level.FINEST); output.shouldHaveExitValue(0); } static class GCTest { private static byte[] garbage; --- 114,166 ---- output.shouldHaveExitValue(0); pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-XX:+UseStringDeduplication", "-Xmx10M", ! "-Xlog:gc+phases=debug", GCTest.class.getName()); output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, allLogMessages, Level.DEBUG); pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-XX:+UseStringDeduplication", "-Xmx10M", ! "-Xlog:gc+phases=trace", GCTest.class.getName()); output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, allLogMessages, Level.TRACE); output.shouldHaveExitValue(0); } LogMessageWithLevel exhFailureMessages[] = new LogMessageWithLevel[] { ! new LogMessageWithLevel("Evacuation Failure", Level.DEBUG), ! new LogMessageWithLevel("Recalculate Used", Level.TRACE), ! new LogMessageWithLevel("Remove Self Forwards", Level.TRACE), ! new LogMessageWithLevel("Restore RemSet", Level.TRACE), }; private void testWithToSpaceExhaustionLogs() throws Exception { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-Xmx32M", "-Xmn16M", ! "-Xlog:gc+phases=debug", GCTestWithToSpaceExhaustion.class.getName()); OutputAnalyzer output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, exhFailureMessages, Level.DEBUG); output.shouldHaveExitValue(0); pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC", "-Xmx32M", "-Xmn16M", ! "-Xlog:gc+phases=trace", GCTestWithToSpaceExhaustion.class.getName()); output = new OutputAnalyzer(pb.start()); ! checkMessagesAtLevel(output, exhFailureMessages, Level.TRACE); output.shouldHaveExitValue(0); } static class GCTest { private static byte[] garbage;
< prev index next >