diff options
Diffstat (limited to 'crosperf/settings.py')
-rw-r--r-- | crosperf/settings.py | 153 |
1 files changed, 89 insertions, 64 deletions
diff --git a/crosperf/settings.py b/crosperf/settings.py index 75c8d9ec..5a983b32 100644 --- a/crosperf/settings.py +++ b/crosperf/settings.py @@ -1,11 +1,10 @@ # -*- coding: utf-8 -*- -# Copyright 2019 The Chromium OS Authors. All rights reserved. +# Copyright 2019 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Module to get the settings from experiment file.""" -from __future__ import print_function from cros_utils import logger from cros_utils import misc @@ -13,74 +12,100 @@ from download_images import ImageDownloader class Settings(object): - """Class representing settings (a set of fields) from an experiment file.""" + """Class representing settings (a set of fields) from an experiment file.""" - def __init__(self, name, settings_type): - self.name = name - self.settings_type = settings_type - self.fields = {} - self.parent = None + def __init__(self, name, settings_type): + self.name = name + self.settings_type = settings_type + self.fields = {} + self.parent = None - def SetParentSettings(self, settings): - """Set the parent settings which these settings can inherit from.""" - self.parent = settings + def SetParentSettings(self, settings): + """Set the parent settings which these settings can inherit from.""" + self.parent = settings - def AddField(self, field): - name = field.name - if name in self.fields: - raise SyntaxError('Field %s defined previously.' % name) - self.fields[name] = field + def AddField(self, field): + name = field.name + if name in self.fields: + raise SyntaxError("Field %s defined previously." % name) + self.fields[name] = field - def SetField(self, name, value, append=False): - if name not in self.fields: - raise SyntaxError("'%s' is not a valid field in '%s' settings" % - (name, self.settings_type)) - if append: - self.fields[name].Append(value) - else: - self.fields[name].Set(value) + def SetField(self, name, value, append=False): + if name not in self.fields: + raise SyntaxError( + "'%s' is not a valid field in '%s' settings" + % (name, self.settings_type) + ) + if append: + self.fields[name].Append(value) + else: + self.fields[name].Set(value) - def GetField(self, name): - """Get the value of a field with a given name.""" - if name not in self.fields: - raise SyntaxError( - "Field '%s' not a valid field in '%s' settings." % (name, self.name)) - field = self.fields[name] - if not field.assigned and field.required: - raise SyntaxError("Required field '%s' not defined in '%s' settings." % - (name, self.name)) - return self.fields[name].Get() + def GetField(self, name): + """Get the value of a field with a given name.""" + if name not in self.fields: + raise SyntaxError( + "Field '%s' not a valid field in '%s' settings." + % (name, self.name) + ) + field = self.fields[name] + if not field.assigned and field.required: + raise SyntaxError( + "Required field '%s' not defined in '%s' settings." + % (name, self.name) + ) + return self.fields[name].Get() - def Inherit(self): - """Inherit any unset values from the parent settings.""" - for name in self.fields: - if (not self.fields[name].assigned and self.parent and - name in self.parent.fields and self.parent.fields[name].assigned): - self.fields[name].Set(self.parent.GetField(name), parse=False) + def Inherit(self): + """Inherit any unset values from the parent settings.""" + for name in self.fields: + if ( + not self.fields[name].assigned + and self.parent + and name in self.parent.fields + and self.parent.fields[name].assigned + ): + self.fields[name].Set(self.parent.GetField(name), parse=False) - def Override(self, settings): - """Override settings with settings from a different object.""" - for name in settings.fields: - if name in self.fields and settings.fields[name].assigned: - self.fields[name].Set(settings.GetField(name), parse=False) + def Override(self, settings): + """Override settings with settings from a different object.""" + for name in settings.fields: + if name in self.fields and settings.fields[name].assigned: + self.fields[name].Set(settings.GetField(name), parse=False) - def Validate(self): - """Check that all required fields have been set.""" - for name in self.fields: - if not self.fields[name].assigned and self.fields[name].required: - raise SyntaxError('Field %s is invalid.' % name) + def Validate(self): + """Check that all required fields have been set.""" + for name in self.fields: + if not self.fields[name].assigned and self.fields[name].required: + raise SyntaxError("Field %s is invalid." % name) - def GetXbuddyPath(self, path_str, autotest_path, debug_path, board, - chromeos_root, log_level, download_debug): - prefix = 'remote' - l = logger.GetLogger() - if (path_str.find('trybot') < 0 and path_str.find('toolchain') < 0 and - path_str.find(board) < 0 and path_str.find(board.replace('_', '-'))): - xbuddy_path = '%s/%s/%s' % (prefix, board, path_str) - else: - xbuddy_path = '%s/%s' % (prefix, path_str) - image_downloader = ImageDownloader(l, log_level) - # Returns three variables: image, autotest_path, debug_path - return image_downloader.Run( - misc.CanonicalizePath(chromeos_root), xbuddy_path, autotest_path, - debug_path, download_debug) + def GetXbuddyPath( + self, + path_str, + autotest_path, + debug_path, + board, + chromeos_root, + log_level, + download_debug, + ): + prefix = "remote" + l = logger.GetLogger() + if ( + path_str.find("trybot") < 0 + and path_str.find("toolchain") < 0 + and path_str.find(board) < 0 + and path_str.find(board.replace("_", "-")) + ): + xbuddy_path = "%s/%s/%s" % (prefix, board, path_str) + else: + xbuddy_path = "%s/%s" % (prefix, path_str) + image_downloader = ImageDownloader(l, log_level) + # Returns three variables: image, autotest_path, debug_path + return image_downloader.Run( + misc.CanonicalizePath(chromeos_root), + xbuddy_path, + autotest_path, + debug_path, + download_debug, + ) |