label.py revision 98a53692fb946a8eac46e3e82257f540d1350c18
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, 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 32 if not chromeos_root: 33 if self.image_type == "local": 34 chromeos_root = FileUtils().ChromeOSRootFromImage(chromeos_image) 35 if not chromeos_root: 36 raise Exception("No ChromeOS root given for label '%s' and could not " 37 "determine one from image path: '%s'." % 38 (name, chromeos_image)) 39 else: 40 chromeos_root = FileUtils().CanonicalizeChromeOSRoot(chromeos_root) 41 if not chromeos_root: 42 raise Exception("Invalid ChromeOS root given for label '%s': '%s'." 43 % (name, chromeos_root)) 44 45 self.chromeos_root = chromeos_root 46 if not chrome_src: 47 self.chrome_src = os.path.join(self.chromeos_root, 48 ".cache/distfiles/target/chrome-src-internal/src") 49 if not os.path.exists(self.chrome_src): 50 self.chrome_src = os.path.join(self.chromeos_root, 51 ".cache/distfiles/target/chrome-src/src") 52 else: 53 chromeos_src = misc.CanonicalizePath(chrome_src) 54 if not chromeos_src: 55 raise Exception("Invalid Chrome src given for label '%s': '%s'." 56 % (name, chrome_src)) 57 self.chrome_src = chromeos_src 58 59 def _GetImageType(self, chromeos_image): 60 image_type = None 61 if chromeos_image.find("xbuddy://") < 0: 62 image_type = "local" 63 elif chromeos_image.find("trybot") >= 0: 64 image_type = "trybot" 65 else: 66 image_type = "official" 67 return image_type 68 69class MockLabel(object): 70 def __init__(self, name, chromeos_image, chromeos_root, board, remote, 71 image_args, cache_dir, chrome_src=None): 72 self.name = name 73 self.chromeos_image = chromeos_image 74 self.board = board 75 self.remote = remote 76 self.cache_dir = cache_dir 77 if not chromeos_root: 78 self.chromeos_root = "/tmp/chromeos_root" 79 else: 80 self.chromeos_root = chromeos_root 81 self.image_args = image_args 82 self.chrome_src = chrome_src 83