| # Copyright 2015 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, logging, os |
| import time |
| |
| from autotest_lib.client.bin import test, utils |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.common_lib.cros import chrome |
| |
| # Measurement duration [seconds] for one interation. |
| MEASUREMENT_DURATION = 10 |
| |
| TOTAL_TEST_DURATION = 600 # change the test time to 7 days [seconds]. |
| |
| # Time to exclude from calculation after launching the demo [seconds]. |
| STABILIZATION_DURATION = 20 |
| |
| _PERF_RESULT_FILE = '/tmp/perf.csv' |
| |
| class enterprise_KioskPerf(test.test): |
| """Enrolls to kiosk mode and monitors cpu/memory usage.""" |
| |
| version = 1 |
| |
| |
| def test_cpu_usage(self): |
| """ |
| Runs the video cpu usage test. |
| |
| @param local_path: the path to the video file. |
| |
| @returns a dictionary that contains the test result. |
| """ |
| cpu_usage_start = utils.get_cpu_usage() |
| time.sleep(MEASUREMENT_DURATION) |
| cpu_usage_end = utils.get_cpu_usage() |
| return utils.compute_active_cpu_time(cpu_usage_start, |
| cpu_usage_end) * 100 |
| |
| |
| def used_mem(self): |
| """Returns total used memory in %.""" |
| total_memory = utils.get_mem_total() |
| return (total_memory - utils.get_mem_free()) * 100 / total_memory |
| |
| def verify_enrollment(self, user_id): |
| """Verifies enterprise enrollment using /home/.shadow config.""" |
| with open('/home/.shadow/install_attributes.pb') as f: |
| if not user_id in f.read(): |
| raise error.TestError('Device is not enrolled or ' |
| 'enterprise owned.') |
| |
| def run_once(self): |
| user_id, password = utils.get_signin_credentials(os.path.join( |
| os.path.dirname(os.path.realpath(__file__)), 'credentials.txt')) |
| if not (user_id and password): |
| logging.warn('No credentials found - exiting test.') |
| return |
| |
| with chrome.Chrome(auto_login=False) as cr: |
| cr.browser.oobe.NavigateGaiaLogin( |
| user_id, password, |
| enterprise_enroll=True, |
| for_user_triggered_enrollment=True) |
| time.sleep(STABILIZATION_DURATION) |
| self.verify_enrollment(user_id) |
| start_time = time.time() |
| perf_keyval = {} |
| perf_file = open(_PERF_RESULT_FILE, 'w') |
| writer = csv.writer(perf_file) |
| writer.writerow(['cpu','memory', 'timestamp']) |
| while (time.time() - start_time) < TOTAL_TEST_DURATION: |
| perf_keyval['cpu_usage'] = self.test_cpu_usage() |
| perf_keyval['memory_usage'] = self.used_mem() |
| writer.writerow([perf_keyval['cpu_usage'], |
| perf_keyval['memory_usage'], |
| time.strftime('%Y/%m/%d %H:%M:%S')]) |
| self.write_perf_keyval(perf_keyval) |
| time.sleep(10) |
| perf_file.close() |