83 lines
3.1 KiB
Python
83 lines
3.1 KiB
Python
# 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()
|