|
| 1 | +package com.tagtraum.perf.gcviewer.imp; |
| 2 | + |
| 3 | +import static org.hamcrest.Matchers.closeTo; |
| 4 | +import static org.hamcrest.Matchers.is; |
| 5 | +import static org.junit.Assert.assertThat; |
| 6 | + |
| 7 | +import java.io.ByteArrayInputStream; |
| 8 | +import java.io.IOException; |
| 9 | +import java.io.InputStream; |
| 10 | +import java.util.logging.Level; |
| 11 | + |
| 12 | +import com.tagtraum.perf.gcviewer.UnittestHelper; |
| 13 | +import com.tagtraum.perf.gcviewer.UnittestHelper.FOLDER; |
| 14 | +import com.tagtraum.perf.gcviewer.model.GCModel; |
| 15 | +import com.tagtraum.perf.gcviewer.model.GCResource; |
| 16 | +import com.tagtraum.perf.gcviewer.model.GcResourceFile; |
| 17 | +import org.junit.Test; |
| 18 | + |
| 19 | +/** |
| 20 | + * Test unified java logging G1 algorithm in OpenJDK 11 |
| 21 | + */ |
| 22 | +public class TestDataReaderUJL11G1 { |
| 23 | + private GCModel getGCModelFromLogFile(String fileName) throws IOException { |
| 24 | + return UnittestHelper.getGCModelFromLogFile(fileName, FOLDER.OPENJDK_UJL, DataReaderUnifiedJvmLogging.class); |
| 25 | + } |
| 26 | + |
| 27 | + @Test |
| 28 | + public void testDefaultsPauseYoungNormal() throws Exception { |
| 29 | + TestLogHandler handler = new TestLogHandler(); |
| 30 | + handler.setLevel(Level.WARNING); |
| 31 | + GCResource gcResource = new GcResourceFile("byteArray"); |
| 32 | + gcResource.getLogger().addHandler(handler); |
| 33 | + InputStream in = new ByteArrayInputStream( |
| 34 | + ("[1.113s][info][gc] GC(4) Pause Young (Normal) (G1 Evacuation Pause) 70M->70M(128M) 12.615ms") |
| 35 | + .getBytes()); |
| 36 | + |
| 37 | + DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in); |
| 38 | + GCModel model = reader.read(); |
| 39 | + |
| 40 | + assertThat("number of warnings", handler.getCount(), is(0)); |
| 41 | + assertThat("number of events", model.size(), is(1)); |
| 42 | + assertThat("pause", model.get(0).getPause(), closeTo(0.012615, 0.00000001)); |
| 43 | + } |
| 44 | + |
| 45 | + @Test |
| 46 | + public void testDefaultsPauseYoungConcurrentStart() throws Exception { |
| 47 | + TestLogHandler handler = new TestLogHandler(); |
| 48 | + handler.setLevel(Level.WARNING); |
| 49 | + GCResource gcResource = new GcResourceFile("byteArray"); |
| 50 | + gcResource.getLogger().addHandler(handler); |
| 51 | + InputStream in = new ByteArrayInputStream( |
| 52 | + ("[1.155s][info][gc] GC(5) Pause Young (Concurrent Start) (G1 Evacuation Pause) 84M->79M(128M) 5.960ms") |
| 53 | + .getBytes()); |
| 54 | + |
| 55 | + DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in); |
| 56 | + GCModel model = reader.read(); |
| 57 | + |
| 58 | + assertThat("number of warnings", handler.getCount(), is(0)); |
| 59 | + assertThat("number of events", model.size(), is(1)); |
| 60 | + assertThat("heap before", model.get(0).getPreUsed(), is(84 * 1024)); |
| 61 | + } |
| 62 | + |
| 63 | + @Test |
| 64 | + public void testDefaultsPauseYoungPrepareMixed() throws Exception { |
| 65 | + TestLogHandler handler = new TestLogHandler(); |
| 66 | + handler.setLevel(Level.WARNING); |
| 67 | + GCResource gcResource = new GcResourceFile("byteArray"); |
| 68 | + gcResource.getLogger().addHandler(handler); |
| 69 | + InputStream in = new ByteArrayInputStream( |
| 70 | + ("[2.649s][info][gc] GC(218) Pause Young (Prepare Mixed) (G1 Evacuation Pause) 81M->79M(128M) 1.322ms") |
| 71 | + .getBytes()); |
| 72 | + |
| 73 | + DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in); |
| 74 | + GCModel model = reader.read(); |
| 75 | + |
| 76 | + assertThat("number of warnings", handler.getCount(), is(0)); |
| 77 | + assertThat("number of events", model.size(), is(1)); |
| 78 | + assertThat("heap after", model.get(0).getPostUsed(), is(79 * 1024)); |
| 79 | + } |
| 80 | + |
| 81 | + @Test |
| 82 | + public void testDefaultsPauseYoungMixed() throws Exception { |
| 83 | + TestLogHandler handler = new TestLogHandler(); |
| 84 | + handler.setLevel(Level.WARNING); |
| 85 | + GCResource gcResource = new GcResourceFile("byteArray"); |
| 86 | + gcResource.getLogger().addHandler(handler); |
| 87 | + InputStream in = new ByteArrayInputStream( |
| 88 | + ("[2.651s][info][gc] GC(219) Pause Young (Mixed) (G1 Evacuation Pause) 84M->83M(128M) 1.599ms") |
| 89 | + .getBytes()); |
| 90 | + |
| 91 | + DataReader reader = new DataReaderUnifiedJvmLogging(gcResource, in); |
| 92 | + GCModel model = reader.read(); |
| 93 | + |
| 94 | + assertThat("number of warnings", handler.getCount(), is(0)); |
| 95 | + assertThat("number of events", model.size(), is(1)); |
| 96 | + assertThat("total heap", model.get(0).getTotal(), is(128 * 1024)); |
| 97 | + } |
| 98 | + |
| 99 | +} |
0 commit comments