OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 from measurements import oilpan_gc_times | 5 from measurements import oilpan_gc_times |
6 | 6 |
7 from telemetry.results import page_test_results | 7 from telemetry.results import page_test_results |
8 from telemetry.timeline import model | 8 from telemetry.timeline import model |
9 from telemetry.timeline import slice as slice_data | 9 from telemetry.timeline import slice as slice_data |
10 from telemetry.unittest_util import options_for_unittests | 10 from telemetry.unittest_util import options_for_unittests |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 duration, | 56 duration, |
57 timestamp, | 57 timestamp, |
58 duration, | 58 duration, |
59 args) | 59 args) |
60 self._renderer_thread.async_slices.append(new_slice) | 60 self._renderer_thread.async_slices.append(new_slice) |
61 return new_slice | 61 return new_slice |
62 | 62 |
63 def ClearResults(self): | 63 def ClearResults(self): |
64 self._results = page_test_results.PageTestResults() | 64 self._results = page_test_results.PageTestResults() |
65 | 65 |
66 | |
67 class OilpanGCTimesTest(page_test_test_case.PageTestTestCase): | 66 class OilpanGCTimesTest(page_test_test_case.PageTestTestCase): |
68 """Smoke test for Oilpan GC pause time measurements. | 67 """Smoke test for Oilpan GC pause time measurements. |
69 | 68 |
70 Runs OilpanGCTimes measurement on some simple pages and verifies | 69 Runs OilpanGCTimes measurement on some simple pages and verifies |
71 that all metrics were added to the results. The test is purely functional, | 70 that all metrics were added to the results. The test is purely functional, |
72 i.e. it only checks if the metrics are present and non-zero. | 71 i.e. it only checks if the metrics are present and non-zero. |
73 """ | 72 """ |
74 _KEY_MARK = 'Heap::collectGarbage' | 73 _KEY_MARK = 'Heap::collectGarbage' |
75 _KEY_LAZY_SWEEP = 'ThreadHeap::lazySweepPages' | 74 _KEY_LAZY_SWEEP = 'ThreadHeap::lazySweepPages' |
76 _KEY_COMPLETE_SWEEP = 'ThreadState::completeSweep' | 75 _KEY_COMPLETE_SWEEP = 'ThreadState::completeSweep' |
77 _KEY_COALESCE = 'ThreadHeap::coalesce' | 76 _KEY_COALESCE = 'ThreadHeap::coalesce' |
78 _KEY_MEASURE = 'BlinkGCTimeMeasurement' | 77 _KEY_MEASURE = 'BlinkGCTimeMeasurement' |
79 | 78 |
80 def setUp(self): | 79 def setUp(self): |
81 self._options = options_for_unittests.GetCopy() | 80 self._options = options_for_unittests.GetCopy() |
82 | 81 |
| 82 # Disable for accessing private API of _OilpanGCTimesBase. |
| 83 # pylint: disable=protected-access |
83 def testForParsingOldFormat(self): | 84 def testForParsingOldFormat(self): |
84 def getMetric(results, name): | 85 def getMetric(results, name): |
85 metrics = results.FindAllPageSpecificValuesNamed(name) | 86 metrics = results.FindAllPageSpecificValuesNamed(name) |
86 self.assertEquals(1, len(metrics)) | 87 self.assertEquals(1, len(metrics)) |
87 return metrics[0].GetBuildbotValue() | 88 return metrics[0].GetBuildbotValue() |
88 | 89 |
89 data = self._GenerateDataForParsingOldFormat() | 90 data = self._GenerateDataForParsingOldFormat() |
90 | 91 |
91 measurement = oilpan_gc_times._OilpanGCTimesBase() | 92 measurement = oilpan_gc_times._OilpanGCTimesBase() |
92 measurement._renderer_process = data._renderer_process | 93 measurement._renderer_process = data._renderer_process |
93 measurement._timeline_model = data._model | 94 measurement._timeline_model = data._model |
94 measurement.ValidateAndMeasurePage(None, None, data.results) | 95 measurement.ValidateAndMeasurePage(None, None, data.results) |
95 | 96 |
96 results = data.results | 97 results = data.results |
97 self.assertEquals(7, len(getMetric(results, 'oilpan_coalesce'))) | 98 self.assertEquals(7, len(getMetric(results, 'oilpan_coalesce'))) |
98 self.assertEquals(3, len(getMetric(results, 'oilpan_precise_mark'))) | 99 self.assertEquals(3, len(getMetric(results, 'oilpan_precise_mark'))) |
99 self.assertEquals(3, len(getMetric(results, 'oilpan_precise_lazy_sweep'))) | 100 self.assertEquals(3, len(getMetric(results, 'oilpan_precise_lazy_sweep'))) |
100 self.assertEquals(3, len(getMetric(results, | 101 self.assertEquals(3, len(getMetric(results, |
101 'oilpan_precise_complete_sweep'))) | 102 'oilpan_precise_complete_sweep'))) |
102 self.assertEquals(1, len(getMetric(results, 'oilpan_conservative_mark'))) | 103 self.assertEquals(1, len(getMetric(results, 'oilpan_conservative_mark'))) |
103 self.assertEquals(1, len(getMetric(results, | 104 self.assertEquals(1, len(getMetric(results, |
104 'oilpan_conservative_lazy_sweep'))) | 105 'oilpan_conservative_lazy_sweep'))) |
105 self.assertEquals(1, len(getMetric(results, | 106 self.assertEquals(1, len(getMetric(results, |
106 'oilpan_conservative_complete_sweep'))) | 107 'oilpan_conservative_complete_sweep'))) |
107 self.assertEquals(2, len(getMetric(results, 'oilpan_forced_mark'))) | 108 self.assertEquals(2, len(getMetric(results, 'oilpan_forced_mark'))) |
108 self.assertEquals(2, len(getMetric(results, 'oilpan_forced_lazy_sweep'))) | 109 self.assertEquals(2, len(getMetric(results, 'oilpan_forced_lazy_sweep'))) |
109 self.assertEquals(2, len(getMetric(results, | 110 self.assertEquals(2, len(getMetric(results, |
110 'oilpan_forced_complete_sweep'))) | 111 'oilpan_forced_complete_sweep'))) |
111 | 112 |
| 113 # Disable for accessing private API of _OilpanGCTimesBase. |
| 114 # pylint: disable=protected-access |
112 def testForParsing(self): | 115 def testForParsing(self): |
113 def getMetric(results, name): | 116 def getMetric(results, name): |
114 metrics = results.FindAllPageSpecificValuesNamed(name) | 117 metrics = results.FindAllPageSpecificValuesNamed(name) |
115 self.assertEquals(1, len(metrics)) | 118 self.assertEquals(1, len(metrics)) |
116 return metrics[0].GetBuildbotValue() | 119 return metrics[0].GetBuildbotValue() |
117 | 120 |
118 data = self._GenerateDataForParsing() | 121 data = self._GenerateDataForParsing() |
119 | 122 |
120 measurement = oilpan_gc_times._OilpanGCTimesBase() | 123 measurement = oilpan_gc_times._OilpanGCTimesBase() |
121 measurement._renderer_process = data._renderer_process | 124 measurement._renderer_process = data._renderer_process |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 data.AddSlice(self._KEY_COMPLETE_SWEEP, 862, 42, {}) | 267 data.AddSlice(self._KEY_COMPLETE_SWEEP, 862, 42, {}) |
265 data.AddSlice(self._KEY_MARK, 904, 43, | 268 data.AddSlice(self._KEY_MARK, 904, 43, |
266 {'lazySweeping': False, 'gcReason': 'IdleGC'}) | 269 {'lazySweeping': False, 'gcReason': 'IdleGC'}) |
267 last_measure = data.AddSlice(self._KEY_COMPLETE_SWEEP, 947, 44, {}) | 270 last_measure = data.AddSlice(self._KEY_COMPLETE_SWEEP, 947, 44, {}) |
268 | 271 |
269 # Async event | 272 # Async event |
270 async_dur = last_measure.end - first_measure.start | 273 async_dur = last_measure.end - first_measure.start |
271 data.AddAsyncSlice(self._KEY_MEASURE, first_measure.start, async_dur, {}) | 274 data.AddAsyncSlice(self._KEY_MEASURE, first_measure.start, async_dur, {}) |
272 | 275 |
273 return data | 276 return data |
OLD | NEW |