• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from autotest_lib.server import autotest
6from autotest_lib.server import hosts
7from autotest_lib.server import test
8
9
10class hardware_StorageQualBase(test.test):
11    """Tests run at the beginning over the disk qual test.
12
13    This code runs simple tests to ensure the device meet basic critera.
14    """
15
16    version = 1
17    CLIENT_FUNCTIONAL_TESTS = [
18        ('hardware_DiskSize', {'constraints': ['gb_main_disk_size >= 8']}),
19        ('hardware_SsdDetection', {
20            'constraints': ['mb_ssd_device_size >= 8000']}),
21        ('hardware_StorageFio', {'constraints': [
22            '_seq_read_read_bw_mean >= 50 * 1024',
23            '_seq_write_write_bw_mean >= 15 * 1024',
24            '_16k_write_write_iops >= 10'],
25            'requirements': [
26                ('seq_read', []),
27                ('seq_write', []),
28                ('16k_read', []),
29                ('16k_write', [])],
30                })
31    ]
32
33    CRYPTO_RUNTIME = 5 * 60  # seconds.
34
35    CRYPTO_TESTS = [
36        'surfing',
37        'boot',
38        'login',
39        'seq_read',
40        'seq_write',
41        '16k_read',
42        '16k_write',
43        '8k_read',
44        '8k_write',
45        '4k_read',
46        '4k_write',
47    ]
48
49
50    def run_once(self, client_ip, client_tag='', crypto_runtime=CRYPTO_RUNTIME):
51        client = hosts.create_host(client_ip)
52        client_at = autotest.Autotest(client)
53        for test_name, argv in self.CLIENT_FUNCTIONAL_TESTS:
54            client_at.run_test(test_name, disable_sysinfo=True, tag=client_tag,
55                               **argv)
56
57        # Test real life performance
58        for script in self.CRYPTO_TESTS:
59            client_at.run_test('platform_CryptohomeFio',
60                disable_sysinfo=True,
61                from_internal_disk_only=True,
62                script=script,
63                tag='_'.join([client_tag, script]),
64                runtime=crypto_runtime,
65                disk_configs=['crypto', 'plain'])
66