label.py revision 0440388677b2445f4f8273b6c2b4d82601b1aca3
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, image_md5sum, cache_dir, chrome_src=None):
17    # Expand ~
18    chromeos_root = os.path.expanduser(chromeos_root)
19    chromeos_image = os.path.expanduser(chromeos_image)
20
21    self.name = name
22    self.chromeos_image = chromeos_image
23    self.board = board
24    self.remote = remote
25    self.image_args = image_args
26    self.image_md5sum = image_md5sum
27    self.cache_dir = cache_dir
28
29    if not chromeos_root:
30      chromeos_root = FileUtils().ChromeOSRootFromImage(chromeos_image)
31      if not chromeos_root:
32        raise Exception("No ChromeOS root given for label '%s' and could not "
33                        "determine one from image path: '%s'." %
34                        (name, chromeos_image))
35    else:
36      chromeos_root = FileUtils().CanonicalizeChromeOSRoot(chromeos_root)
37      if not chromeos_root:
38        raise Exception("Invalid ChromeOS root given for label '%s': '%s'."
39                        % (name, chromeos_root))
40
41    self.chromeos_root = chromeos_root
42    if not chrome_src:
43      self.chrome_src = os.path.join(self.chromeos_root,
44          "chroot/var/cache/chromeos-chrome/chrome-src-internal/src")
45      if not os.path.exists(self.chrome_src):
46        self.chrome_src = os.path.join(self.chromeos_root,
47          "chroot/var/cache/chromeos-chrome/chrome-src/src")
48    else:
49      chromeos_src = misc.CanonicalizePath(chrome_src)
50      if not chromeos_src:
51        raise Exception("Invalid Chrome src given for label '%s': '%s'."
52                        % (name, chrome_src))
53      self.chrome_src = chromeos_src
54
55
56class MockLabel(object):
57  def __init__(self, name, chromeos_image, chromeos_root, board, remote,
58               image_args, image_md5sum, cache_dir, chrome_src=None):
59    self.name = name
60    self.chromeos_image = chromeos_image
61    self.board = board
62    self.remote = remote
63    self.cache_dir = cache_dir
64    if not chromeos_root:
65      self.chromeos_root = "/tmp/chromeos_root"
66    else:
67      self.chromeos_root = chromeos_root
68    self.image_args = image_args
69    self.image_md5sum = image_md5sum
70