blob: b54a5829e51f85469b523b9ccd054b945c5d8032 [file] [log] [blame]
AUTHOR = "Peter Kukol pkukol@google.com"
NAME = "fsdev"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "Kernel"
TEST_TYPE = "client"
DOC = """
This test locates hard drives, formats them with given file systems/options
and then runs a given subset of tests against each file system.
"""
import fsdev_disks
# Initialize the FS_LIST variable below to the desired file system list; each
# entry should contain the following (single) string:
# 'type / mkfs_options / mount_options / unique_test_tag'
# The results will be tagged with 'unique_test_tag' for each FS entry.
FS_LIST=[
'ext2 / -q / / ext2',
'ext4 / -q -j -O extents / extents / ext4_extents',
'xfs / -f -l size=128m / logbufs=7 / xfs_log7'
]
# This file contains the scheduler tunable values we should use
_TUNEVAL_FILE="kernel_io_tunable_values"
# The following file describes the scheduler tunable parameter paths
_TUNEDSC_FILE="kernel_io_tunable_defs"
# Set this based on whether the test needs to use all the drives or just one
using_one_disk = True
# Create an instance of the 'fsdev disks' utility class
fd = fsdev_disks.fsdev_disks(job)
# Load the I/O scheduler / tunable descriptions
fd.config_sched_tunables(os.path.join(job.configdir, _TUNEDSC_FILE))
# Find all the data drives available on the box we're running on
disks = fsdev_disks.get_disk_list()
if len(disks) <= 0:
raise JobError("No disks found to run test against")
# Load the I/O scheduler / tunable descriptions
fd.load_sched_tunable_values(os.path.join(job.configdir, _TUNEVAL_FILE))
# Set the scheduler and its tunables for all the disks we'll use
fd.set_sched_tunables(disks)
# Walk the list of file systems (and parameters) we are supposed to test
for fstline in FS_LIST:
(dir,tag,xxx) = fsdev_disks.prepare_disks(job,
fstline,
disk1_only = using_one_disk,
disk_list = disks)
# We're ready to invoke benchmarks for this file system
job.run_test('iozone',
dir=disks[0]['mountpt'],
args='-l8 -u8 -M -s 8m -r16k +p80 -I -T -i0 -i8',
tag='small.'+tag)
utils.drop_caches()
job.run_test('iozone',
dir=disks[0]['mountpt'],
args='-l8 -u8 -M -s 8g -r16k +p80 -I -T -i0 -i8',
tag='large.'+tag)
utils.drop_caches()
# Clean up after the test
if using_one_disk:
fsdev_disks.wipe_disks(job, disk_list[0:1])
else:
fsdev_disks.wipe_disks(job, disk_list)