# Copyright (c) 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.

AUTHOR = "Chrome OS Team"
NAME = "power_LoadTest.fast_gaia"
PURPOSE = "Test health of power load test functionality."
CRITERIA = "This test is a benchmark."
TIME = "SHORT"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "power"
TEST_TYPE = "client"
ATTRIBUTES = "suite:power_build"

DOC = """
This test runs a load test consisting of cycling though web pages, playing
videos, etc. and measures battery power draw. The duration of this test is
determined by the loop_time * loop_count variables below.

This control file is simply meant to stimulate the various aspects of the test
to validate mechanics are in good health (login, external website access).

It ignores whether wired access (check_network=False) or AC is
connected(ac_ok=True).

For reasons above and reduced runtime (3min) it will NOT produce valid power
consumption results for the 60/20/10/10 load and therefore should NOT be used
for any battery life estimations.
"""

# TODO (bleung): Find a way to do automatic Facebook login for test account.
# TODO (tbroch): Find way to not replicate all these parameters that are common
# between this control file and the original
loop_time = 180
loop_count = 1

args_dict = utils.args_to_dict(args)
pdash_note = args_dict.get('pdash_note', '')
job.run_test('power_LoadTest', loop_time=loop_time, loop_count=loop_count,
             test_low_batt_p=6, check_network=False, ac_ok=True,
             gaia_login=True, tag=NAME.split('.')[1], pdash_note=pdash_note)
