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)