diff options
author | Jordan R Abrahams <ajordanr@google.com> | 2021-10-07 03:27:51 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-11 07:29:49 +0000 |
commit | c5e12fbac037054444b2c07d708745c377d68328 (patch) | |
tree | da2ae5bcf4bc87c5dbe5c9bef60d4a3221f07df0 | |
parent | ec4d2aec19dc05d45eef5ea4925cbb72f2a2123f (diff) | |
download | toolchain-utils-c5e12fbac037054444b2c07d708745c377d68328.tar.gz |
Add 'no_lock' crosperf setting
This global experiment setting prevents crosperf from
attempting to lock the associated devices. This is important
if the devices were locked previously before by crosfleet.
BUG=b:187535367
TEST=CQ
TEST=Lease board from crosfleet. Forward SSH port. Run crosperf on
forwarded port.
Change-Id: I0f5341e07e325a613c6316778c0f096f6d8088a2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3210525
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Jordan R Abrahams <ajordanr@google.com>
Commit-Queue: Jordan R Abrahams <ajordanr@google.com>
-rwxr-xr-x | crosperf/crosperf_unittest.py | 2 | ||||
-rw-r--r-- | crosperf/experiment.py | 3 | ||||
-rw-r--r-- | crosperf/experiment_factory.py | 4 | ||||
-rw-r--r-- | crosperf/experiment_runner.py | 2 | ||||
-rw-r--r-- | crosperf/settings_factory.py | 7 | ||||
-rwxr-xr-x | crosperf/settings_factory_unittest.py | 4 |
6 files changed, 16 insertions, 6 deletions
diff --git a/crosperf/crosperf_unittest.py b/crosperf/crosperf_unittest.py index 9c7d52a1..07728e7d 100755 --- a/crosperf/crosperf_unittest.py +++ b/crosperf/crosperf_unittest.py @@ -68,7 +68,7 @@ class CrosperfTest(unittest.TestCase): settings = crosperf.ConvertOptionsToSettings(options) self.assertIsNotNone(settings) self.assertIsInstance(settings, settings_factory.GlobalSettings) - self.assertEqual(len(settings.fields), 39) + self.assertEqual(len(settings.fields), 40) self.assertTrue(settings.GetField('rerun')) argv = ['crosperf/crosperf.py', 'temp.exp'] options, _ = parser.parse_known_args(argv) diff --git a/crosperf/experiment.py b/crosperf/experiment.py index 854d7f77..e919f6ee 100644 --- a/crosperf/experiment.py +++ b/crosperf/experiment.py @@ -29,7 +29,7 @@ class Experiment(object): cache_conditions, labels, benchmarks, experiment_file, email_to, acquire_timeout, log_dir, log_level, share_cache, results_directory, compress_results, locks_directory, cwp_dso, - ignore_min_max, crosfleet, dut_config): + ignore_min_max, crosfleet, dut_config, no_lock: bool): self.name = name self.working_directory = working_directory self.remote = remote @@ -57,6 +57,7 @@ class Experiment(object): self.cwp_dso = cwp_dso self.ignore_min_max = ignore_min_max self.crosfleet = crosfleet + self.no_lock = no_lock self.l = logger.GetLogger(log_dir) if not self.benchmarks: diff --git a/crosperf/experiment_factory.py b/crosperf/experiment_factory.py index 73928756..19b373a9 100644 --- a/crosperf/experiment_factory.py +++ b/crosperf/experiment_factory.py @@ -121,6 +121,7 @@ class ExperimentFactory(object): log_level = 'verbose' crosfleet = global_settings.GetField('crosfleet') + no_lock = bool(global_settings.GetField('no_lock')) # Check whether crosfleet tool is installed correctly for crosfleet mode. if crosfleet and not self.CheckCrosfleetTool(chromeos_root, log_level): sys.exit(0) @@ -444,7 +445,8 @@ class ExperimentFactory(object): experiment_file.Canonicalize(), email, acquire_timeout, log_dir, log_level, share_cache, results_dir, compress_results, locks_dir, cwp_dso, - ignore_min_max, crosfleet, dut_config) + ignore_min_max, crosfleet, dut_config, + no_lock=no_lock) return experiment diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 49aff425..ca846154 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -176,7 +176,7 @@ class ExperimentRunner(object): # no-op task on the DUT and new test created will be hanging there. # TODO(zhizhouy): Need to check whether machine is ready or not before # assigning a test to it. - if not experiment.crosfleet: + if not experiment.no_lock and not experiment.crosfleet: self._LockAllMachines(experiment) # Calculate all checksums of avaiable/locked machines, to ensure same # label has same machines for testing diff --git a/crosperf/settings_factory.py b/crosperf/settings_factory.py index 34326b68..a38f24f9 100644 --- a/crosperf/settings_factory.py +++ b/crosperf/settings_factory.py @@ -439,6 +439,13 @@ class GlobalSettings(Settings): ' or equal to a percent of max_freq. ' 'CPU frequency is reduced to 95%% by default to reduce thermal ' 'throttling.')) + self.AddField( + BooleanField( + 'no_lock', + default=False, + description='Do not attempt to lock the DUT.' + ' Useful when lock is held externally, say with crosfleet.' + )) class SettingsFactory(object): diff --git a/crosperf/settings_factory_unittest.py b/crosperf/settings_factory_unittest.py index 035da8d7..8277e870 100755 --- a/crosperf/settings_factory_unittest.py +++ b/crosperf/settings_factory_unittest.py @@ -50,7 +50,7 @@ class GlobalSettingsTest(unittest.TestCase): def test_init(self): res = settings_factory.GlobalSettings('g_settings') self.assertIsNotNone(res) - self.assertEqual(len(res.fields), 39) + self.assertEqual(len(res.fields), 40) self.assertEqual(res.GetField('name'), '') self.assertEqual(res.GetField('board'), '') self.assertEqual(res.GetField('crosfleet'), False) @@ -108,7 +108,7 @@ class SettingsFactoryTest(unittest.TestCase): g_settings = settings_factory.SettingsFactory().GetSettings( 'global', 'global') self.assertIsInstance(g_settings, settings_factory.GlobalSettings) - self.assertEqual(len(g_settings.fields), 39) + self.assertEqual(len(g_settings.fields), 40) if __name__ == '__main__': |