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

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_ECCharging"
PURPOSE = "Servo based EC charging control test"
CRITERIA = "This test will fail if EC charging control misbehaved."
ATTRIBUTES = "suite:faft_ec, suite:faft_ec_fw_qual, suite:faft_ec3po, suite:faft_ec_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
DEPENDENCIES = "ec:cros"
JOB_RETRIES = 4

DOC = """
This test checks:
  - Charger target voltage should be less than 105% of battery desired voltage.
  - Charger target current should be less than 105% of battery desired current.
  - Charger actual voltage should be less than 105% of charger target voltage.
  - Charger actual current should be less than 105% of charger target current.
"""

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_eccharging(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_ECCharging", host=host, cmdline_args=args,
                 disable_sysinfo=True)

parallel_simple(run_eccharging, machines)
