# Copyright (c) 2010 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.

TIME='LONG'
AUTHOR = 'The Chromium OS Authors'
PURPOSE = 'Stress test the ecryptfs home directory across power state changes.'
CRITERIA = 'This test is a stress test. Expected success, no crashes.'
DOC = """This test uses fio and a basic configuration to test and
validate writes to the ecryptfs vault. It does not create a login
session, but mounts a special user dir for the test.
"""
NAME = 'platform_CryptohomeFio.stress'
TEST_CLASS = 'platform'
TEST_CATEGORY = 'Stress'
TEST_TYPE = 'client'

RUNTIME=60  # seconds.

disk_configs = {#'tmpfs' : (False, True),
	        'ext3+ssd' : (False, False),
 		'ecryptfs+ext3+ssd' : (True, False),
		}

tests = { 'surfing': 'iops',
          'boot': 'bw',
          'login': 'bw',
          'seq_read': 'bw',
          'seq_write': 'bw',
          '16k_read': 'iops',
          '16k_write': 'iops',
          '8k_read': 'iops',
          '8k_write': 'iops',
          '4k_read': 'iops',
          '4k_write': 'iops',
          }


for test in tests.keys():
    for config, opts in disk_configs.items():
        job.run_test('platform_CryptohomeFio', 
                     script=test,
                     tag='%s_%s' % (test, config),
                     runtime=RUNTIME,
                     mount_cryptohome=opts[0],
                     tmpfs=opts[1])

