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

Side by Side Diff: tools/perf/benchmarks/system_health_smoke_test.py

Issue 2110653002: [tools/perf] Add system_health_smoke_test that run all system health stories (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Disable failing tests Created 4 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2016 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 """Run the first page of one benchmark for every module.
petrcermak 2016/06/29 06:53:27 I don't think that this is the case. You seem to b
nednguyen 2016/06/29 18:16:41 Update the description completely. I was just copy
6
7 Only benchmarks that have a composable measurement are included.
petrcermak 2016/06/29 06:53:27 Not sure what this means.
nednguyen 2016/06/29 18:16:41 Removed this part.
8 Ideally this test would be comprehensive, however, running one page
9 of every benchmark would run impractically long.
10 """
11
12 import sys
13 import unittest
14
15 from telemetry import benchmark as benchmark_module
16 from telemetry import decorators
17 from telemetry.internal.browser import browser_finder
18 from telemetry.testing import options_for_unittests
19 from telemetry.testing import progress_reporter
20
21 from benchmarks import system_health
22
23
24 # We only cover memory system health benchmarks because other system health
25 # benchmarks should be using the same stories as memory's ones, only with less
petrcermak 2016/06/29 06:53:27 nit: s/less/fewer/ ("actions" are countable)
nednguyen 2016/06/29 18:16:41 Done.
26 # actions (no memory dumping).
27 _SH_BENCHMARKS_TO_SMOKE_TEST = [
28 system_health.DesktopMemorySystemHealth,
29 system_health.MobileMemorySystemHealth,
30 ]
31
32
33 _DISABLED_TESTS = [
34 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_hea lth.memory_desktop.load:tools:dropbox', # pylint: disable=line-too-long
petrcermak 2016/06/29 06:53:28 Could you please add a bug for each of these?
nednguyen 2016/06/29 18:16:41 Done. Looks like memory_mobile.load:games:bubbles
35 'benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_hea lth.memory_mobile.load:games:bubbles', # pylint: disable=line-too-long
36 ]
37
38
39 def SmokeTestGenerator(benchmark_class, story_to_smoke_test):
40 # NOTE TO SHERIFFS: DO NOT DISABLE THIS TEST.
41 #
42 # This smoke test dynamically tests all benchmarks. So disabling it for one
petrcermak 2016/06/29 06:53:27 s/all benchmarks/all system health user stories/ ?
nednguyen 2016/06/29 18:16:41 Done.
43 # failing or flaky benchmark would disable a much wider swath of coverage
44 # than is usally intended. Instead, if a test is failing, disable it by
45 # putting it in _DISABLED_TESTS list above.
46
47 @benchmark_module.Disabled('chromeos') # crbug.com/351114
48 def SmokeTest(self):
49 # Only measure a single story so that this test cycles reasonably quickly.
50 benchmark_class.options['pageset_repeat'] = 1
petrcermak 2016/06/29 06:53:27 Isn't this modifying the top-level benchmark? Why
nednguyen 2016/06/29 18:16:41 Done. Set these in options to make sure instead.
51 benchmark_class.options['page_repeat'] = 1
52
53 class SinglePageBenchmark(benchmark_class): # pylint: disable=no-init
54
55 def CreateStorySet(self, options):
56 # pylint: disable=super-on-old-class
57 story_set = super(SinglePageBenchmark, self).CreateStorySet(options)
58 assert story_to_smoke_test in story_set.stories
59 story_set.stories = [story_to_smoke_test]
60 return story_set
61
62 options = GenerateBenchmarkOptions(benchmark_class)
63 possible_browser = browser_finder.FindBrowser(options)
64 if possible_browser is None:
65 self.skipTest('Cannot find the browser to run the test.')
66 if (SinglePageBenchmark.ShouldDisable(possible_browser) or
67 not decorators.IsEnabled(benchmark_class, possible_browser)[0]):
68 self.skipTest('Benchmark %s is disabled' % SinglePageBenchmark.Name())
69
70 if self.id() in _DISABLED_TESTS:
71 self.skipTest('Test is explictly disabled')
72
73 self.assertEqual(0, SinglePageBenchmark().Run(options),
74 msg='Failed: %s' % benchmark_class)
75
76 return SmokeTest
77
78
79 def GenerateBenchmarkOptions(benchmark_class):
80 # Set the benchmark's default arguments.
81 options = options_for_unittests.GetCopy()
82 options.output_format = 'none'
83 parser = options.CreateParser()
84
85 benchmark_class.AddCommandLineArgs(parser)
86 benchmark_module.AddCommandLineArgs(parser)
87 benchmark_class.SetArgumentDefaults(parser)
88 options.MergeDefaultValues(parser.get_default_values())
89
90 benchmark_class.ProcessCommandLineArgs(None, options)
91 benchmark_module.ProcessCommandLineArgs(None, options)
92 return options
93
94
95 def load_tests(loader, standard_tests, pattern):
96 del loader, standard_tests, pattern # unused
97 suite = progress_reporter.TestSuite()
98 for benchmark_class in _SH_BENCHMARKS_TO_SMOKE_TEST:
99 assert sys.modules[benchmark_class.__module__] is system_health
petrcermak 2016/06/29 06:53:27 This seems unnecessary
nednguyen 2016/06/29 18:16:42 I was wanting to make sure that people don't add n
100 class SystemHealthBenchmarkSmokeTest(unittest.TestCase):
101 pass
102
103 # HACK: this options should be derived from options_for_unittests which is
petrcermak 2016/06/29 06:53:28 nit: s/this options/these options/
nednguyen 2016/06/29 18:16:41 Done.
104 # the resolved options from run_tests' arguments. However, options is only
105 # parsed during test time which happens after load_tests is called.
106 # Since none of our system health benchmark create stories based on
petrcermak 2016/06/29 06:53:27 This comment is not complete.
107 options = None
108
109 for story_to_smoke_test in (
110 benchmark_class().CreateStorySet(options).stories):
petrcermak 2016/06/29 06:53:27 Why do you name |options| when you could just pass
nednguyen 2016/06/29 18:16:42 I thought it was easier to add documentation there
111 test_method_name = '%s.%s' % (
112 benchmark_class.Name(), story_to_smoke_test.display_name)
113 method = SmokeTestGenerator(benchmark_class, story_to_smoke_test)
114 setattr(SystemHealthBenchmarkSmokeTest, test_method_name, method)
petrcermak 2016/06/29 06:53:27 This seems unnecessarily complicated. Why don't yo
nednguyen 2016/06/29 18:16:41 Because we need to make the test method name conta
115
116 suite.addTest(SystemHealthBenchmarkSmokeTest(test_method_name))
petrcermak 2016/06/29 06:53:28 I suggest you name the parameter: SystemHealthBen
nednguyen 2016/06/29 18:16:41 Done.
117
118 return suite
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698