aboutsummaryrefslogtreecommitdiff
path: root/crosperf/suite_runner_unittest.py
diff options
context:
space:
mode:
Diffstat (limited to 'crosperf/suite_runner_unittest.py')
-rwxr-xr-xcrosperf/suite_runner_unittest.py213
1 files changed, 65 insertions, 148 deletions
diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py
index 7f3a7bc4..73fcb45b 100755
--- a/crosperf/suite_runner_unittest.py
+++ b/crosperf/suite_runner_unittest.py
@@ -10,8 +10,6 @@
from __future__ import print_function
import json
-import os.path
-import time
import unittest
import unittest.mock as mock
@@ -23,7 +21,6 @@ from benchmark import Benchmark
from cros_utils import command_executer
from cros_utils import logger
-from cros_utils.device_setup_utils import DutWrapper
from machine_manager import MockCrosMachine
@@ -49,23 +46,21 @@ class SuiteRunnerTest(unittest.TestCase):
'telemetry_Crosperf', # suite
True) # show_all_results
- test_that_bench = Benchmark(
+ crosperf_wrapper_bench = Benchmark(
'b2_test', # name
- 'octane', # test_name
+ 'webgl', # test_name
'', # test_args
3, # iterations
False, # rm_chroot_tmp
- 'record -e cycles') # perf_args
+ '', # perf_args
+ 'crosperf_Wrapper') # suite
def __init__(self, *args, **kwargs):
super(SuiteRunnerTest, self).__init__(*args, **kwargs)
- self.call_test_that_run = False
self.skylab_run_args = []
self.test_that_args = []
- self.telemetry_run_args = []
- self.telemetry_crosperf_args = []
self.call_skylab_run = False
- self.call_telemetry_crosperf_run = False
+ self.call_test_that_run = False
def setUp(self):
self.runner = suite_runner.SuiteRunner(
@@ -79,30 +74,30 @@ class SuiteRunnerTest(unittest.TestCase):
res = suite_runner.GetProfilerArgs(input_str)
self.assertEqual(res, output_str)
+ def test_get_dut_config_args(self):
+ dut_config = {'enable_aslr': False, 'top_interval': 1.0}
+ output_str = ('dut_config='
+ "'"
+ '{"enable_aslr": '
+ 'false, "top_interval": 1.0}'
+ "'"
+ '')
+ res = suite_runner.GetDutConfigArgs(dut_config)
+ self.assertEqual(res, output_str)
+
def test_run(self):
def reset():
+ self.test_that_args = []
+ self.skylab_run_args = []
self.call_test_that_run = False
self.call_skylab_run = False
- self.call_telemetry_crosperf_run = False
- self.skylab_run_args = []
- self.test_that_args = []
- self.telemetry_run_args = []
- self.telemetry_crosperf_args = []
def FakeSkylabRun(test_label, benchmark, test_args, profiler_args):
self.skylab_run_args = [test_label, benchmark, test_args, profiler_args]
self.call_skylab_run = True
return 'Ran FakeSkylabRun'
- def FakeTelemetryCrosperfRun(machine, test_label, benchmark, test_args,
- profiler_args):
- self.telemetry_crosperf_args = [
- machine, test_label, benchmark, test_args, profiler_args
- ]
- self.call_telemetry_crosperf_run = True
- return 'Ran FakeTelemetryCrosperfRun'
-
def FakeTestThatRun(machine, test_label, benchmark, test_args,
profiler_args):
self.test_that_args = [
@@ -111,16 +106,8 @@ class SuiteRunnerTest(unittest.TestCase):
self.call_test_that_run = True
return 'Ran FakeTestThatRun'
- def FakeRunner(command, ignore_status=False):
- # pylint fix for unused variable.
- del command, ignore_status
- return 0, '', ''
-
self.runner.Skylab_Run = FakeSkylabRun
- self.runner.Telemetry_Crosperf_Run = FakeTelemetryCrosperfRun
self.runner.Test_That_Run = FakeTestThatRun
- DutWrapper.SetupDevice = mock.Mock(return_value=0)
- DutWrapper.RunCommandOnDut = mock.Mock(return_value=FakeRunner)
self.runner.dut_config['enable_aslr'] = False
self.runner.dut_config['cooldown_time'] = 0
@@ -133,36 +120,63 @@ class SuiteRunnerTest(unittest.TestCase):
test_args = ''
profiler_args = ''
- reset()
+ # Test skylab run for telemetry_Crosperf and crosperf_Wrapper benchmarks.
self.mock_label.skylab = True
- self.runner.Run(cros_machine, self.mock_label, self.test_that_bench,
+ reset()
+ self.runner.Run(cros_machine, self.mock_label, self.crosperf_wrapper_bench,
test_args, profiler_args)
self.assertTrue(self.call_skylab_run)
self.assertFalse(self.call_test_that_run)
- self.assertFalse(self.call_telemetry_crosperf_run)
self.assertEqual(self.skylab_run_args,
- [self.mock_label, self.test_that_bench, '', ''])
- DutWrapper.SetupDevice.assert_called_once()
- self.mock_label.skylab = False
+ [self.mock_label, self.crosperf_wrapper_bench, '', ''])
+
+ reset()
+ self.runner.Run(cros_machine, self.mock_label,
+ self.telemetry_crosperf_bench, test_args, profiler_args)
+ self.assertTrue(self.call_skylab_run)
+ self.assertFalse(self.call_test_that_run)
+ self.assertEqual(self.skylab_run_args,
+ [self.mock_label, self.telemetry_crosperf_bench, '', ''])
+ # Test test_that run for telemetry_Crosperf and crosperf_Wrapper benchmarks.
+ self.mock_label.skylab = False
reset()
- self.runner.Run(cros_machine, self.mock_label, self.test_that_bench,
+ self.runner.Run(cros_machine, self.mock_label, self.crosperf_wrapper_bench,
test_args, profiler_args)
self.assertTrue(self.call_test_that_run)
- self.assertFalse(self.call_telemetry_crosperf_run)
+ self.assertFalse(self.call_skylab_run)
self.assertEqual(
self.test_that_args,
- ['fake_machine', self.mock_label, self.test_that_bench, '', ''])
+ ['fake_machine', self.mock_label, self.crosperf_wrapper_bench, '', ''])
reset()
self.runner.Run(cros_machine, self.mock_label,
self.telemetry_crosperf_bench, test_args, profiler_args)
- self.assertFalse(self.call_test_that_run)
- self.assertTrue(self.call_telemetry_crosperf_run)
- self.assertEqual(self.telemetry_crosperf_args, [
+ self.assertTrue(self.call_test_that_run)
+ self.assertFalse(self.call_skylab_run)
+ self.assertEqual(self.test_that_args, [
'fake_machine', self.mock_label, self.telemetry_crosperf_bench, '', ''
])
+ def test_gen_test_args(self):
+ test_args = '--iterations=2'
+ perf_args = 'record -a -e cycles'
+
+ # Test crosperf_Wrapper benchmarks arg list generation
+ args_list = ["test_args='--iterations=2'", "dut_config='{}'", 'test=webgl']
+ res = self.runner.GenTestArgs(self.crosperf_wrapper_bench, test_args, '')
+ self.assertCountEqual(res, args_list)
+
+ # Test telemetry_Crosperf benchmarks arg list generation
+ args_list = [
+ "test_args='--iterations=2'", "dut_config='{}'", 'test=octane',
+ 'run_local=False'
+ ]
+ args_list.append(suite_runner.GetProfilerArgs(perf_args))
+ res = self.runner.GenTestArgs(self.telemetry_crosperf_bench, test_args,
+ perf_args)
+ self.assertCountEqual(res, args_list)
+
@mock.patch.object(command_executer.CommandExecuter, 'CrosRunCommand')
@mock.patch.object(command_executer.CommandExecuter,
'ChrootRunCommandWOutput')
@@ -176,10 +190,12 @@ class SuiteRunnerTest(unittest.TestCase):
self.real_logger.LogMsg = FakeLogMsg
self.runner.logger = self.real_logger
+ # Test crosperf_Wrapper benchmarks cannot take perf_args
raised_exception = False
try:
self.runner.Test_That_Run('lumpy1.cros', self.mock_label,
- self.test_that_bench, '', 'record -a -e cycles')
+ self.crosperf_wrapper_bench, '',
+ 'record -a -e cycles')
except SystemExit:
raised_exception = True
self.assertTrue(raised_exception)
@@ -188,7 +204,8 @@ class SuiteRunnerTest(unittest.TestCase):
self.mock_cmd_exec.ChrootRunCommandWOutput = mock_chroot_runcmd
self.mock_cmd_exec.CrosRunCommand = mock_cros_runcmd
res = self.runner.Test_That_Run('lumpy1.cros', self.mock_label,
- self.test_that_bench, '--iterations=2', '')
+ self.crosperf_wrapper_bench,
+ '--iterations=2', '')
self.assertEqual(mock_cros_runcmd.call_count, 1)
self.assertEqual(mock_chroot_runcmd.call_count, 1)
self.assertEqual(res, 0)
@@ -197,48 +214,9 @@ class SuiteRunnerTest(unittest.TestCase):
args_list = mock_chroot_runcmd.call_args_list[0][0]
args_dict = mock_chroot_runcmd.call_args_list[0][1]
self.assertEqual(len(args_list), 2)
- self.assertEqual(args_list[0], '/tmp/chromeos')
- self.assertEqual(args_list[1], ('/usr/bin/test_that '
- '--fast --board=lumpy '
- '--iterations=2 lumpy1.cros octane'))
self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term)
self.real_logger.LogMsg = save_log_msg
- @mock.patch.object(os.path, 'isdir')
- @mock.patch.object(command_executer.CommandExecuter,
- 'ChrootRunCommandWOutput')
- def test_telemetry_crosperf_run(self, mock_chroot_runcmd, mock_isdir):
-
- mock_isdir.return_value = True
- mock_chroot_runcmd.return_value = 0
- self.mock_cmd_exec.ChrootRunCommandWOutput = mock_chroot_runcmd
- profiler_args = ("--profiler=custom_perf --profiler_args='perf_options"
- '="record -a -e cycles,instructions"\'')
- self.runner.dut_config['turbostat'] = True
- self.runner.dut_config['top_interval'] = 3
- res = self.runner.Telemetry_Crosperf_Run('lumpy1.cros', self.mock_label,
- self.telemetry_crosperf_bench, '',
- profiler_args)
- self.assertEqual(res, 0)
- self.assertEqual(mock_chroot_runcmd.call_count, 1)
- args_list = mock_chroot_runcmd.call_args_list[0][0]
- args_dict = mock_chroot_runcmd.call_args_list[0][1]
- self.assertEqual(args_list[0], '/tmp/chromeos')
- self.assertEqual(
- args_list[1],
- ('/usr/bin/test_that --autotest_dir '
- '/mnt/host/source/src/third_party/autotest/files --fast '
- "--board=lumpy --args=' run_local=False test=octane "
- 'dut_config=\'"\'"\'{"turbostat": true, "top_interval": 3}\'"\'"\' '
- 'profiler=custom_perf profiler_args=\'"\'"\'record -a -e '
- 'cycles,instructions\'"\'"\'\' lumpy1.cros telemetry_Crosperf'))
- self.assertEqual(args_dict['cros_sdk_options'],
- ('--no-ns-pid --chrome_root= '
- '--chrome_root_mount=/tmp/chrome_root '
- 'FEATURES="-usersandbox" CHROME_ROOT=/tmp/chrome_root'))
- self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term)
- self.assertEqual(len(args_dict), 2)
-
@mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput')
@mock.patch.object(json, 'loads')
def test_skylab_run_client(self, mock_json_loads, mock_runcmd):
@@ -265,82 +243,21 @@ class SuiteRunnerTest(unittest.TestCase):
self.mock_label.skylab = True
self.runner.DownloadResult = FakeDownloadResult
- res = self.runner.Skylab_Run(self.mock_label, self.test_that_bench, '', '')
+ res = self.runner.Skylab_Run(self.mock_label, self.crosperf_wrapper_bench,
+ '', '')
ret_tup = (0, '\nResults placed in tmp/swarming-12345\n', '')
self.assertEqual(res, ret_tup)
self.assertEqual(mock_runcmd.call_count, 2)
args_list = mock_runcmd.call_args_list[0][0]
args_dict = mock_runcmd.call_args_list[0][1]
- self.assertEqual(args_list[0],
- ('/usr/local/bin/skylab create-test '
- '-dim dut_name:lumpy1 -dim dut_name:lumpy.cros2 '
- '-board=lumpy -image=build '
- '-pool=toolchain octane'))
+ self.assertEqual(len(args_list), 1)
self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term)
args_list = mock_runcmd.call_args_list[1][0]
self.assertEqual(args_list[0], ('skylab wait-task 12345'))
self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term)
- @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput')
- @mock.patch.object(json, 'loads')
- def test_skylab_run_telemetry_Crosperf(self, mock_json_loads, mock_runcmd):
-
- def FakeDownloadResult(l, task_id):
- if l and task_id:
- self.assertEqual(task_id, '12345')
- return None
-
- mock_runcmd.return_value = (
- 0,
- 'Created Swarming task https://swarming/task/b12345',
- '',
- )
- self.mock_cmd_exec.RunCommandWOutput = mock_runcmd
-
- mock_json_loads.return_value = {
- 'child-results': [{
- 'success': True,
- 'task-run-url': 'https://swarming/task?id=12345'
- }]
- }
- self.mock_json.loads = mock_json_loads
-
- self.mock_label.skylab = True
- self.runner.DownloadResult = FakeDownloadResult
- self.runner.Skylab_Run(self.mock_label, self.telemetry_crosperf_bench, '',
- '')
- args_list = mock_runcmd.call_args_list[0][0]
- self.assertEqual(
- args_list[0],
- ('/usr/local/bin/skylab create-test '
- '-dim dut_name:lumpy1 -dim dut_name:lumpy.cros2 '
- '-board=lumpy -image=build '
- "-pool=toolchain -test-args='run_local=False test=octane' "
- 'telemetry_Crosperf'))
-
- @mock.patch.object(time, 'sleep')
- @mock.patch.object(command_executer.CommandExecuter, 'RunCommand')
- def test_download_result(self, mock_runcmd, mock_sleep):
- mock_runcmd.return_value = 0
- mock_sleep.return_value = 0
- self.mock_cmd_exec.RunCommand = mock_runcmd
-
- self.runner.DownloadResult(self.mock_label, '12345')
-
- self.assertEqual(mock_runcmd.call_count, 2)
- cmd = mock_runcmd.call_args_list[0][0][0]
- self.assertEqual(cmd,
- ('/tmp/chromeos/src/chromium/depot_tools/gsutil.py ls '
- 'gs://chromeos-autotest-results/swarming-12345/'
- 'autoserv_test'))
- cmd = mock_runcmd.call_args_list[1][0][0]
- self.assertEqual(cmd,
- ('/tmp/chromeos/src/chromium/depot_tools/gsutil.py -mq '
- 'cp -r gs://chromeos-autotest-results/swarming-12345 '
- '/tmp/chromeos/chroot/tmp'))
-
if __name__ == '__main__':
unittest.main()