diff options
author | Zhizhou Yang <zhizhouy@google.com> | 2018-11-15 13:55:12 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-11-16 15:10:52 -0800 |
commit | e2b0d3ef23cfdf19db4f39cb900845a35c3af82b (patch) | |
tree | 6a815bbbbe69315018bac6cc1b687bbc24d94b03 /crosperf | |
parent | 69c558b42977054d6168ad13829ebdd80ad77a7c (diff) | |
download | toolchain-utils-e2b0d3ef23cfdf19db4f39cb900845a35c3af82b.tar.gz |
crosperf: Passing dso and weight to result_cache.py
To generate and collect dso sample count, this patch passes dso and
weight into result_cache.py, by setting them as members of Benchmark
object.
Meantime, fixed all related unit tests.
BUG=chromium:902785
TEST=Passed all unit tests and sample tests locally.
Change-Id: I483a00d199d48fd5e77d882d7ac81bf93b6940df
Reviewed-on: https://chromium-review.googlesource.com/1338344
Commit-Ready: Zhizhou Yang <zhizhouy@google.com>
Tested-by: Zhizhou Yang <zhizhouy@google.com>
Reviewed-by: Caroline Tice <cmtice@chromium.org>
Diffstat (limited to 'crosperf')
-rw-r--r-- | crosperf/benchmark.py | 2 | ||||
-rw-r--r-- | crosperf/benchmark_run.py | 6 | ||||
-rwxr-xr-x | crosperf/benchmark_run_unittest.py | 2 | ||||
-rwxr-xr-x | crosperf/benchmark_unittest.py | 3 | ||||
-rwxr-xr-x | crosperf/crosperf_unittest.py | 2 | ||||
-rw-r--r-- | crosperf/experiment_factory.py | 7 | ||||
-rw-r--r-- | crosperf/results_cache.py | 14 | ||||
-rwxr-xr-x | crosperf/results_cache_unittest.py | 5 | ||||
-rwxr-xr-x | crosperf/settings_factory_unittest.py | 9 |
9 files changed, 32 insertions, 18 deletions
diff --git a/crosperf/benchmark.py b/crosperf/benchmark.py index c1e44d5e..967cfff4 100644 --- a/crosperf/benchmark.py +++ b/crosperf/benchmark.py @@ -57,6 +57,7 @@ class Benchmark(object): show_all_results=False, retries=0, run_local=False, + cwp_dso='', weight=0): self.name = name #For telemetry, this is the benchmark name. @@ -75,4 +76,5 @@ class Benchmark(object): if run_local and self.suite != 'telemetry_Crosperf': raise RuntimeError('run_local is only supported by telemetry_Crosperf.') self.run_local = run_local + self.cwp_dso = cwp_dso self.weight = weight diff --git a/crosperf/benchmark_run.py b/crosperf/benchmark_run.py index bba71a36..0ab2970e 100644 --- a/crosperf/benchmark_run.py +++ b/crosperf/benchmark_run.py @@ -95,7 +95,8 @@ class BenchmarkRun(threading.Thread): err = 'No cache hit.' self.result = Result.CreateFromRun( self._logger, self.log_level, self.label, self.machine, output, err, - retval, self.benchmark.test_name, self.benchmark.suite) + retval, self.benchmark.test_name, self.benchmark.suite, + self.benchmark.cwp_dso, self.benchmark.weight) else: self._logger.LogOutput('%s: No cache hit.' % self.name) @@ -211,7 +212,8 @@ class BenchmarkRun(threading.Thread): self.run_completed = True return Result.CreateFromRun(self._logger, self.log_level, self.label, self.machine, out, err, retval, - self.benchmark.test_name, self.benchmark.suite) + self.benchmark.test_name, self.benchmark.suite, + self.benchmark.cwp_dso, self.benchmark.weight) def SetCacheConditions(self, cache_conditions): self.cache_conditions = cache_conditions diff --git a/crosperf/benchmark_run_unittest.py b/crosperf/benchmark_run_unittest.py index 74757ac2..ef130473 100755 --- a/crosperf/benchmark_run_unittest.py +++ b/crosperf/benchmark_run_unittest.py @@ -399,7 +399,7 @@ class BenchmarkRunTest(unittest.TestCase): self.assertEqual(mock_result.call_count, 1) mock_result.assert_called_with( self.mock_logger, 'average', self.test_label, None, "{'Score':100}", '', - 0, 'page_cycler.netsim.top_10', 'telemetry_Crosperf') + 0, 'page_cycler.netsim.top_10', 'telemetry_Crosperf', '', 0.0) def test_set_cache_conditions(self): br = benchmark_run.BenchmarkRun( diff --git a/crosperf/benchmark_unittest.py b/crosperf/benchmark_unittest.py index 24c364c0..551bd2d3 100755 --- a/crosperf/benchmark_unittest.py +++ b/crosperf/benchmark_unittest.py @@ -55,7 +55,8 @@ class BenchmarkTestCase(unittest.TestCase): # this test was updated. args_list = [ 'self', 'name', 'test_name', 'test_args', 'iterations', 'rm_chroot_tmp', - 'perf_args', 'suite', 'show_all_results', 'retries', 'run_local' + 'perf_args', 'suite', 'show_all_results', 'retries', 'run_local', + 'cwp_dso', 'weight' ] arg_spec = inspect.getargspec(Benchmark.__init__) self.assertEqual(len(arg_spec.args), len(args_list)) diff --git a/crosperf/crosperf_unittest.py b/crosperf/crosperf_unittest.py index b361f15b..db82ca8c 100755 --- a/crosperf/crosperf_unittest.py +++ b/crosperf/crosperf_unittest.py @@ -55,7 +55,7 @@ class CrosperfTest(unittest.TestCase): settings = crosperf.ConvertOptionsToSettings(options) self.assertIsNotNone(settings) self.assertIsInstance(settings, settings_factory.GlobalSettings) - self.assertEqual(len(settings.fields), 25) + self.assertEqual(len(settings.fields), 26) self.assertTrue(settings.GetField('rerun')) argv = ['crosperf/crosperf.py', 'temp.exp'] options, _ = parser.parse_known_args(argv) diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 60785fa3..aa0e4cf0 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -258,9 +258,10 @@ class ExperimentFactory(object): iterations, rm_chroot_tmp, perf_args, suite, show_all_results, retries, run_local) else: - benchmark = Benchmark(benchmark_name, test_name, test_args, iterations, - rm_chroot_tmp, perf_args, suite, - show_all_results, retries, run_local, weight) + benchmark = Benchmark(benchmark_name, test_name, test_args, + iterations, rm_chroot_tmp, perf_args, suite, + show_all_results, retries, run_local, cwp_dso, + weight) benchmarks.append(benchmark) else: if test_name == 'all_graphics_perf': diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index 04e6590b..36218bdb 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -57,6 +57,8 @@ class Result(object): self.keyvals = None self.board = None self.suite = None + self.cwp_dso = '' + self.weight = 0.0 self.retval = None self.out = None @@ -266,13 +268,15 @@ class Result(object): value = str(misc.UnitToNumber(num_events)) self.keyvals[key] = value - def PopulateFromRun(self, out, err, retval, test, suite): + def PopulateFromRun(self, out, err, retval, test, suite, cwp_dso, weight): self.board = self.label.board self.out = out self.err = err self.retval = retval self.test_name = test self.suite = suite + self.cwp_dso = cwp_dso + self.weight = weight self.chroot_results_dir = self.GetResultsDir() self.results_dir = misc.GetOutsideChrootPath(self.chromeos_root, self.chroot_results_dir) @@ -450,12 +454,14 @@ class Result(object): err, retval, test, - suite='telemetry_Crosperf'): + suite='telemetry_Crosperf', + cwp_dso='', + weight=0.0): if suite == 'telemetry': result = TelemetryResult(logger, label, log_level, machine) else: result = cls(logger, label, log_level, machine) - result.PopulateFromRun(out, err, retval, test, suite) + result.PopulateFromRun(out, err, retval, test, suite, cwp_dso, weight) return result @classmethod @@ -487,7 +493,7 @@ class TelemetryResult(Result): super(TelemetryResult, self).__init__(logger, label, log_level, machine, cmd_exec) - def PopulateFromRun(self, out, err, retval, test, suite): + def PopulateFromRun(self, out, err, retval, test, suite, cwp_dso, weight): self.out = out self.err = err self.retval = retval diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index a2480d21..db1c6edd 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -592,7 +592,8 @@ class ResultTest(unittest.TestCase): self.result.GeneratePerfReportFiles = FakeGetPerfReportFiles self.result.ProcessResults = FakeProcessResults - self.result.PopulateFromRun(OUTPUT, '', 0, 'test', 'telemetry_Crosperf') + self.result.PopulateFromRun(OUTPUT, '', 0, 'test', 'telemetry_Crosperf', + '', 0.0) self.assertTrue(self.callGetResultsDir) self.assertTrue(self.callGetResultsFile) self.assertTrue(self.callGetPerfDataFiles) @@ -914,7 +915,7 @@ class TelemetryResultTest(unittest.TestCase): self.mock_cmd_exec) self.result.ProcessResults = FakeProcessResults self.result.PopulateFromRun(OUTPUT, error, 3, 'fake_test', - 'telemetry_Crosperf') + 'telemetry_Crosperf', '', 0.0) self.assertTrue(self.callFakeProcessResults) self.assertEqual(self.result.out, OUTPUT) self.assertEqual(self.result.err, error) diff --git a/crosperf/settings_factory_unittest.py b/crosperf/settings_factory_unittest.py index 1ff6a133..71482fd9 100755 --- a/crosperf/settings_factory_unittest.py +++ b/crosperf/settings_factory_unittest.py @@ -18,7 +18,7 @@ class BenchmarkSettingsTest(unittest.TestCase): def test_init(self): res = settings_factory.BenchmarkSettings('b_settings') self.assertIsNotNone(res) - self.assertEqual(len(res.fields), 6) + self.assertEqual(len(res.fields), 7) self.assertEqual(res.GetField('test_name'), '') self.assertEqual(res.GetField('test_args'), '') self.assertEqual(res.GetField('iterations'), 0) @@ -48,7 +48,7 @@ class GlobalSettingsTest(unittest.TestCase): def test_init(self): res = settings_factory.GlobalSettings('g_settings') self.assertIsNotNone(res) - self.assertEqual(len(res.fields), 25) + self.assertEqual(len(res.fields), 26) self.assertEqual(res.GetField('name'), '') self.assertEqual(res.GetField('board'), '') self.assertEqual(res.GetField('remote'), None) @@ -70,6 +70,7 @@ class GlobalSettingsTest(unittest.TestCase): self.assertEqual(res.GetField('share_cache'), '') self.assertEqual(res.GetField('results_dir'), '') self.assertEqual(res.GetField('chrome_src'), '') + self.assertEqual(res.GetField('cwp_dso'), '') class SettingsFactoryTest(unittest.TestCase): @@ -87,12 +88,12 @@ class SettingsFactoryTest(unittest.TestCase): b_settings = settings_factory.SettingsFactory().GetSettings( 'benchmark', 'benchmark') self.assertIsInstance(b_settings, settings_factory.BenchmarkSettings) - self.assertEqual(len(b_settings.fields), 6) + self.assertEqual(len(b_settings.fields), 7) g_settings = settings_factory.SettingsFactory().GetSettings( 'global', 'global') self.assertIsInstance(g_settings, settings_factory.GlobalSettings) - self.assertEqual(len(g_settings.fields), 25) + self.assertEqual(len(g_settings.fields), 26) if __name__ == '__main__': |