power_LoadTest: publish percent_cpuidle_C0_time perf value.
CPU C0 utilization can provide useful metric for tracking battery life
regressions in the absence of reliable battery drain data. Lets track
it.
BUG=chromium:616153
TEST=test_that power_LoadTest.fast_gaia
Contents of results-chart.json,
{
"percent_cpuidle_C0_time": {
"summary": {
"units": "percent",
"type": "scalar",
"value": 43.173375902954845,
"improvement_direction": "down"
}
}
Change-Id: I8615a1a872ae2bedde5ed059223c064765163d85
Reviewed-on: https://chromium-review.googlesource.com/349370
Commit-Ready: Todd Broch <tbroch@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Sameer Nanda <snanda@chromium.org>
diff --git a/client/site_tests/power_LoadTest/control.fast_gaia b/client/site_tests/power_LoadTest/control.fast_gaia
new file mode 100644
index 0000000..d2a4011
--- /dev/null
+++ b/client/site_tests/power_LoadTest/control.fast_gaia
@@ -0,0 +1,39 @@
+# Copyright (c) 2016 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_gaia"
+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"
+
+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
+
+job.run_test('power_LoadTest', loop_time=loop_time, loop_count=loop_count,
+ test_low_batt_p=6, check_network=False, ac_ok=True,
+ gaia_login=True)
diff --git a/client/site_tests/power_LoadTest/power_LoadTest.py b/client/site_tests/power_LoadTest/power_LoadTest.py
index c3866dc..d8bf733 100755
--- a/client/site_tests/power_LoadTest/power_LoadTest.py
+++ b/client/site_tests/power_LoadTest/power_LoadTest.py
@@ -395,9 +395,15 @@
self.output_perf_value(description='minutes_battery_life',
value=keyvals['minutes_battery_life'],
units='minutes')
+
if not self._gaia_login:
keyvals = dict(map(lambda (key, value):
('INVALID_' + str(key), value), keyvals.items()))
+ else:
+ self.output_perf_value(description='percent_cpuidle_C0_time',
+ value=keyvals['percent_cpuidle_C0_time'],
+ units='percent')
+
self.write_perf_keyval(keyvals)
self._plog.save_results(self.resultsdir)
self._tlog.save_results(self.resultsdir)