Whamcloud - gitweb
b=18921
authorgrev <grev>
Fri, 27 Mar 2009 18:41:42 +0000 (18:41 +0000)
committergrev <grev>
Fri, 27 Mar 2009 18:41:42 +0000 (18:41 +0000)
i=Robert.Read
acc-sm new TYPE2_TESTS testsuite

lustre/tests/Makefile.am
lustre/tests/acceptance-small.sh
lustre/tests/type2-tests.sh [new file with mode: 0644]

index 91ae9f7..67633bb 100644 (file)
@@ -18,7 +18,7 @@ noinst_SCRIPTS += mdsrate-stat-small.sh mdsrate-stat-large.sh replay-vbr.sh
 noinst_SCRIPTS += lockorder.sh socketclient socketserver runmultiop_bg_pause
 noinst_SCRIPTS += recovery-mds-scale.sh run_dd.sh run_tar.sh run_iozone.sh
 noinst_SCRIPTS += run_dbench.sh recovery-double-scale.sh
-noinst_SCRIPTS += recovery-random-scale.sh
+noinst_SCRIPTS += recovery-random-scale.sh type2-tests.sh
 nobase_noinst_SCRIPTS = cfg/local.sh
 nobase_noinst_SCRIPTS += acl/make-tree acl/run cfg/ncli.sh
 nobase_noinst_SCRIPTS += racer/dir_create.sh racer/file_create.sh racer/file_list.sh
index db542dc..6d11216 100755 (executable)
@@ -23,7 +23,7 @@ fi
 [ "$DEBUG_OFF" ] || DEBUG_OFF="eval lctl set_param debug=\"$DEBUG_LVL\""
 [ "$DEBUG_ON" ] || DEBUG_ON="eval lctl set_param debug=0x33f0484"
 
-export TESTSUITE_LIST="RUNTESTS SANITY DBENCH BONNIE IOZONE FSX SANITYN LFSCK LIBLUSTRE RACER REPLAY_SINGLE CONF_SANITY RECOVERY_SMALL REPLAY_OST_SINGLE REPLAY_DUAL REPLAY_VBR INSANITY SANITY_QUOTA PERFORMANCE_SANITY LARGE_SCALE RECOVERY_MDS_SCALE RECOVERY_DOUBLE_SCALE RECOVERY_RANDOM_SCALE"
+export TESTSUITE_LIST="RUNTESTS SANITY DBENCH BONNIE IOZONE FSX SANITYN LFSCK LIBLUSTRE RACER REPLAY_SINGLE CONF_SANITY RECOVERY_SMALL REPLAY_OST_SINGLE REPLAY_DUAL REPLAY_VBR INSANITY SANITY_QUOTA PERFORMANCE_SANITY LARGE_SCALE RECOVERY_MDS_SCALE RECOVERY_DOUBLE_SCALE RECOVERY_RANDOM_SCALE TYPE2_TESTS"
 
 if [ "$ACC_SM_ONLY" ]; then
     for O in $TESTSUITE_LIST; do
@@ -448,6 +448,13 @@ if [ "$RECOVERY_RANDOM_SCALE" != "no" ]; then
         RECOVERY_RANDOM_SCALE="done"
 fi
 
+which mpirun > /dev/null 2>&1 || TYPE2_TESTS="no"
+if [ "$TYPE2_TESTS" != "no" ]; then
+        title type2 tests
+        bash type2-tests.sh
+        TYPE2_TESTS="done"
+fi
+
 RC=$?
 title FINISHED
 echo "Finished at `date` in $((`date +%s` - $STARTTIME))s"
