| 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() | 
|  |