aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan R Abrahams <ajordanr@google.com>2021-10-07 03:27:51 +0000
committerCommit Bot <commit-bot@chromium.org>2021-10-11 07:29:49 +0000
commitc5e12fbac037054444b2c07d708745c377d68328 (patch)
treeda2ae5bcf4bc87c5dbe5c9bef60d4a3221f07df0
parentec4d2aec19dc05d45eef5ea4925cbb72f2a2123f (diff)
downloadtoolchain-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-xcrosperf/crosperf_unittest.py2
-rw-r--r--crosperf/experiment.py3
-rw-r--r--crosperf/experiment_factory.py4
-rw-r--r--crosperf/experiment_runner.py2
-rw-r--r--crosperf/settings_factory.py7
-rwxr-xr-xcrosperf/settings_factory_unittest.py4
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__':