| # Copyright 2016 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. |
| |
| """This class defines the ADBHost Label class.""" |
| |
| import common |
| |
| from autotest_lib.client.common_lib.brillo import hal_utils |
| from autotest_lib.server.cros.dynamic_suite import constants |
| from autotest_lib.server.hosts import base_label |
| from autotest_lib.server.hosts import common_label |
| |
| |
| BOARD_FILE = 'ro.product.device' |
| |
| |
| class BoardLabel(base_label.StringPrefixLabel): |
| """Determine the correct board label for the device.""" |
| |
| _NAME = constants.BOARD_PREFIX.rstrip(':') |
| |
| # pylint: disable=missing-docstring |
| def generate_labels(self, host): |
| return [host.get_board_name()] |
| |
| |
| class CameraHalLabel(base_label.BaseLabel): |
| """Determine whether a host has a camera HAL in the image.""" |
| |
| _NAME = 'camera-hal' |
| |
| def exists(self, host): |
| return hal_utils.has_hal('camera', host=host) |
| |
| |
| class LoopbackDongleLabel(base_label.BaseLabel): |
| """Determines if an audio loopback dongle is connected to the device.""" |
| |
| _NAME = 'loopback-dongle' |
| |
| def exists(self, host): |
| return '0' not in host.run('cat /sys/class/switch/h2w/state').stdout |
| |
| |
| ADB_LABELS = [ |
| BoardLabel(), |
| CameraHalLabel(), |
| LoopbackDongleLabel(), |
| common_label.OSLabel(), |
| ] |