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

AUTHOR = "Chromium OS"
NAME = "autoupdate.local"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"

DOC = """
A test that reimages the assigned machines and checks for success.

Performs an update using the local devserver and flexes the autoupdater
pathways. This test presumes that you have already started up a local devserver.
You can do this by running:
start_devserver [--pregenerate_update] [--image|--payload=<optional target>].

@param port: Optional port to use to connect to the devsever. By default this is
  8080.
"""

import socket
from autotest_lib.client.common_lib import utils


def run(machine):
    hostname = socket.getfqdn()
    args_dict = utils.args_to_dict(args)
    port = args_dict.get('port', '8080')

    image_url = 'http://%s:%s/update' % (hostname, port)
    host = hosts.create_host(machine, initialize=False)
    job.run_test('autoupdate', host=host, update_url=image_url,
                 local_devserver=True)


job.parallel_simple(run, machines)
