Move CFM perf test from client to server side.
All the operations performed by the client CFM perf test can be done
from a server side test, hence move enterprise_CFM_Perf to server. We
need the server side test to clear the tpm and enroll the device in
hotrod before starting performance data collection.
BUG=None
TEST=Locally
Change-Id: Ieab077c478aa510680a0bf0fc2923a4fccb83b04
Reviewed-on: https://chromium-review.googlesource.com/350908
Commit-Ready: Harpreet Grewal <harpreet@chromium.org>
Tested-by: Harpreet Grewal <harpreet@chromium.org>
Reviewed-by: Kalin Stoyanov <kalin@chromium.org>
diff --git a/client/site_tests/enterprise_CFM_Perf/control b/client/site_tests/enterprise_CFM_Perf/control
deleted file mode 100644
index 9cac1fa..0000000
--- a/client/site_tests/enterprise_CFM_Perf/control
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 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 = "harpreet@chromium.org"
-NAME = "enterprise_CFM_Perf"
-PURPOSE = 'Records cpu, memory and temp data on hotrod device.'
-TIME = "MEDIUM"
-TEST_CATEGORY = "Performance"
-TEST_CLASS = "hotrod"
-TEST_TYPE = "client"
-
-DOC = """
-Test collects cpu, memory and temperature data from the device under test.
-"""
-
-job.run_test('enterprise_CFM_Perf')
diff --git a/server/site_tests/enterprise_CFM_PerfServer/control b/server/site_tests/enterprise_CFM_Perf/control
similarity index 67%
rename from server/site_tests/enterprise_CFM_PerfServer/control
rename to server/site_tests/enterprise_CFM_Perf/control
index 8345ee2..a8163b9 100644
--- a/server/site_tests/enterprise_CFM_PerfServer/control
+++ b/server/site_tests/enterprise_CFM_Perf/control
@@ -2,8 +2,10 @@
# 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 = "harpreet@chromium.org"
-NAME = "enterprise_CFM_PerfServer"
+NAME = "enterprise_CFM_Perf"
TIME = "MEDIUM"
TEST_CATEGORY = "Performance"
TEST_CLASS = "enterprise"
@@ -16,8 +18,11 @@
Storage as part of the test logs.
"""
+args_dict = utils.args_to_dict(args)
+servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
+
def run_test(machine):
- host = hosts.create_host(machine)
- job.run_test('enterprise_CFM_PerfServer', host=host)
+ host = hosts.create_host(machine, servo_args=servo_args)
+ job.run_test('enterprise_CFM_Perf', host=host)
parallel_simple(run_test, machines)
diff --git a/client/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py b/server/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
similarity index 65%
rename from client/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
rename to server/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
index 1548c4a..1e8a368 100644
--- a/client/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
+++ b/server/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
@@ -1,19 +1,23 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# 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.
import csv, os, re, time
-from autotest_lib.client.bin import site_utils, test, utils
+from autotest_lib.client.bin import utils, site_utils
+from autotest_lib.client.common_lib.cros import tpm_utils
+from autotest_lib.server import test, autotest, afe_utils
_MEASUREMENT_DURATION_SECONDS = 10
-_TOTAL_TEST_DURATION_SECONDS = 60
+_TOTAL_TEST_DURATION_SECONDS = 30
_PERF_RESULT_FILE = 'perf.csv'
class enterprise_CFM_Perf(test.test):
- """Captures cpu, memory and temperature data at set interval and stores it
- in resultsdir of test logs to be uploaded to Google Cloud Storage."""
+ """This is a server test which clears device TPM and runs
+ enterprise_RemoraRequisition client test to enroll the device in to hotrod
+ mode. After enrollment is successful, it collects and logs cpu, memory and
+ temperature data from the device under test."""
version = 1
@@ -44,7 +48,7 @@
MOSYS_OUTPUT_RE = re.compile('(\w+)="(.*?)"')
values = {}
cmd = 'mosys -k sensor print thermal %s' % temp_sensor_name
- for kv in MOSYS_OUTPUT_RE.finditer(utils.system_output(cmd)):
+ for kv in MOSYS_OUTPUT_RE.finditer(self.client.run_output(cmd)):
key, value = kv.groups()
if key == 'reading':
value = int(value)
@@ -52,11 +56,24 @@
return values['reading']
- def run_once(self):
+ def run_once(self, host=None):
+ self.client = host
+
+ tpm_utils.ClearTPMOwnerRequest(self.client)
+
+ if self.client.servo:
+ self.client.servo.switch_usbkey('dut')
+ self.client.servo.set('usb_mux_sel3', 'dut_sees_usbkey')
+ self.client.servo.set('dut_hub1_rst1', 'off')
+
+ autotest.Autotest(self.client).run_test('enterprise_RemoraRequisition',
+ check_client_result=True)
+
+ # TODO: Start a hangout session after device enrollment succeeds.
start_time = time.time()
perf_keyval = {}
- board_name = utils.get_current_board()
- build_id = utils.get_chromeos_release_version()
+ board_name = self.client.get_board().split(':')[1]
+ build_id = afe_utils.get_build(self.client)
perf_file = open(os.path.join(self.resultsdir, _PERF_RESULT_FILE), 'w')
writer = csv.writer(perf_file)
writer.writerow(['cpu', 'memory', 'temperature', 'timestamp', 'board',
@@ -76,3 +93,8 @@
perf_file.close()
utils.write_keyval(os.path.join(self.resultsdir, os.pardir),
{'perf_csv_folder': self.resultsdir})
+
+ # TODO: End the hangout session after performance data collection is
+ # done.
+
+ tpm_utils.ClearTPMOwnerRequest(self.client)
diff --git a/server/site_tests/enterprise_CFM_PerfServer/enterprise_CFM_PerfServer.py b/server/site_tests/enterprise_CFM_PerfServer/enterprise_CFM_PerfServer.py
deleted file mode 100644
index ae54854..0000000
--- a/server/site_tests/enterprise_CFM_PerfServer/enterprise_CFM_PerfServer.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# 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.
-
-from autotest_lib.client.common_lib.cros import tpm_utils
-from autotest_lib.server import test, autotest
-
-
-class enterprise_CFM_PerfServer(test.test):
- """This is a server test which clears device TPM and runs
- enterprise_RemoraRequisition client test to enroll the device in to hotrod
- mode. After enrollment is successful, it runs the enterprise_CFM_Perf client
- test to collect and log cpu, memory and temperature data from the device
- under test."""
- version = 1
-
-
- def run_once(self, host=None):
- self.client = host
-
- tpm_utils.ClearTPMOwnerRequest(self.client)
- autotest.Autotest(self.client).run_test('enterprise_RemoraRequisition',
- check_client_result=True)
-
- # TODO: Start a hangout session after device enrollment succeeds.
-
- autotest.Autotest(self.client).run_test('enterprise_CFM_Perf',
- check_client_result=True)
-
- # TODO: End the hangout session after performance data collection is
- # done.
-
- tpm_utils.ClearTPMOwnerRequest(self.client)