blob: 262129ff297f8be2bc8a670495540541ad409c17 [file] [log] [blame] [edit]
# Copyright (c) 2014 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 time
from autotest_lib.server import autotest
from autotest_lib.server import hosts
from autotest_lib.server import test
class hardware_StorageQualBase(test.test):
"""Tests run at the beginning over the disk qual test.
This code runs simple tests to ensure the device meet basic critera.
"""
version = 1
CLIENT_FUNCTIONAL_TESTS = [
('hardware_DiskSize', {'constraints': ['gb_main_disk_size >= 8']}),
('hardware_SsdDetection', {
'constraints': ['mb_ssd_device_size >= 8000']}),
('hardware_StorageFio', {'constraints': [
'_seq_read_read_bw >= 50 * 1024',
'_seq_write_write_bw >= 15 * 1024',
'_16k_write_write_iops >= 10'],
'requirements': [
('seq_write', []),
('seq_read', []),
('4k_write', []),
('4k_read', []),
('16k_write', []),
('16k_read', [])],
})
]
CRYPTO_RUNTIME = 5 * 60 # seconds.
CRYPTO_TESTS = [
'surfing',
'boot',
'login',
'seq_write',
'seq_read',
'16k_write',
'16k_read',
'8k_write',
'8k_read',
'4k_write',
'4k_read',
]
def run_once(self, client_ip, client_tag='', crypto_runtime=CRYPTO_RUNTIME,
cq=False):
"""
Runs simple tests to ensure the device meets basic criteria.
@param client_ip: ip address of the client machine
@param client_tag: client tag for keyval label
@param crypto_runtime: runtime for platform.CryptohomeFio tests
@param cq: part of a cq run
"""
# in a cq run, do not execute the test, just output
# the order that the test would have run in
if cq:
self.write_test_keyval(
{'storage_qual_cq': ('%f hardware_StorageQualBase_%s'
% (time.time(), client_tag))})
return
client = hosts.create_host(client_ip)
client_at = autotest.Autotest(client)
for test_name, argv in self.CLIENT_FUNCTIONAL_TESTS:
client_at.run_test(test_name, disable_sysinfo=True, tag=client_tag,
**argv)
# Test real life performance
for script in self.CRYPTO_TESTS:
client_at.run_test('platform_CryptohomeFio',
disable_sysinfo=True,
from_internal_disk_only=True,
script=script,
tag='_'.join([client_tag, script]),
runtime=crypto_runtime,
disk_configs=['crypto', 'plain'])