Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: tools/perf/measurements/v8_detached_context_age_in_gc_unittest.py

Issue 930333002: [telemetry] Add new measurement that counts number of GCs needed to free V8 context. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments from Ross Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 from measurements import v8_detached_context_age_in_gc
6 from telemetry.core import wpr_modes
7 from telemetry.page import page_test
8 from telemetry.results import page_test_results
9 from telemetry.unittest_util import options_for_unittests
10 from telemetry.unittest_util import page_test_test_case
11 from telemetry.value import skip
12
13
14 class FakePage(object):
15 def __init__(self, url):
16 self.url = url
17 self.is_file = url.startswith('file://')
18
19
20 class FakeTab(object):
21 def __init__(self, histograms):
22 self.histograms = histograms
23 self.current_histogram_index = 0
24
25 def EvaluateJavaScript(self, script):
26 if 'V8.DetachedContextAgeInGC' in script:
27 self.current_histogram_index += 1
28 return self.histograms[self.current_histogram_index - 1]
29 return "{}"
Sami 2015/02/18 15:30:26 nit: single quotes
ulan 2015/02/18 15:58:41 Done.
30
31 def CollectGarbage(self):
32 pass
33
34
35 def _MeasureFakePage(histograms):
36 results = page_test_results.PageTestResults()
37 page = FakePage("file://blank.html")
Sami 2015/02/18 15:30:26 ditto
ulan 2015/02/18 15:58:41 Done.
38 tab = FakeTab(histograms)
39 metric = v8_detached_context_age_in_gc.V8DetachedContextAgeInGC()
40 results.WillRunPage(page)
41 metric.DidNavigateToPage(page, tab)
42 metric.ValidateAndMeasurePage(page, tab, results)
43 results.DidRunPage(page)
44 return results
45
46
47 def _ActualValues(results):
48 return dict(list((v.name, v)) for v in results.all_page_specific_values)
Sami 2015/02/18 15:30:27 nit: "list()" is redundant
ulan 2015/02/18 15:58:41 Done.
49
50
51 class V8DetachedContextAgeInGCTests(page_test_test_case.PageTestTestCase):
52
53 def setUp(self):
54 self._options = options_for_unittests.GetCopy()
55 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF
56
57 def testWithNoData(self):
58 histograms = [
59 """{"count": 0, "buckets": []}""",
60 """{"count": 0, "buckets": []}"""
61 ]
62 results = _MeasureFakePage(histograms)
63 actual = _ActualValues(results)
64 self.assertTrue('skip' in actual)
65 self.assertFalse('V8_DetachedContextAgeInGC' in actual)
66
67 def testWithData(self):
Sami 2015/02/18 15:30:26 Could we write this test in a way that uses the re
ulan 2015/02/18 15:58:41 Do you mean: create a real html page, let the brow
Sami 2015/02/18 16:20:56 Breaking a unit test instead triggering a perf reg
68 histograms = [
69 """{"count": 3, "buckets": [{"low": 1, "high": 2, "count": 1},
70 {"low": 2, "high": 3, "count": 2}]}""",
71 """{"count": 4, "buckets": [{"low": 1, "high": 2, "count": 2},
72 {"low": 2, "high": 3, "count": 2}]}""",
73 ]
74 results = _MeasureFakePage(histograms)
75 actual = _ActualValues(results)['V8_DetachedContextAgeInGC']
76 self.assertEqual(2, actual.value)
77 self.assertEqual('garbage_collections', actual.units)
OLDNEW
« no previous file with comments | « tools/perf/measurements/v8_detached_context_age_in_gc.py ('k') | tools/perf/page_sets/page_reload_cases.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698