Menu

Tree [34f4ac] master /
 History

HTTPS access


File Date Author Commit
 tests 2010-03-09 Lukas Czerner Lukas Czerner [972055] Mongo test repaired.
 tools 2010-09-30 Lukas Czerner Lukas Czerner [fb95b1] Update Makefile to remove xfstests dir on clean
 .gitignore 2010-02-01 Lukas Czerner Lukas Czerner [a8924a] Xfstests removed and will be downloaded in make...
 LICENCE 2010-09-30 Lukas Czerner Lukas Czerner [a89ffa] Add LICENCE file. Add licence notice in test.sh
 LINKS 2009-09-24 Jaroslav Barton Jaroslav Barton [27003e] URLs to bugzilla/gitweb
 Makefile 2009-09-21 Jaroslav Barton Jaroslav Barton [792ece] Makefile will create results dir on configure p...
 README 2010-09-30 Lukas Czerner Lukas Czerner [298755] Update README.
 test.cmds 2010-01-22 Lukas Czerner Lukas Czerner [7a7f36] RUN_FSKC configuration option added, README upd...
 test.sh 2010-10-07 Lukas Czerner Lukas Czerner [34f4ac] Change regular expression to get value from config

Read Me

(C)2009 Red Hat Inc., Jaroslav Barton jbarton@redhat.com

Gensuit is a generic test suit which includes both well known and less
known benchmark and test tools. It combines those tools into one package
and allows you to easily define test conditions and test sets you want
to run in one configuration file. Some of the tests (like xfstests) are
pulled from git repository at make time to provide newest versions of the
tool, but some of the test are directly included.

Requirements:
 - gcc and g++
 - make
 - perl
 - slqite3
 - xfsprogs
 - xfsprogs-devel
 - libattr
 - libacl
 - fsck and mkfs programs for tested filesystems
 - libaio-devel for aio-stress

Installation:
 - run make
 - make will: . configure and compile all binary tests
              . download kernel source tarbal for yoshihiro test
              . on errors please see make.out and make.err files
 - there is not need for instalation, test suite could work from source directory

Supported architectures:
 - x86 and x86-64 (tested)
 - iozone compile script can be easily improved (tools/iozone/compile.sh)
 - other architectures are untested
   . test.sh will need add support for non x86 architectures (/proc/cpuinfo
     doesn't have same format for all supported architectures)

Included tests: ! see <./test.sh -h> for list of all tests !
 - Stress tests:
   - stress tests are run on all devices at the same time concurrently
 - Regression tests:
   - regression tests are run step-by-step with mkfs command between tests

Adding new tests:
 - add shell script with test that runs test to tests/(stress|regression)/ directory
 - this script have test handling function and its registration
 - for example:
       __do_sometest_test() {
      }
      REGRESSION_TESTS_AVAILABLE[${#REGRESSION_TESTS_AVAILABLE[*]}]="__do_sametest_test"
    for regression test registration or
      STRESS_TESTS_AVAILABLE[${#STRESS_TESTS_AVAILABLE[*]}]="__do_sametest_test"
    for stress test registration

Running test suite:
  usage: ./test.sh [-r|-s] [-v] [-h] [[-m mount_point] [-d device] [-o mount_options] [-t filesystem] [-f mkfs_options] [-x tests] [-n ...]] [-l length] [-c num] [-y]
        -r      regression test mode (default)
        -s      stress test mode
        -m mount_point
                mount point used for tests
        -d device
                device for tests
        -o mount_options
                mount options used for tests
        -t filesystem
                filesystem used for tests
        -f mkfs_options
                mkfs.filesystem options
        -l length
                test run time in minutes
        -c num
                run subtests n-times
		-C check filesystem after tests are done
        -x tests
                run specified tests
        -n parameters for next tested device
        -u file
                file with test specification
        -v verbose
        -y answer yes to all questions
        -h this help
  Available regression tests:
        0 - bonnie
        1 - dbench
        2 - iozone
        3 - mongo
        4 - sqlite
        5 - xfstests
  Available stress tests:
        0 - fsx
        1 - wilson
        2 - yoshihiro

Running verbose regression mode on device /dev/mapper/vg_loki-test2, mount point
/mnt/test2/, only tests 1, 3 and 5, ext4 filesystem, noatime,nodiratime mount options:
  ./test.sh -v -r -d /dev/mapper/vg_loki-test2 -m /mnt/test2 -o noatime,nodiratime -x "1 3 5" -t ext4

Running stress mode on devices /dev/mapper/vg_loki-test and /dev/mapper/vg_loki-test2
with mount points /mnt/test and /mnt/test2, mount options for both devices
noatime,nodiratime, filesystem reiserfs and ext4, test length 10 minutes
  ./test.sh -s -d /dev/mapper/vg_loki-test -m /mnt/test -t reiserfs -o noatime,nodiratime -n -d /dev/mapper/vg_loki-test2 -m /mnt/test2 -t ext4 -l 10

Test parameters are automatically determined from ram amount installed and number
of cpu cores. Number of cpucores and ram amount can be overwritten by:
  export RAM=xxx where xxx is number in megabytes
  export CPUCORES=yyy where yyy is number of cpu cores

Test specification file format:
  Test type:
    REGRESSION
    STRESS
  Test length for some subtests
    LENGTH=
  Number of retries for some subtests
    RETRIES=
  Test device, mountpoint, filesystem
    DEV=
    DIR=
    FSTYPE=
  Mount options
    MOOPS=-o noatime,nodiratime
  Mkfs options
    MKOPS=
  Selected tests
    TESTS=0
  Start new test specification
    NEXT
  Answer yes to all questions
    ALLYES
  Check filesystems after tests
    RUNFSCK

Example test specification file: (test.cmds)

# Configuration file for the gensuit 
# use with the -u option of the gensuit

# Define type of test - either 
# STRESS or REGRESSION
STRESS

# Length of the test in minutes
LENGTH=2

# Path to the device which souhld
# be used
DEV=/dev/sda5

# Mountpoint to the device
DIR=/mnt/TEST

# Type of the filesystem
# Supported:
#	ext[234]
#	reiserfs
#	gfs2
#	jfs
#	xfs
FSTYPE=gfs2

# Options for the mount command
MOOPS=-o noatime,nodiratime

# Options for the mkfs command
MKOPS=-p lock_nolock

# Which test do you want to perform ?
# You can specify multiple tests like
#	TESTS=0 2 3
# Run ./test.sh -h to see what tests 
# are available
TESTS=1

# Parameters for the next tested device
#NEXT
#DEV=/dev/sda5
#DIR=/mnt/TEST2
#FSTYPE=ext4

# Answer Yes to all question
ALLYES

# Check filesystems after tests
RUNFSCK