diff options
author | Stephen Hines <srhines@google.com> | 2017-02-08 10:45:48 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-02-08 10:45:48 +0000 |
commit | 9826fbe38e2bc35fc6c680cc216dcb993b54d2ff (patch) | |
tree | 87b3a32b13c392939d66fa93105896f5df0736a6 /crosperf/label.py | |
parent | baba90fd78c18585d22430dc95c748f96ad0c772 (diff) | |
parent | 271389dd3199539c4474c351942f4d4fa975b81b (diff) | |
download | toolchain-utils-9826fbe38e2bc35fc6c680cc216dcb993b54d2ff.tar.gz |
Merge remote-tracking branch 'aosp/mirror-chromium-master' into initial_import am: 870a8df6fc am: 9c6fa5f9e5 am: c5804ce784
am: 271389dd31
Change-Id: I22e657bc86117da9a6a45329a67a21096736da03
Diffstat (limited to 'crosperf/label.py')
-rw-r--r-- | crosperf/label.py | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/crosperf/label.py b/crosperf/label.py new file mode 100644 index 00000000..d993c15c --- /dev/null +++ b/crosperf/label.py @@ -0,0 +1,159 @@ +# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""The label of benchamrks.""" + +from __future__ import print_function + +import hashlib +import os + +from image_checksummer import ImageChecksummer +from cros_utils.file_utils import FileUtils +from cros_utils import misc + + +class Label(object): + """The label class.""" + + def __init__(self, + name, + chromeos_image, + autotest_path, + chromeos_root, + board, + remote, + image_args, + cache_dir, + cache_only, + log_level, + compiler, + chrome_src=None): + + self.image_type = self._GetImageType(chromeos_image) + + # Expand ~ + chromeos_root = os.path.expanduser(chromeos_root) + if self.image_type == 'local': + chromeos_image = os.path.expanduser(chromeos_image) + + self.name = name + self.chromeos_image = chromeos_image + self.autotest_path = autotest_path + self.board = board + self.remote = remote + self.image_args = image_args + self.cache_dir = cache_dir + self.cache_only = cache_only + self.log_level = log_level + self.chrome_version = '' + self.compiler = compiler + + if not chromeos_root: + if self.image_type == 'local': + chromeos_root = FileUtils().ChromeOSRootFromImage(chromeos_image) + if not chromeos_root: + raise RuntimeError("No ChromeOS root given for label '%s' and could " + "not determine one from image path: '%s'." % + (name, chromeos_image)) + else: + chromeos_root = FileUtils().CanonicalizeChromeOSRoot(chromeos_root) + if not chromeos_root: + raise RuntimeError("Invalid ChromeOS root given for label '%s': '%s'." % + (name, chromeos_root)) + + self.chromeos_root = chromeos_root + if not chrome_src: + self.chrome_src = os.path.join( + self.chromeos_root, '.cache/distfiles/target/chrome-src-internal') + if not os.path.exists(self.chrome_src): + self.chrome_src = os.path.join(self.chromeos_root, + '.cache/distfiles/target/chrome-src') + else: + chromeos_src = misc.CanonicalizePath(chrome_src) + if not chromeos_src: + raise RuntimeError("Invalid Chrome src given for label '%s': '%s'." % + (name, chrome_src)) + self.chrome_src = chromeos_src + + self._SetupChecksum() + + def _SetupChecksum(self): + """Compute label checksum only once.""" + + self.checksum = None + if self.image_type == 'local': + self.checksum = ImageChecksummer().Checksum(self, self.log_level) + elif self.image_type == 'trybot': + self.checksum = hashlib.md5(self.chromeos_image).hexdigest() + + def _GetImageType(self, chromeos_image): + image_type = None + if chromeos_image.find('xbuddy://') < 0: + image_type = 'local' + elif chromeos_image.find('trybot') >= 0: + image_type = 'trybot' + else: + image_type = 'official' + return image_type + + def __hash__(self): + """Label objects are used in a map, so provide "hash" and "equal".""" + + return hash(self.name) + + def __eq__(self, other): + """Label objects are used in a map, so provide "hash" and "equal".""" + + return isinstance(other, Label) and other.name == self.name + + def __str__(self): + """For better debugging.""" + + return 'label[name="{}"]'.format(self.name) + + +class MockLabel(object): + """The mock label class.""" + + def __init__(self, + name, + chromeos_image, + autotest_path, + chromeos_root, + board, + remote, + image_args, + cache_dir, + cache_only, + log_level, + compiler, + chrome_src=None): + self.name = name + self.chromeos_image = chromeos_image + self.autotest_path = autotest_path + self.board = board + self.remote = remote + self.cache_dir = cache_dir + self.cache_only = cache_only + if not chromeos_root: + self.chromeos_root = '/tmp/chromeos_root' + else: + self.chromeos_root = chromeos_root + self.image_args = image_args + self.chrome_src = chrome_src + self.image_type = self._GetImageType(chromeos_image) + self.checksum = '' + self.log_level = log_level + self.compiler = compiler + self.chrome_version = 'Fake Chrome Version 50' + + def _GetImageType(self, chromeos_image): + image_type = None + if chromeos_image.find('xbuddy://') < 0: + image_type = 'local' + elif chromeos_image.find('trybot') >= 0: + image_type = 'trybot' + else: + image_type = 'official' + return image_type |