# 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 = "Chrome OS Team"
NAME = "power_LoadTest.single_page"
PURPOSE = "Measure power draw when system is under load."
CRITERIA = "This test is a benchmark."
TIME = "MEDIUM"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "power"
TEST_TYPE = "client"

DOC = """
This test measures the power of a single webpage including stats such as
cpu usage.

@args: the website url to run the test with

The following manual steps need to be performed on the device under test
before this test can be run:
  - make sure that Ethernet cable is disconnected and WiFi is connected
  - disconnect power cable

You are now ready to run the test.
"""

# 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 = 300
loop_count = 1

# Task format:
# This sets the tasks variable in the extension directly via javascript.
#
# Args:
# type: [window, cycle] Window will open a window with tabs for the duration of
# the window. Cycle will cycle through the urls for the duration of the window
# every delay ms.
# name: name of the window
# start: start time (ms)
# duration: duration of task (ms)
# delay: time for each url for the cycle type (ms)
# timeout: time before loading a url times out for the cycle type (ms)
# focus: whether the window should be in the foreground
# tabs: list of urls for the window type
# urls: list of urls to cycle through for the cycle type

# The duration and delay are scaled by 1/12 due to the loop time being 300
# instead of 3600 seconds. This is why duration is minutes(60) instead of
# minutes(5) and delay is minutes(12) instead of minutes(1).
tasks='[{' + \
'    type: \'cycle\',' + \
'    name: \'web\',' + \
'    start: seconds(1),' + \
'    duration: minutes(60),' + \
'    delay: minutes(12),' + \
'    timeout: seconds(10),' + \
'    focus: true,' + \
'    urls: [' + \
'\'' + \
args[0] + \
'\'' + \
']}]'

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, tasks=tasks, tag=NAME.split('.')[1],
             pdash_note=pdash_note)
