Index: tools/perf/measurements/oilpan_gc_times_unittest.py |
diff --git a/tools/perf/measurements/oilpan_gc_times_unittest.py b/tools/perf/measurements/oilpan_gc_times_unittest.py |
index ae359758d27c9db6134da4adb7f6fb445c8732b5..1d20ec22b8462202476d3cfd0123f60baa118c2b 100644 |
--- a/tools/perf/measurements/oilpan_gc_times_unittest.py |
+++ b/tools/perf/measurements/oilpan_gc_times_unittest.py |
@@ -3,6 +3,7 @@ |
# found in the LICENSE file. |
from measurements import oilpan_gc_times |
+from telemetry.timeline.event import TimelineEvent |
from telemetry.unittest_util import options_for_unittests |
from telemetry.unittest_util import page_test_test_case |
@@ -16,6 +17,71 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase): |
def setUp(self): |
self._options = options_for_unittests.GetCopy() |
+ def testForParsing(self): |
+ def getMetric(results, name): |
+ metrics = results.FindAllPageSpecificValuesNamed(name) |
+ self.assertEquals(1, len(metrics)) |
+ return metrics[0].GetBuildbotValue() |
+ |
+ parser = oilpan_gc_times._OilpanGCTimesBase() |
+ events = [TimelineEvent('', 'Heap::collectGarbage', 0, 0, 11, 18, |
+ {'precise': True, 'forced': False}), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadState::completeSweep', 0, 0, 11, 18), |
+ TimelineEvent('', 'Heap::collectGarbage', 0, 0, 11, 18, |
+ {'precise': True, 'forced': False}), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadState::completeSweep', 0, 0, 11, 18), |
+ TimelineEvent('', 'Heap::collectGarbage', 0, 0, 11, 18, |
+ {'precise': False, 'forced': False}), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 180, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadState::completeSweep', 0, 0, 11, 18), |
+ TimelineEvent('', 'Heap::collectGarbage', 0, 0, 11, 18, |
+ {'precise': True, 'forced': False}), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadState::completeSweep', 0, 0, 11, 18), |
+ TimelineEvent('', 'Heap::collectGarbage', 0, 0, 11, 18, |
+ {'precise': False, 'forced': True}), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadState::completeSweep', 0, 0, 11, 18), |
+ TimelineEvent('', 'Heap::collectGarbage', 0, 0, 11, 18, |
+ {'precise': True, 'forced': True}), |
+ TimelineEvent('', 'ThreadHeap::coalesce', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadHeap::lazySweepPages', 0, 0, 11, 18), |
+ TimelineEvent('', 'ThreadState::completeSweep', 0, 0, 11, 18)] |
+ |
+ results = parser._ParseEventsForTest(events, False, options=self._options) |
+ self.assertEquals(7, len(getMetric(results, 'oilpan_coalesce'))) |
+ self.assertEquals(3, len(getMetric(results, 'oilpan_precise_mark'))) |
+ self.assertEquals(3, len(getMetric(results, 'oilpan_precise_lazy_sweep'))) |
+ self.assertEquals(3, len(getMetric(results, |
+ 'oilpan_precise_complete_sweep'))) |
+ self.assertEquals(1, len(getMetric(results, 'oilpan_conservative_mark'))) |
+ self.assertEquals(1, len(getMetric(results, |
+ 'oilpan_conservative_lazy_sweep'))) |
+ self.assertEquals(1, len(getMetric(results, |
+ 'oilpan_conservative_complete_sweep'))) |
+ |
+ # Include forced GC events |
+ results = parser._ParseEventsForTest(events, True, options=self._options) |
+ self.assertEquals(7, len(getMetric(results, 'oilpan_coalesce'))) |
+ self.assertEquals(4, len(getMetric(results, 'oilpan_precise_mark'))) |
+ self.assertEquals(4, len(getMetric(results, 'oilpan_precise_lazy_sweep'))) |
+ self.assertEquals(4, len(getMetric(results, |
+ 'oilpan_precise_complete_sweep'))) |
+ self.assertEquals(2, len(getMetric(results, 'oilpan_conservative_mark'))) |
+ self.assertEquals(2, len(getMetric(results, |
+ 'oilpan_conservative_lazy_sweep'))) |
+ self.assertEquals(2, len(getMetric(results, |
+ 'oilpan_conservative_complete_sweep'))) |
+ |
def testForSmoothness(self): |
ps = self.CreatePageSetFromFileInUnittestDataDir('create_many_objects.html') |
measurement = oilpan_gc_times.OilpanGCTimesForSmoothness() |