普通文本  |  64行  |  2.08 KB

# 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.
import logging

import common
from autotest_lib.server import test
from autotest_lib.site_utils import acts_lib
from autotest_lib.server.cros import dnsname_mangler
from autotest_lib.server.hosts import host_info


class android_EasySetup(test.test):
    """A test that does nothing except setup a phone.

    This test will only setup a phone how a user wants and will perform no
    tests.
    """
    version = 1

    def run_once(self,
                testbed=None,
                install_sl4a=True,
                additional_apks=[]):
        """When run the testbed will be setup.

        @param testbed: The testbed to setup.
        @param install_sl4a: When true sl4a will be installed.
        @param additional_apks: An array of apk info dictionaries.
                                apk = Name of the apk (eg. sl4a.apk)
                                package = Name of the package (eg. test.tools)
                                artifact = Name of the artifact, if not given
                                           package is used.
        """
        hostname = testbed.hostname
        if dnsname_mangler.is_ip_address(hostname):
            testbed_name = hostname
        else:
            testbed_name = hostname.split('.')[0]

        valid_hosts = []
        for v in testbed.get_adb_devices().values():
            try:
                info = v.host_info_store.get()
            except host_info.StoreError:
                pass
            else:
                if v.job_repo_url_attribute in info.attributes:
                    valid_hosts.append(v)

        if not valid_hosts:
            logging.error('No valid devices.')
            return

        testbed_env = acts_lib.AndroidTestingEnvironment(
                devices=valid_hosts,
                testbed_name=testbed_name)

        if install_sl4a:
            testbed_env.install_sl4a_apk()

        for apk in additional_apks:
            testbed_env.install_apk(apk)