diff --git a/lustre/tests/type2-tests.sh b/lustre/tests/type2-tests.sh
new file mode 100644 (file)
index 0000000..10be707
--- /dev/null
@@ -0,0 +1,432 @@
+#!/bin/bash
+#
+#set -vx
+
+set -e
+
+LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+. $LUSTRE/tests/test-framework.sh
+init_test_env $@
+. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+
+#
+# compilbench
+#
+# Boulder cluster compilebench default location
+cbench_DIR=${cbench_DIR:-/testsuite/tests/$(arch)/compilebench}
+cbench_IDIRS=${cbench_IDIRS:-10}
+cbench_RUNS=${cbench_RUNS:-10} # FIXME: wiki page requirements is 30, do we really need 30 ?
+
+if [ "$SLOW" = "no" ]; then
+    cbench_IDIRS=2
+    cbench_RUNS=2
+fi
+
+#
+# metabench
+#
+# Boulder cluster metabench default location
+METABENCH=${METABENCH:-/testsuite/tests/$(arch)/METABENCH/src/metabench}
+mbench_NFILES=${mbench_NFILES:-30400}
+[ "$SLOW" = "no" ] && mbench_NFILES=10000
+MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
+# threads per client
+mbench_THREADS=${mbench_THREADS:-4}
+
+#
+# simul
+#
+# Boulder cluster default location
+SIMUL=${SIMUL:-/testsuite/tests/$(arch)/simul/simul}
+# threads per client
+simul_THREADS=${simul_THREADS:-2}
+simul_REP=${simul_REP:-20}
+[ "$SLOW" = "no" ] && simul_REP=2
+
+#
+# connectathon
+#
+# Boulder cluster default location
+cnt_DIR=${cnt_DIR:-/testsuite/tests/$(arch)/connectathon}
+cnt_NRUN=${cnt_NRUN:-10}
+[ "$SLOW" = "no" ] && cnt_NRUN=2
+
+#
+# cascading rw
+#
+# Boulder cluster default location
+CASC_RW=${CASC_RW:-/testsuite/tests/$(arch)/parallel/cascading_rw}
+# threads per client
+casc_THREADS=${casc_THREADS:-2}
+casc_REP=${casc_REP:-300}
+[ "$SLOW" = "no" ] && casc_REP=10
+
+#
+# IOR
+#
+# Boulder cluster default location
+IOR=${IOR:-/testsuite/tests/$(arch)/IOR/src/C/IOR}
+# threads per client
+ior_THREADS=${ior_THREADS:-2}
+ior_blockSize=${ior_blockSize:-6}      # Gb
+ior_DURATION=${ior_DURATION:-30}       # minutes
+[ "$SLOW" = "no" ] && ior_DURATION=5
+
+#
+# write_append_truncate
+#
+# threads per client
+write_THREADS=${write_THREADS:-8}
+write_REP=${write_REP:-10000}
+[ "$SLOW" = "no" ] && write_REP=100
+
+#
+# write_disjoint
+#
+# Boulder cluster default location
+WRITE_DISJOINT=${WRITE_DISJOINT:-/testsuite/tests/x86_64/lustre/lustre/tests/write_disjoint}
+# threads per client
+wdisjoint_THREADS=${wdisjoint_THREADS:-4}
+wdisjoint_REP=${wdisjoint_REP:-10000}
+[ "$SLOW" = "no" ] && wdisjoint_REP=100
+
+build_test_filter
+check_and_setup_lustre
+
+print_opts () {
+    local var
+
+    echo OPTIONS:
+
+    for i in $@; do
+        var=$i
+        echo "${var}=${!var}"
+    done
+    [ -e $MACHINEFILE ] && cat $MACHINEFILE
+}
+
+# Takes:
+# 5 min * cbench_RUNS
+#        SLOW=no     10 mins
+#        SLOW=yes    50 mins
+# Space estimation:
+#        compile dir kernel-1 680MB
+#        required space       680MB * cbench_IDIRS = ~7 Gb
+
+test_compilebench() {
+    print_opts cbench_DIR cbench_IDIRS cbench_RUNS
+
+    [ -d $cbench_DIR ] || \
+        { skip "No compilebench found" && return; }
+
+    [ -e $cbench_DIR/compilebench ] || \
+        { skip "No compilebench build" && return; }
+
+    local space=$(df -P $DIR | tail -n 1 | awk '{ print $4 }')
+    if [ $space -le $((680 * 1024 * cbench_IDIRS)) ]; then
+        cbench_IDIRS=$(( space / 680 / 1024))
+        [ $cbench_IDIRS = 0 ] && \
+            skip "Need free space atleast 680 Mb, have $space" && return
+
+        log free space=$space, reducing initial dirs to $cbench_IDIRS
+    fi
+    # FIXME:
+    # t-f _base needs to be modifyed to set properly tdir
+    # for new "test_foo" functions names
+    # local testdir=$DIR/$tdir
+    local testdir=$DIR/d0.compilebench
+    mkdir -p $testdir
+
+    local savePWD=$PWD
+    cd $cbench_DIR 
+    local cmd="./compilebench -D $testdir -i $cbench_IDIRS -r $cbench_RUNS --makej"
+
+    log "$cmd"
+
+    local rc=0
+    eval $cmd
+    rc=$?
+        
+    cd $savePWD
+    [ $rc = 0 ] || error "compilebench failed: $rc"
+    rm -rf $testdir
+}
+run_test compilebench "compilebench"
+
+test_metabench() {
+    [ -e $METABENCH ] || \
+        { skip "metabench not found" && return; }
+
+    local clients=$CLIENTS
+    [ -z $clients ] && clients=$(hostname)
+
+    num_clients=$(get_node_count ${clients//,/ })
+
+    # FIXME
+    # Need space estimation here.
+
+    generate_machine_file $clients $MACHINEFILE || \
+        error "can not generate machinefile $MACHINEFILE"
+
+    print_opts METABENCH clients mbench_NFILES mbench_THREADS
+
+    local testdir=$DIR/d0.metabench
+    mkdir -p $testdir
+    # mpi_run uses mpiuser
+    chmod 0777 $testdir
+
+    # -C             Run the file creation tests.
+    # -S             Run the file stat tests.
+    # -c nfile       Number of files to be used in each test.
+    # -k             Cleanup.  Remove the test directories.
+    local cmd="$METABENCH -w $testdir -c $mbench_NFILES -C -S -k"
+    echo "+ $cmd"
+    mpi_run -np $((num_clients * $mbench_THREADS)) -machinefile ${MACHINEFILE} $cmd
+    local rc=$?
+    if [ $rc != 0 ] ; then
+        error "metabench failed! $rc"
+    fi
+    rm -rf $testdir
+}
+run_test metabench "metabench"
+
+test_simul() {
+    [ -e $SIMUL ] || \
+        { skip "simul not found" && return; }
+
+    local clients=$CLIENTS
+    [ -z $clients ] && clients=$(hostname)
+
+    local num_clients=$(get_node_count ${clients//,/ })
+
+    # FIXME
+    # Need space estimation here.
+
+    generate_machine_file $clients $MACHINEFILE || \
+        error "can not generate machinefile $MACHINEFILE"
+
+    print_opts SIMUL clients simul_REP simul_THREADS
+
+    local testdir=$DIR/d0.simul
+    mkdir -p $testdir
+    # mpi_run uses mpiuser
+    chmod 0777 $testdir
+
+    # -n # : repeat each test # times
+    # -N # : repeat the entire set of tests # times
+
+    local cmd="$SIMUL -d $testdir -n $simul_REP -N $simul_REP"
+
+    echo "+ $cmd"
+    mpi_run -np $((num_clients * $simul_THREADS)) -machinefile ${MACHINEFILE} $cmd
+
+    local rc=$?
+    if [ $rc != 0 ] ; then
+        error "simul failed! $rc"
+    fi
+    rm -rf $testdir
+}
+run_test simul "simul"
+
+test_connectathon() {
+    print_opts cnt_DIR cnt_NRUN
+
+    [ -d $cnt_DIR ] || \
+        { skip "No connectathon dir found" && return; }
+
+    [ -e $cnt_DIR/runtests ] || \
+        { skip "No connectathon runtests found" && return; }
+
+    local testdir=$DIR/d0.connectathon
+    mkdir -p $testdir
+
+    local savePWD=$PWD
+    cd $cnt_DIR
+
+    # -f      a quick functionality test
+    # -a      run basic, general, special, and lock tests
+    # -N numpasses - will be passed to the runtests script.  This argument
+    #         is optional.  It specifies the number of times to run
+    #         through the tests.
+
+    local cmd="./runtests -N $cnt_NRUN -a -f $testdir"
+
+    log "$cmd"
+
+    local rc=0
+    eval $cmd
+    rc=$?
+
+    cd $savePWD
+    [ $rc = 0 ] || error "connectathon failed: $rc"
+    rm -rf $testdir
+}
+run_test connectathon "connectathon"
+
+test_ior() {
+    [ -e $IOR ] || \
+        { skip "IOR not found" && return; }
+
+    local clients=$CLIENTS
+    [ -z $clients ] && clients=$(hostname)
+
+    local num_clients=$(get_node_count ${clients//,/ })
+
+    local space=$(df -P $DIR | tail -n 1 | awk '{ print $4 }')
+    echo "+ $ior_blockSize * 1024 * 1024 * $num_clients * $ior_THREADS "
+    if [ $((space / 2)) -le $(( ior_blockSize * 1024 * 1024 * num_clients * ior_THREADS)) ]; then
+        echo "+ $space * 9/10 / 1024 / 1024 / $num_clients / $ior_THREADS"
+        ior_blockSize=$(( space /2 /1024 /1024 / num_clients / ior_THREADS ))
+        [ $ior_blockSize = 0 ] && \
+            skip "Need free space more than ($num_clients * $ior_THREADS )Gb: $((num_clients*ior_THREADS *1024 *1024*2)), have $space" && return
+
+        echo "free space=$space, Need: $num_clients x $ior_THREADS x $ior_blockSize Gb (blockSize reduced to $ior_blockSize Gb)"
+    fi
+    generate_machine_file $clients $MACHINEFILE || \
+        error "can not generate machinefile $MACHINEFILE"
+
+    print_opts IOR ior_THREADS ior_DURATION MACHINEFILE
+
+    local testdir=$DIR/d0.ior
+    mkdir -p $testdir
+    # mpi_run uses mpiuser
+    chmod 0777 $testdir
+
+    # 
+    # -b N  blockSize -- contiguous bytes to write per task  (e.g.: 8, 4k, 2m, 1g)"
+    # -o S  testFileName
+    # -t N  transferSize -- size of transfer in bytes (e.g.: 8, 4k, 2m, 1g)"
+    # -w    writeFile -- write file"
+    # -r    readFile -- read existing file"
+    # -T    maxTimeDuration -- max time in minutes to run tests"
+    # -k    keepFile -- keep testFile(s) on program exit
+    local cmd="$IOR -a POSIX -b ${ior_blockSize}g -o $testdir/iorData -t 2m -v -w -r -T $ior_DURATION -k"
+
+    echo "+ $cmd"
+    mpi_run -np $((num_clients * $ior_THREADS)) -machinefile ${MACHINEFILE} $cmd
+
+    local rc=$?
+    if [ $rc != 0 ] ; then
+        error "ior failed! $rc"
+    fi
+    rm -rf $testdir
+}
+run_test ior "ior"
+test_cascading_rw() {
+    [ -e $CASC_RW ] || \
+        { skip "cascading_rw not found" && return; }
+
+    local clients=$CLIENTS
+    [ -z $clients ] && clients=$(hostname)
+
+    num_clients=$(get_node_count ${clients//,/ })
+
+    # FIXME
+    # Need space estimation here.
+
+    generate_machine_file $clients $MACHINEFILE || \
+        error "can not generate machinefile $MACHINEFILE"
+
+    print_opts CASC_RW clients casc_THREADS casc_REP MACHINEFILE
+
+    local testdir=$DIR/d0.cascading_rw
+    mkdir -p $testdir
+    # mpi_run uses mpiuser
+    chmod 0777 $testdir
+
+    # -g: debug mode 
+    # -n: repeat test # times
+
+    local cmd="$CASC_RW -g -d $testdir -n $casc_REP"
+
+    echo "+ $cmd"
+    mpi_run -np $((num_clients * $casc_THREADS)) -machinefile ${MACHINEFILE} $cmd
+
+    local rc=$?
+    if [ $rc != 0 ] ; then
+        error "cascading_rw failed! $rc"
+    fi
+    rm -rf $testdir
+}
+run_test cascading_rw "cascading_rw"
+
+test_write_append_truncate() {
+    # location is lustre/tests dir 
+    if ! which write_append_truncate > /dev/null 2>&1 ; then
+        skip "write_append_truncate not found"
+        return
+    fi
+
+    local clients=$CLIENTS
+    [ -z $clients ] && clients=$(hostname)
+
+    local num_clients=$(get_node_count ${clients//,/ })
+
+    # FIXME
+    # Need space estimation here.
+
+    generate_machine_file $clients $MACHINEFILE || \
+        error "can not generate machinefile $MACHINEFILE"
+
+    local testdir=$DIR/d0.write_append_truncate
+    local file=$testdir/f0.wat
+
+    print_opts clients write_REP write_THREADS MACHINEFILE
+
+    mkdir -p $testdir
+    # mpi_run uses mpiuser
+    chmod 0777 $testdir
+
+    local cmd="write_append_truncate $file $write_REP"
+
+    echo "+ $cmd"
+    mpi_run -np $((num_clients * $write_THREADS)) -machinefile ${MACHINEFILE} $cmd
+
+    local rc=$?
+    if [ $rc != 0 ] ; then
+        error "write_append_truncate failed! $rc"
+        return $rc
+    fi
+    rm -rf $testdir
+}
+run_test write_append_truncate "write_append_truncate"
+
+test_write_disjoint() {
+    [ -e $WRITE_DISJOINT ] || \
+        { skip "write_disjoint not found" && return; }
+
+    local clients=$CLIENTS
+    [ -z $clients ] && clients=$(hostname)
+
+    local num_clients=$(get_node_count ${clients//,/ })
+
+    # FIXME
+    # Need space estimation here.
+
+    generate_machine_file $clients $MACHINEFILE || \
+        error "can not generate machinefile $MACHINEFILE"
+
+    print_opts WRITE_DISJOINT clients wdisjoint_THREADS wdisjoint_REP MACHINEFILE
+    local testdir=$DIR/d0.write_disjoint
+    mkdir -p $testdir
+    # mpi_run uses mpiuser
+    chmod 0777 $testdir
+
+    local cmd="$WRITE_DISJOINT -f $testdir/file -n $wdisjoint_REP"
+
+    echo "+ $cmd"
+    mpi_run -np $((num_clients * $wdisjoint_THREADS)) -machinefile ${MACHINEFILE} $cmd
+
+    local rc=$?
+    if [ $rc != 0 ] ; then
+        error "write_disjoint failed! $rc"
+    fi
+    rm -rf $testdir
+}
+run_test write_disjoint "write_disjoint"
+
+equals_msg `basename $0`: test complete, cleaning up
+check_and_cleanup_lustre
+[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG || true