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

# To specify a list of custom tasks, pass in the task parameter:
#    tasks='<task00>&<task01>+<task10>&<task11>+<task20>&<task21>+...'
#
# Use '+' to link together tasks sequentially, and '&' to indicate tasks that
# should be run in parallel.

# Task format:
# - Open a window with some tabs, keep them open for some time:
#       window;<comma-delimited urls>;<duration>
# - Cycle through a list of sites one at a time, for a total duration, and a
#   given delay on each site.
#       cycle;<comma-delimited urls>;<duration>;<delay>
#
# Duration and delay are given in seconds.  With sequential tasks, if
# task0.duration=1800 and task1.duration=1200, task0 will run for 30 minutes,
# followed by task1 for 20 minutes, for a total of 50 minutes.
#
# Example: Use the 'tasks' string below.  Pass 'tasks=tasks' as an argument into
#          job.run_test().

tasks='window;http://www.cnn.com,http://www.ebay.com,http://www.msn.com;900' + \
      ' & ' + \
      'cycle;http://www.facebook.com,http://www.google.com,http://www.yahoo' + \
      '.com;900;60 + ' + \
      'window;http://www.bing.com,http://www.gmail.com,http://www.amazon.co' + \
      'm,http://www.ask.com;600 + ' + \
      'cycle;http://www.youtube.com,http://www.microsoft.com;900;240 + ' + \
      'window;http://www.wikipedia.org;1200 & ' + \
      'window;http://www.alexa.com,http://www.intel.com,http://www.apple.co' + \
      'm;1200'

job.run_test('power_LoadTest', loop_time=loop_time, loop_count=loop_count,
             test_low_batt_p=6, check_network=False, ac_ok=True)
