label.py revision 1505b6ac10710044361cd65c7890014cb43e9930
1#!/usr/bin/python 2 3# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7"""The label of benchamrks.""" 8 9import os 10from utils.file_utils import FileUtils 11from utils import misc 12 13 14class Label(object): 15 def __init__(self, name, chromeos_image, chromeos_root, board, remote, 16 image_args, cache_dir, cache_only, chrome_src=None): 17 18 self.image_type = self._GetImageType(chromeos_image) 19 20 # Expand ~ 21 chromeos_root = os.path.expanduser(chromeos_root) 22 if self.image_type == "local": 23 chromeos_image = os.path.expanduser(chromeos_image) 24 25 self.name = name 26 self.chromeos_image = chromeos_image 27 self.board = board 28 self.remote = remote 29 self.image_args = image_args 30 self.cache_dir = cache_dir 31 self.cache_only = cache_only 32 33 if not chromeos_root: 34 if self.image_type == "local": 35 chromeos_root = FileUtils().ChromeOSRootFromImage(chromeos_image) 36 if not chromeos_root: 37 raise Exception("No ChromeOS root given for label '%s' and could not " 38 "determine one from image path: '%s'." % 39 (name, chromeos_image)) 40 else: 41 chromeos_root = FileUtils().CanonicalizeChromeOSRoot(chromeos_root) 42 if not chromeos_root: 43 raise Exception("Invalid ChromeOS root given for label '%s': '%s'." 44 % (name, chromeos_root)) 45 46 self.chromeos_root = chromeos_root 47 if not chrome_src: 48 self.chrome_src = os.path.join(self.chromeos_root, 49 ".cache/distfiles/target/chrome-src-internal") 50 if not os.path.exists(self.chrome_src): 51 self.chrome_src = os.path.join(self.chromeos_root, 52 ".cache/distfiles/target/chrome-src") 53 else: 54 chromeos_src = misc.CanonicalizePath(chrome_src) 55 if not chromeos_src: 56 raise Exception("Invalid Chrome src given for label '%s': '%s'." 57 % (name, chrome_src)) 58 self.chrome_src = chromeos_src 59 60 def _GetImageType(self, chromeos_image): 61 image_type = None 62 if chromeos_image.find("xbuddy://") < 0: 63 image_type = "local" 64 elif chromeos_image.find("trybot") >= 0: 65 image_type = "trybot" 66 else: 67 image_type = "official" 68 return image_type 69 70class MockLabel(object): 71 def __init__(self, name, chromeos_image, chromeos_root, board, remote, 72 image_args, cache_dir, cache_only, chrome_src=None): 73 self.name = name 74 self.chromeos_image = chromeos_image 75 self.board = board 76 self.remote = remote 77 self.cache_dir = cache_dir 78 self.cache_only = cache_only 79 if not chromeos_root: 80 self.chromeos_root = "/tmp/chromeos_root" 81 else: 82 self.chromeos_root = chromeos_root 83 self.image_args = image_args 84 self.chrome_src = chrome_src 85 self.image_type = self._GetImageType(chromeos_image) 86 87 def _GetImageType(self, chromeos_image): 88 image_type = None 89 if chromeos_image.find("xbuddy://") < 0: 90 image_type = "local" 91 elif chromeos_image.find("trybot") >= 0: 92 image_type = "trybot" 93 else: 94 image_type = "official" 95 return image_type 96