aboutsummaryrefslogtreecommitdiff
path: root/crosperf
diff options
context:
space:
mode:
authorZhizhou Yang <zhizhouy@google.com>2018-11-15 13:55:12 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-11-16 15:10:52 -0800
commite2b0d3ef23cfdf19db4f39cb900845a35c3af82b (patch)
tree6a815bbbbe69315018bac6cc1b687bbc24d94b03 /crosperf
parent69c558b42977054d6168ad13829ebdd80ad77a7c (diff)
downloadtoolchain-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.py2
-rw-r--r--crosperf/benchmark_run.py6
-rwxr-xr-xcrosperf/benchmark_run_unittest.py2
-rwxr-xr-xcrosperf/benchmark_unittest.py3
-rwxr-xr-xcrosperf/crosperf_unittest.py2
-rw-r--r--crosperf/experiment_factory.py7
-rw-r--r--crosperf/results_cache.py14
-rwxr-xr-xcrosperf/results_cache_unittest.py5
-rwxr-xr-xcrosperf/settings_factory_unittest.py9
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__':