69 lines
2.6 KiB
Plaintext
69 lines
2.6 KiB
Plaintext
# Copyright 2019 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 = "coconutruben"
|
|
NAME = "power_Monitoring"
|
|
PURPOSE = "Continuously measure power with servod while running client tests."
|
|
CRITERIA = "This test is a wrapper for ServodWrapper wrapped test(s)."
|
|
TIME = "LONG"
|
|
TEST_CATEGORY = "Benchmark"
|
|
TEST_CLASS = "power"
|
|
TEST_TYPE = "server"
|
|
DEPENDENCIES = "servo_state:WORKING"
|
|
|
|
DOC = """
|
|
This wrapper test runs the tests specified under a given suite in a continuous
|
|
loop for a given amount of time. If the DUT runs out of power, the test charges
|
|
it before continuing the test suite.
|
|
|
|
So this test is designed to collect all relevant power tests for many loops.
|
|
This has three main advantages and use cases:
|
|
- There is a wider spread of battery charge percentages that tests run under
|
|
as tests don't recharge at the end individually.
|
|
- This runs as a one stop test and requires less configuration and scheduling.
|
|
- As this runs as one test this allows to collect multiple samples of the same
|
|
client test under the same OS image in environments where a new test triggers
|
|
an image update.
|
|
|
|
Based on the above this test might be a good fit for your use case or not.
|
|
|
|
This test makes the following assumptions:
|
|
1. The DUT is attached to a servo device that supports charging and
|
|
discharging (currently only v4).
|
|
|
|
2. Servod is already running, and its host and port are provided to this
|
|
autotest.
|
|
|
|
3. The workstation (or where the autotest is kicked off from) should be in same
|
|
timezone with the DUT.
|
|
|
|
Sample usage:
|
|
test_that <ip address of DUT> power_Monitoring --args \
|
|
'suite=power_monitoring runtime_hr=20 servo_host=localhost servo_port=9999'
|
|
|
|
What are the parameters (all optional with defaults):
|
|
suite: the test suite to run.
|
|
runtime_hr: desired runtime in hours.
|
|
start_charging_level: battery charge percent when charging triggers.
|
|
stop_charging_level: battery charge percent when charging stops.
|
|
servo_host: host of servod instance.
|
|
servo_port: port that the servod instance is on.
|
|
pdash_note: User supplied note to tag the specific test; optional.
|
|
"""
|
|
# Workaround to make it compatible with moblab autotest UI.
|
|
global args_dict
|
|
try:
|
|
args_dict
|
|
except NameError:
|
|
args_dict = utils.args_to_dict(args)
|
|
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
|
|
|
|
def run(machine):
|
|
host = hosts.create_host(machine, servo_args=servo_args)
|
|
job.run_test('power_Monitoring', host=host, config=args_dict,
|
|
disable_sysinfo=True)
|
|
parallel_simple(run, machines)
|