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

AUTHOR = "Chrome OS Team"
NAME = "power_Standby"
TIME = "LONG"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "power"
TEST_TYPE = "client"

DOC = """
This test measures the power draw during standby (S3).

Test uses RTC wake to transistion from S3 to S0 every sample_hours for a total
  standby time of test_hours.  The S3->S0 transistions are added to
  1. Validate battery use
  2. Guarantee that S3 was maintained (no external/false wake)
  3. Create S3->S0->S3 transistions which more closely model user's interaction.

Arguments:
  sample_hours: float, number of hours between charge use samples.
  test_hours: float, the number of hours to run the test.

Test must meet the following criteria:
  Battery must contain ~20% of its charge.
  Must be run on battery power
  sample_hours > 0.1
  test_hours > sample_hours
"""

SAMPLE_HOURS = 1.0
TEST_HOURS = 12.0
max_milliwatts_standby = 500.0

args_dict = utils.args_to_dict(args)

sample_hours = float(args_dict.get('sample_hours'), SAMPLE_HOURS)
test_hours = float(args_dict.get('test_hours'), TEST_HOURS)
pdash_note = args_dict.get('pdash_note', '')

job.run_test('power_Standby', sample_hours=sample_hours, test_hours=test_hours,
             max_milliwatts_standby=max_milliwatts_standby,
             pdash_note=pdash_note)
