/*
* Copyright 2003-2012 Yusuke Yamamoto
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package samurai.gc;
public class TestSunGCParser extends AbstractGraphTest{
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testStandardVerbosegc() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{0.0254331d, 115008d, 103309d});
expectedMax.add(129664d);
expectedMax.add(129664d);
assertTrue(parser.parse("[GC 115008K->103309K(129664K), 0.0254331 secs]", this));
expected.add(new double[]{0.0328756d, 114957d, 105199d});
assertTrue(parser.parse("[GC 114957K->105199K(129664K), 0.0328756 secs]", this));
expectedMax.add(329551d);
expectedMax.add(329551d);
expected.add(new double[]{5.4551339d, 116847d, 48717d});
assertFalse(parser.parse("[Full GC[Unloading class sun.reflect.GeneratedConstructorAccessor74]", this));
assertFalse(parser.parse("[Unloading class jsp_servlet._common._jsp.__403]", this));
assertFalse(parser.parse("[Unloading class jsp_servlet._themes._custom._jsp.__comments]", this));
assertFalse(parser.parse("[Unloading class sun.reflect.GeneratedMethodAccessor224]", this));
assertFalse(parser.parse("[Unloading class jsp_servlet._styles.__global_css]", this));
assertFalse(parser.parse("[Unloading class sun.reflect.GeneratedConstructorAccessor78]", this));
assertFalse(parser.parse("[Unloading class jsp_servlet._themes._custom._jsp.__trackbacks]", this));
assertFalse(parser.parse("[Unloading class jsp_servlet._themes._custom._jsp.__blogentries]", this));
assertFalse(parser.parse("[Unloading class sun.reflect.GeneratedConstructorAccessor69]", this));
assertFalse(parser.parse("[Unloading class sun.reflect.GeneratedConstructorAccessor75]", this));
assertTrue(parser.parse(" 116847K->48717K(329551K), 5.4551339 secs]", this));
expected.add(new double[]{1.0320474d, 61365d, 51414d});
assertTrue(parser.parse("[Full GC 61365K->51414K(129664K), 1.0320474 secs]", this));
expected.add(new double[]{0.0320474d, 60365d, 50414d});
assertTrue(parser.parse("[GC 60365K->50414K(129664K), 0.0320474 secs]", this));
parser.parse("", this);
assertEquals(5, count);
}
public void testUseParNewGC() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{.1106169d, 214067d, 16986d});
expectedMax.add(1022400d);
expectedMax.add(1022400d);
assertTrue(parser.parse("[ParNew 214067K->16986K(1022400K), 0.1106169 secs]", this));
expected.add(new double[]{.3251635d, 226778d, 33381d});
assertTrue(parser.parse("[ParNew 226778K->33381K(1022400K), 0.3251635 secs]", this));
assertEquals(2, count);
}
public void testCMSWithPrintGCTimeStamps() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{0.1580060d, 0d, 6086d});
expectedMax.add(3145728d);
expectedMax.add(3145728d);
expected.add(new double[]{13871d,13854d});
expectedMax.add(131072d);
expectedMax.add(131072d);
assertTrue(parser.parse("3.202: [Full GC 3.202: [CMS: 0K->6086K(3145728K), 0.1578300 secs] 301994K->6086K(5976896K), [CMS Perm : 13871K->13854K(131072K)], 0.1580060 secs]", this));
assertEquals(2, count);
expected.add(new double[]{0.2179840d, 2516608d, 104213d});
expectedMax.add(2831168d);
expectedMax.add(2831168d);
assertTrue(parser.parse("34.966: [GC 34.966: [ParNew: 2516608K->104213K(2831168K), 0.2179840 secs] 2522694K->110300K(5976896K), 0.2181880 secs]", this));
assertEquals(3, count);
expected.add(new double[]{0.2045160d, 2620821d, 129482d});
assertTrue(parser.parse("374.638: [GC 374.638: [ParNew: 2620821K->129482K(2831168K), 0.2045160 secs] 2626908K->135568K(5976896K), 0.2046990 secs]", this));
assertEquals(4, count);
expected.add(new double[]{0.9489080d, 142151d, 182754d});
expected.add(new double[]{131071d,92812d});
expectedMax.add(3145728d);
assertTrue(parser.parse("12656.259: [Full GC 12656.259: [CMS (concurrent mode failure): 142151K->182754K(3145728K), 0.9486870 secs] 2099331K->182754K(5976896K), [CMS Perm : 131071K->92812K(131072K)], 0.9489080 secs]", this));
}
public void testPrintGCTimeStamps() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{.1489631d, 79733d, 4275d});
expectedMax.add(1022400d);
expectedMax.add(1022400d);
assertTrue(parser.parse("8.861: [Full GC 79733K->4275K(1022400K), 0.1489631 secs]", this));
expected.add(new double[]{.3251635d, 226778d, 33381d});
assertTrue(parser.parse("42.062: [ParNew 226778K->33381K(1022400K), 0.3251635 secs]", this));
expected.add(new double[]{.3251635d, 226778d, 33381d});
assertTrue(parser.parse("42.062: [GC 226778K->33381K(1022400K), 0.3251635 secs]", this));
assertEquals(3, count);
}
public void testParallelGCDetails() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{0.0210314d, 25019d, 4285d});
expectedMax.add(32384d);
expectedMax.add(32384d);
assertTrue(parser.parse("[GC [PSYoungGen: 25019K->4285K(32384K)] 49755K->29433K(62656K), 0.0210314 secs]", this));
expected.add(new double[]{0.0188023d, 28733d, 1128d});
assertTrue(parser.parse("[GC [PSYoungGen: 28733K->1128K(32000K)] 53881K->29949K(62272K), 0.0188023 secs]", this));
expected.add(new double[]{0.2284255d, 1128d, 0d});
expected.add(new double[]{0.2284255d, 28821d, 21467d});
expected.add(new double[]{11772d, 11755d});
expectedMax.add(66176d);
expectedMax.add(66176d);
expectedMax.add(23552d);
expectedMax.add(23552d);
assertTrue(parser.parse("[Full GC [PSYoungGen: 1128K->0K(32000K)] [ParOldGen: 28821K->21467K(66176K)] 29949K->21467K(98176K) [PSPermGen: 11772K->11755K(23552K)], 0.2284255 secs]", this));
expected.add(new double[]{.3924338d, 7868d, 0d});
expected.add(new double[]{.3924338d, 65738d, 36992d});
expected.add(new double[]{11759d, 11758d});
expectedMax.add(99072d);
expectedMax.add(99072d);
expectedMax.add(26624d);
expectedMax.add(26624d);
assertTrue(parser.parse("[Full GC [PSYoungGen: 7868K->0K(23488K)] [ParOldGen: 65738K->36992K(99072K)] 73606K->36992K(122560K) [PSPermGen: 11759K->11758K(26624K)], 0.3924338 secs]", this));
assertEquals(8, count);
}
public void testPrintGCDetails() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{0.1165657d, 0d, 4271d});
expected.add(new double[]{9991d, 9996d});
expectedMax.add(786432d);
expectedMax.add(786432d);
expectedMax.add(131072d);
expectedMax.add(131072d);
assertTrue(parser.parse("[Full GC [Tenured: 0K->4271K(786432K), 0.1163157 secs] 79759K->4271K(1022400K), [Perm : 9991K->9996K(131072K)], 0.1165657 secs]", this));
assertEquals(2, count);
expected.add(new double[]{0.1117439d, 0d, 4271d});
expected.add(new double[]{9999d, 9876d});
assertTrue(parser.parse("8.017: [Full GC 8.017: [Tenured: 0K->4271K(786432K), 0.1114785 secs] 79759K->4271K(1022400K), [Perm : 9999K->9876K(131072K)], 0.1117439 secs]", this));
assertEquals(4, count);
expected.add(new double[]{0.1641700d, 0d, 4275d});
expected.add(new double[]{9993d, 9982d});
assertTrue(parser.parse("[Full GC [CMS: 0K->4275K(786432K), 0.1640437 secs] 89008K->4275K(1048384K), [CMS Perm : 9993K->9982K(131072K)], 0.1641700 secs]", this));
assertEquals(6, count);
expected.add(new double[]{0.1936041d, 0d, 4273d});
expected.add(new double[]{9997d, 9986d});
assertTrue(parser.parse("7.675: [Full GC 7.675: [CMS: 0K->4273K(786432K), 0.1872279 secs] 89008K->4273K(1048384K), [CMS Perm : 9997K->9986K(131072K)], 0.1936041 secs]", this));
assertEquals(8, count);
expected.add(new double[]{0.0784815d, 209792d, 12709d});
expectedMax.add(235968d);
expectedMax.add(235968d);
assertTrue(parser.parse("23.266: [GC 23.266: [ParNew: 209792K->12709K(235968K), 0.0784815 secs] 214067K->16985K(1022400K), 0.0785944 secs]", this));
assertEquals(9, count);
expected.add(new double[]{0.1604727d, 222501d, 26176d});
expectedMax.add(2359608d);
expectedMax.add(2359608d);
assertTrue(parser.parse("37.225: [GC 37.225: [ParNew: 222501K->26176K(2359608K), 0.1604727 secs] 226777K->33265K(1022400K), 0.1605807 secs]", this));
assertEquals(10, count);
}
/**
[GC [DefNew: 512K->64K(576K), 0.0023976 secs] 512K->316K(1984K), 0.0024659 secs]
[GC [DefNew: 572K->64K(576K), 0.0019750 secs] 825K->472K(1984K), 0.0020216 secs]
[GC [DefNew: 576K->64K(576K), 0.0015165 secs] 984K->687K(1984K), 0.0015580 secs]
[GC [DefNew: 545K->64K(576K), 0.0017274 secs] 1169K->899K(1984K), 0.0017770 secs]
[GC [DefNew: 576K->63K(576K), 0.0010807 secs] 1411K->1012K(1984K), 0.0011258 secs]
[GC [DefNew: 575K->64K(576K), 0.0025559 secs] 1524K->1182K(1984K), 0.0026065 secs]
[GC [DefNew: 544K->63K(576K), 0.0030917 secs] 1663K->1375K(1984K), 0.0031511 secs]
[GC [DefNew: 538K->64K(576K), 0.0014637 secs][Tenured: 1427K->1074K(1536K), 0.0200039 secs] 1849K->1074K(2112K), 0.0215485 secs]
[Full GC [DefNew: 1107K->128K(1152K), 0.0034856 secs] 13000K->12163K(15636K), 0.0035686 secs]
*/
public void testPrintGCDetails2() throws Exception {
SunGCParser parser = new SunGCParser();
expected.add(new double[]{0.0023976d, 512d, 64d});
expectedMax.add(576d);
expectedMax.add(576d);
assertTrue(parser.parse("[GC [DefNew: 512K->64K(576K), 0.0023976 secs] 512K->316K(1984K), 0.0024659 secs]", this));
expected.add(new double[]{0.0014637d, 538d, 64d});
expected.add(new double[]{0.0215485d, 1427d, 1074d});
expectedMax.add(1536d);
expectedMax.add(1536d);
assertTrue(parser.parse("[GC [DefNew: 538K->64K(576K), 0.0014637 secs][Tenured: 1427K->1074K(1536K), 0.0200039 secs] 1849K->1074K(2112K), 0.0215485 secs]", this));
expected.add(new double[]{0.0034856d, 1107d, 128d});
expectedMax.add(1152d);
expectedMax.add(1152d);
assertTrue(parser.parse("[Full GC [DefNew: 1107K->128K(1152K), 0.0034856 secs] 13000K->12163K(15636K), 0.0035686 secs]", this));
}
}