From 2124be5caee6803d5bfe6f7cdc8e3367cb375807 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 21 Apr 2022 10:27:37 -0700 Subject: toolchain_utils: s/Cr OS/CrOS/g Result of running `sed -ri 's/Chrom(ium|e) OS/Chrom\1OS/g' $(find -type f)`. BUG=None TEST=None Change-Id: I59be92537aa19bc989f52b585e307e76dbde401b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3600147 Reviewed-by: Manoj Gupta Commit-Queue: George Burgess Tested-by: George Burgess --- crosperf/suite_runner_unittest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crosperf/suite_runner_unittest.py') diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index c1eacb32..b080c91e 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# Copyright (c) 2014 The Chromium OS Authors. All rights reserved. +# Copyright (c) 2014 The ChromiumOS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -- cgit v1.2.3 From 74bd380a27f4f0e8e90ff2dc1cef0b502d74961b Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 2 Sep 2022 16:59:27 -0700 Subject: Autoformat all Python code This autoformats all Python code with our new Python formatter, `black`. BUG=b:244644217 TEST=None Change-Id: I15ee49233d98fb6295c0c53c129bbf8e78e0d9ff Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3877337 Tested-by: George Burgess Reviewed-by: Jordan Abrahams-Whitehead Commit-Queue: George Burgess --- crosperf/suite_runner_unittest.py | 661 ++++++++++++++++++++++---------------- 1 file changed, 380 insertions(+), 281 deletions(-) (limited to 'crosperf/suite_runner_unittest.py') diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index b080c91e..a97e1638 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -10,295 +10,394 @@ from __future__ import print_function import json - import unittest import unittest.mock as mock -import suite_runner -import label - from benchmark import Benchmark - from cros_utils import command_executer from cros_utils import logger +import label from machine_manager import MockCrosMachine +import suite_runner class SuiteRunnerTest(unittest.TestCase): - """Class of SuiteRunner test.""" - mock_json = mock.Mock(spec=json) - mock_cmd_exec = mock.Mock(spec=command_executer.CommandExecuter) - mock_cmd_term = mock.Mock(spec=command_executer.CommandTerminator) - mock_logger = mock.Mock(spec=logger.Logger) - mock_label = label.MockLabel('lumpy', 'build', 'lumpy_chromeos_image', '', '', - '/tmp/chromeos', 'lumpy', - ['lumpy1.cros', 'lumpy.cros2'], '', '', False, - 'average', 'gcc', False, '') - telemetry_crosperf_bench = Benchmark( - 'b1_test', # name - 'octane', # test_name - '', # test_args - 3, # iterations - False, # rm_chroot_tmp - 'record -e cycles', # perf_args - 'telemetry_Crosperf', # suite - True) # show_all_results - - crosperf_wrapper_bench = Benchmark( - 'b2_test', # name - 'webgl', # test_name - '', # test_args - 3, # iterations - False, # rm_chroot_tmp - '', # perf_args - 'crosperf_Wrapper') # suite - - tast_bench = Benchmark( - 'b3_test', # name - 'platform.ReportDiskUsage', # test_name - '', # test_args - 1, # iterations - False, # rm_chroot_tmp - '', # perf_args - 'tast') # suite - - def __init__(self, *args, **kwargs): - super(SuiteRunnerTest, self).__init__(*args, **kwargs) - self.crosfleet_run_args = [] - self.test_that_args = [] - self.tast_args = [] - self.call_crosfleet_run = False - self.call_test_that_run = False - self.call_tast_run = False - - def setUp(self): - self.runner = suite_runner.SuiteRunner({}, self.mock_logger, 'verbose', - self.mock_cmd_exec, - self.mock_cmd_term) - - def test_get_profiler_args(self): - input_str = ("--profiler=custom_perf --profiler_args='perf_options" - '="record -a -e cycles,instructions"\'') - output_str = ("profiler=custom_perf profiler_args='record -a -e " - "cycles,instructions'") - 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.crosfleet_run_args = [] - self.tast_args = [] - self.call_test_that_run = False - self.call_crosfleet_run = False - self.call_tast_run = False - - def FakeCrosfleetRun(test_label, benchmark, test_args, profiler_args): - self.crosfleet_run_args = [ - test_label, benchmark, test_args, profiler_args - ] - self.call_crosfleet_run = True - return 'Ran FakeCrosfleetRun' - - def FakeTestThatRun(machine, test_label, benchmark, test_args, - profiler_args): - self.test_that_args = [ - machine, test_label, benchmark, test_args, profiler_args - ] - self.call_test_that_run = True - return 'Ran FakeTestThatRun' - - def FakeTastRun(machine, test_label, benchmark): - self.tast_args = [machine, test_label, benchmark] - self.call_tast_run = True - return 'Ran FakeTastRun' - - self.runner.Crosfleet_Run = FakeCrosfleetRun - self.runner.Test_That_Run = FakeTestThatRun - self.runner.Tast_Run = FakeTastRun - - self.runner.dut_config['enable_aslr'] = False - self.runner.dut_config['cooldown_time'] = 0 - self.runner.dut_config['governor'] = 'fake_governor' - self.runner.dut_config['cpu_freq_pct'] = 65 - self.runner.dut_config['intel_pstate'] = 'no_hwp' - machine = 'fake_machine' - cros_machine = MockCrosMachine(machine, self.mock_label.chromeos_root, - self.mock_logger) - test_args = '' - profiler_args = '' - - # Test crosfleet run for telemetry_Crosperf and crosperf_Wrapper benchmarks. - self.mock_label.crosfleet = True - reset() - self.runner.Run(cros_machine, self.mock_label, self.crosperf_wrapper_bench, - test_args, profiler_args) - self.assertTrue(self.call_crosfleet_run) - self.assertFalse(self.call_test_that_run) - self.assertEqual(self.crosfleet_run_args, - [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_crosfleet_run) - self.assertFalse(self.call_test_that_run) - self.assertEqual(self.crosfleet_run_args, - [self.mock_label, self.telemetry_crosperf_bench, '', '']) - - # Test test_that run for telemetry_Crosperf and crosperf_Wrapper benchmarks. - self.mock_label.crosfleet = False - reset() - 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_crosfleet_run) - self.assertEqual( - self.test_that_args, - ['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.assertTrue(self.call_test_that_run) - self.assertFalse(self.call_crosfleet_run) - self.assertEqual(self.test_that_args, [ - 'fake_machine', self.mock_label, self.telemetry_crosperf_bench, '', '' - ]) - - # Test tast run for tast benchmarks. - reset() - self.runner.Run(cros_machine, self.mock_label, self.tast_bench, '', '') - self.assertTrue(self.call_tast_run) - self.assertFalse(self.call_test_that_run) - self.assertFalse(self.call_crosfleet_run) - self.assertEqual(self.tast_args, - ['fake_machine', self.mock_label, self.tast_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') - def test_tast_run(self, mock_chroot_runcmd, mock_cros_runcmd): - mock_chroot_runcmd.return_value = 0 - self.mock_cmd_exec.ChrootRunCommandWOutput = mock_chroot_runcmd - self.mock_cmd_exec.CrosRunCommand = mock_cros_runcmd - res = self.runner.Tast_Run('lumpy1.cros', self.mock_label, self.tast_bench) - self.assertEqual(mock_cros_runcmd.call_count, 1) - self.assertEqual(mock_chroot_runcmd.call_count, 1) - self.assertEqual(res, 0) - self.assertEqual(mock_cros_runcmd.call_args_list[0][0], - ('rm -rf /usr/local/autotest/results/*',)) - 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_dict['command_terminator'], self.mock_cmd_term) - - @mock.patch.object(command_executer.CommandExecuter, 'CrosRunCommand') - @mock.patch.object(command_executer.CommandExecuter, - 'ChrootRunCommandWOutput') - @mock.patch.object(logger.Logger, 'LogFatal') - def test_test_that_run(self, mock_log_fatal, mock_chroot_runcmd, - mock_cros_runcmd): - mock_log_fatal.side_effect = SystemExit() - self.runner.logger.LogFatal = mock_log_fatal - # Test crosperf_Wrapper benchmarks cannot take perf_args - raised_exception = False - try: - self.runner.Test_That_Run('lumpy1.cros', self.mock_label, - self.crosperf_wrapper_bench, '', - 'record -a -e cycles') - except SystemExit: - raised_exception = True - self.assertTrue(raised_exception) - - mock_chroot_runcmd.return_value = 0 - 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.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) - self.assertEqual(mock_cros_runcmd.call_args_list[0][0], - ('rm -rf /usr/local/autotest/results/*',)) - 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_dict['command_terminator'], self.mock_cmd_term) - - @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput') - @mock.patch.object(json, 'loads') - def test_crosfleet_run_client(self, mock_json_loads, mock_runcmd): - - def FakeDownloadResult(l, task_id): - if l and task_id: - self.assertEqual(task_id, '12345') - return 0 - - mock_runcmd.return_value = ( - 0, - 'Created Swarming task https://swarming/task/b12345', - '', + """Class of SuiteRunner test.""" + + mock_json = mock.Mock(spec=json) + mock_cmd_exec = mock.Mock(spec=command_executer.CommandExecuter) + mock_cmd_term = mock.Mock(spec=command_executer.CommandTerminator) + mock_logger = mock.Mock(spec=logger.Logger) + mock_label = label.MockLabel( + "lumpy", + "build", + "lumpy_chromeos_image", + "", + "", + "/tmp/chromeos", + "lumpy", + ["lumpy1.cros", "lumpy.cros2"], + "", + "", + False, + "average", + "gcc", + False, + "", + ) + telemetry_crosperf_bench = Benchmark( + "b1_test", # name + "octane", # test_name + "", # test_args + 3, # iterations + False, # rm_chroot_tmp + "record -e cycles", # perf_args + "telemetry_Crosperf", # suite + True, + ) # show_all_results + + crosperf_wrapper_bench = Benchmark( + "b2_test", # name + "webgl", # test_name + "", # test_args + 3, # iterations + False, # rm_chroot_tmp + "", # perf_args + "crosperf_Wrapper", + ) # suite + + tast_bench = Benchmark( + "b3_test", # name + "platform.ReportDiskUsage", # test_name + "", # test_args + 1, # iterations + False, # rm_chroot_tmp + "", # perf_args + "tast", + ) # suite + + def __init__(self, *args, **kwargs): + super(SuiteRunnerTest, self).__init__(*args, **kwargs) + self.crosfleet_run_args = [] + self.test_that_args = [] + self.tast_args = [] + self.call_crosfleet_run = False + self.call_test_that_run = False + self.call_tast_run = False + + def setUp(self): + self.runner = suite_runner.SuiteRunner( + {}, + self.mock_logger, + "verbose", + self.mock_cmd_exec, + self.mock_cmd_term, + ) + + def test_get_profiler_args(self): + input_str = ( + "--profiler=custom_perf --profiler_args='perf_options" + '="record -a -e cycles,instructions"\'' + ) + output_str = ( + "profiler=custom_perf profiler_args='record -a -e " + "cycles,instructions'" + ) + 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.crosfleet_run_args = [] + self.tast_args = [] + self.call_test_that_run = False + self.call_crosfleet_run = False + self.call_tast_run = False + + def FakeCrosfleetRun(test_label, benchmark, test_args, profiler_args): + self.crosfleet_run_args = [ + test_label, + benchmark, + test_args, + profiler_args, + ] + self.call_crosfleet_run = True + return "Ran FakeCrosfleetRun" + + def FakeTestThatRun( + machine, test_label, benchmark, test_args, profiler_args + ): + self.test_that_args = [ + machine, + test_label, + benchmark, + test_args, + profiler_args, + ] + self.call_test_that_run = True + return "Ran FakeTestThatRun" + + def FakeTastRun(machine, test_label, benchmark): + self.tast_args = [machine, test_label, benchmark] + self.call_tast_run = True + return "Ran FakeTastRun" + + self.runner.Crosfleet_Run = FakeCrosfleetRun + self.runner.Test_That_Run = FakeTestThatRun + self.runner.Tast_Run = FakeTastRun + + self.runner.dut_config["enable_aslr"] = False + self.runner.dut_config["cooldown_time"] = 0 + self.runner.dut_config["governor"] = "fake_governor" + self.runner.dut_config["cpu_freq_pct"] = 65 + self.runner.dut_config["intel_pstate"] = "no_hwp" + machine = "fake_machine" + cros_machine = MockCrosMachine( + machine, self.mock_label.chromeos_root, self.mock_logger + ) + test_args = "" + profiler_args = "" + + # Test crosfleet run for telemetry_Crosperf and crosperf_Wrapper benchmarks. + self.mock_label.crosfleet = True + reset() + self.runner.Run( + cros_machine, + self.mock_label, + self.crosperf_wrapper_bench, + test_args, + profiler_args, + ) + self.assertTrue(self.call_crosfleet_run) + self.assertFalse(self.call_test_that_run) + self.assertEqual( + self.crosfleet_run_args, + [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_crosfleet_run) + self.assertFalse(self.call_test_that_run) + self.assertEqual( + self.crosfleet_run_args, + [self.mock_label, self.telemetry_crosperf_bench, "", ""], + ) + + # Test test_that run for telemetry_Crosperf and crosperf_Wrapper benchmarks. + self.mock_label.crosfleet = False + reset() + 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_crosfleet_run) + self.assertEqual( + self.test_that_args, + [ + "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.assertTrue(self.call_test_that_run) + self.assertFalse(self.call_crosfleet_run) + self.assertEqual( + self.test_that_args, + [ + "fake_machine", + self.mock_label, + self.telemetry_crosperf_bench, + "", + "", + ], + ) + + # Test tast run for tast benchmarks. + reset() + self.runner.Run(cros_machine, self.mock_label, self.tast_bench, "", "") + self.assertTrue(self.call_tast_run) + self.assertFalse(self.call_test_that_run) + self.assertFalse(self.call_crosfleet_run) + self.assertEqual( + self.tast_args, ["fake_machine", self.mock_label, self.tast_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" + ) + def test_tast_run(self, mock_chroot_runcmd, mock_cros_runcmd): + mock_chroot_runcmd.return_value = 0 + self.mock_cmd_exec.ChrootRunCommandWOutput = mock_chroot_runcmd + self.mock_cmd_exec.CrosRunCommand = mock_cros_runcmd + res = self.runner.Tast_Run( + "lumpy1.cros", self.mock_label, self.tast_bench + ) + self.assertEqual(mock_cros_runcmd.call_count, 1) + self.assertEqual(mock_chroot_runcmd.call_count, 1) + self.assertEqual(res, 0) + self.assertEqual( + mock_cros_runcmd.call_args_list[0][0], + ("rm -rf /usr/local/autotest/results/*",), + ) + 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_dict["command_terminator"], self.mock_cmd_term) + + @mock.patch.object(command_executer.CommandExecuter, "CrosRunCommand") + @mock.patch.object( + command_executer.CommandExecuter, "ChrootRunCommandWOutput" ) - 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.crosfleet = True - self.runner.DownloadResult = FakeDownloadResult - res = self.runner.Crosfleet_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(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], ('crosfleet wait-task 12345')) - self.assertEqual(args_dict['command_terminator'], self.mock_cmd_term) - - -if __name__ == '__main__': - unittest.main() + @mock.patch.object(logger.Logger, "LogFatal") + def test_test_that_run( + self, mock_log_fatal, mock_chroot_runcmd, mock_cros_runcmd + ): + mock_log_fatal.side_effect = SystemExit() + self.runner.logger.LogFatal = mock_log_fatal + # Test crosperf_Wrapper benchmarks cannot take perf_args + raised_exception = False + try: + self.runner.Test_That_Run( + "lumpy1.cros", + self.mock_label, + self.crosperf_wrapper_bench, + "", + "record -a -e cycles", + ) + except SystemExit: + raised_exception = True + self.assertTrue(raised_exception) + + mock_chroot_runcmd.return_value = 0 + 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.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) + self.assertEqual( + mock_cros_runcmd.call_args_list[0][0], + ("rm -rf /usr/local/autotest/results/*",), + ) + 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_dict["command_terminator"], self.mock_cmd_term) + + @mock.patch.object(command_executer.CommandExecuter, "RunCommandWOutput") + @mock.patch.object(json, "loads") + def test_crosfleet_run_client(self, mock_json_loads, mock_runcmd): + def FakeDownloadResult(l, task_id): + if l and task_id: + self.assertEqual(task_id, "12345") + return 0 + + 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.crosfleet = True + self.runner.DownloadResult = FakeDownloadResult + res = self.runner.Crosfleet_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(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], ("crosfleet wait-task 12345")) + self.assertEqual(args_dict["command_terminator"], self.mock_cmd_term) + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From c0041a9550814e402f661a560855ff99863cffb2 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 6 Sep 2022 12:12:02 -0700 Subject: remove `from __future__ import ...` directives These are only useful when we're running code in a Python 2.7 interpreter. Since we no longer support python2, drop these. BUG=b:244644217 TEST=run_tests_for.py shows no new failures Change-Id: Ief9a12b87a560ab38ca71668636874bcb434a0b3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3877339 Reviewed-by: Ryan Beltran Commit-Queue: George Burgess Reviewed-by: Jordan Abrahams-Whitehead Tested-by: George Burgess --- crosperf/suite_runner_unittest.py | 1 - 1 file changed, 1 deletion(-) (limited to 'crosperf/suite_runner_unittest.py') diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index a97e1638..a1ab660f 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -7,7 +7,6 @@ """Unittest for suite_runner.""" -from __future__ import print_function import json import unittest -- cgit v1.2.3 From fdcd39d5de4bd61cee94cf1e26416838d23092b8 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 13 Sep 2022 14:19:58 -0400 Subject: Update license boilerplate text in source code files Normally we don't do this, but enough changes have accumulated that we're doing a tree-wide one-off update of the name & style. BUG=chromium:1098010 TEST=`repo upload` works Change-Id: Icb42e5012a87920c2cd13b666fb3e55e7e4fb3b8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3891080 Auto-Submit: Mike Frysinger Tested-by: Mike Frysinger Commit-Queue: George Burgess Reviewed-by: George Burgess --- crosperf/suite_runner_unittest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crosperf/suite_runner_unittest.py') diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index a1ab660f..69476f37 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # -# Copyright (c) 2014 The ChromiumOS Authors. All rights reserved. +# Copyright 2014 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -- cgit v1.2.3 From b41250738164926d6bf32af054637c5aa9bb88e7 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Thu, 29 Sep 2022 17:08:35 -0700 Subject: crosperf: use sshwatcher to set up port forwarding to DUTs Some DUTs (notably those on gTransit) require port forwarding to be accessible from inside the chroot. This CL makes crosperf's SuitRunner use sshwatcher to set up the required forwarding. BUG=b:235119397 TEST=suite_runner_unittest, then try it out for real Change-Id: Idad2abf40713e2d0aa3b81fdb4762a22b638400e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3928354 Reviewed-by: Denis Nikitin Reviewed-by: Jordan Abrahams-Whitehead Commit-Queue: Bob Haarman Tested-by: Bob Haarman --- crosperf/suite_runner_unittest.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'crosperf/suite_runner_unittest.py') diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index 69476f37..cc96ee4a 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -8,6 +8,7 @@ """Unittest for suite_runner.""" +import contextlib import json import unittest import unittest.mock as mock @@ -118,7 +119,14 @@ class SuiteRunnerTest(unittest.TestCase): res = suite_runner.GetDutConfigArgs(dut_config) self.assertEqual(res, output_str) - def test_run(self): + @mock.patch("suite_runner.ssh_tunnel") + def test_run(self, ssh_tunnel): + @contextlib.contextmanager + def mock_ssh_tunnel(_host): + yield "fakelocalhost:1234" + + ssh_tunnel.side_effect = mock_ssh_tunnel + def reset(): self.test_that_args = [] self.crosfleet_run_args = [] @@ -254,7 +262,8 @@ class SuiteRunnerTest(unittest.TestCase): self.assertFalse(self.call_test_that_run) self.assertFalse(self.call_crosfleet_run) self.assertEqual( - self.tast_args, ["fake_machine", self.mock_label, self.tast_bench] + self.tast_args, + ["fakelocalhost:1234", self.mock_label, self.tast_bench], ) def test_gen_test_args(self): -- cgit v1.2.3 From e945e30f306a0dab080a394c82bff49525abb3ef Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Wed, 5 Oct 2022 15:32:40 -0700 Subject: crosperf: find sshwatcher relative to chromeos_root The root of the ChromiumOS source tree is not always in the same location relative to where the crosperf scripts are. This makes the logic for finding sshwatcher.go not work everywhere. To fix this, this change uses the label.chromeos_root path that is present in crosperf runs to find sshwatcher.go. BUG=b:235119397 TEST=run crosperf in standalone toolchain-utils as well as inside ChromiumOS tree to see that sshwatcher.go is found in both cases. Change-Id: I981a55d3cfd2638da0bf320b86ebc5601101ce3f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3935652 Tested-by: Bob Haarman Reviewed-by: Denis Nikitin Commit-Queue: Bob Haarman --- crosperf/suite_runner_unittest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crosperf/suite_runner_unittest.py') diff --git a/crosperf/suite_runner_unittest.py b/crosperf/suite_runner_unittest.py index cc96ee4a..c936a074 100755 --- a/crosperf/suite_runner_unittest.py +++ b/crosperf/suite_runner_unittest.py @@ -122,7 +122,7 @@ class SuiteRunnerTest(unittest.TestCase): @mock.patch("suite_runner.ssh_tunnel") def test_run(self, ssh_tunnel): @contextlib.contextmanager - def mock_ssh_tunnel(_host): + def mock_ssh_tunnel(_watcher, _host): yield "fakelocalhost:1234" ssh_tunnel.side_effect = mock_ssh_tunnel -- cgit v1.2.3