# Copyright (c) 2012 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 from autotest_lib.client.common_lib import error from autotest_lib.client.common_lib import utils NAME = "provision_FactoryImage" AUTHOR = "beeps@google.com, chromeos-lab-infrastructure@google.com" TIME = "MEDIUM" TEST_CATEGORY = "Install" TEST_CLASS = "provision" TEST_TYPE = "server" PY_VERSION = 3 DOC = """ This test installs a specified factory image onto a servo-connected DUT. It will attempt to retrieve the factory image from the canary branch, and as such, the image_name must correspond to the name on that branch. For example, to install the daisy_spring image from the canary-channel, one would specify an image_name like: "daisy-spring/4262.320.0". Here is the command to install a recovery image with a locally attached servo: test_that provision_FactoryImage --board= \ --args="image_name=/ servo_host=" where servo_host is the ip of beagle board running servod. If a servo_host is not specified and the DUT is in .cros, we will construct the right name for its servo, and if the DUT isn't in .cros we will attempt to use localhost as the servohost. """ args_dict = utils.args_to_dict(args) image_name = args_dict.get('image_name') servo_host = args_dict.get('servo_host') if not image_name: raise error.AutoservError('Please specify --args="image_name=/' ' servo_host=" when ' 'invoking test_that. Make sure the DUT you are ' 'trying to reimage has a beagle-board/servo ' 'attached.') servo_args = hosts.CrosHost.get_servo_arguments(args_dict) def run(machine): """Create a host stage a factory image and reimage through servo.""" host = hosts.create_host(machine, servo_args=servo_args) image_url = host.stage_factory_image_for_servo(image_name=image_name) job.run_test('provision_FactoryImage', host=host, disable_sysinfo=True, image_url=image_url) parallel_simple(run, machines)