Whamcloud - gitweb
b=18804
authorgrev <grev>
Tue, 17 Mar 2009 16:00:06 +0000 (16:00 +0000)
committergrev <grev>
Tue, 17 Mar 2009 16:00:06 +0000 (16:00 +0000)
o=Adilger
i=grev
t-f and tests remote_* nodsh cleanup

lustre/tests/lockorder.sh
lustre/tests/runtests
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index 4f1ca4b..d4656d3 100644 (file)
@@ -7,9 +7,9 @@ STATMANY=${STATMANY:-statmany}
 UNLINKMANY=${UNLINKMANY:-unlinkmany}
 LCTL=${LCTL:-lctl}
 
-MOUNT1=${MOUNT1:-/mnt/lustre1}
+MOUNT=${MOUNT:-/mnt/lustre}
 MOUNT2=${MOUNT2:-/mnt/lustre2}
-DIR=${DIR:-$MOUNT1}
+DIR=${DIR:-$MOUNT}
 DIR2=${DIR2:-$MOUNT2}
 COUNT=${COUNT:-100}
 
index 8080e31..122a006 100755 (executable)
@@ -18,12 +18,6 @@ SETUP=${SETUP:-setupall}
 FORMAT=${FORMAT:-formatall}
 CLEANUP=${CLEANUP:-stopall}
 
-fail() { 
-       echo "ERROR: $1" 1>&2
-       [ $2 ] && RC=$2 || RC=1
-       exit $RC
-}
-
 ERROR=
 RUNTESTS_SRC=${RUNTESTS_SRC:-"/etc /bin"}
 [ "$COUNT" ] || COUNT=1000
@@ -59,7 +53,7 @@ USED=`expr $USED + 16`        # Some space for the status file
 # let's start slowly here...
 START=`date +%s`
 log "touching $MOUNT at `date`"
-touch $MOUNT || fail "can't touch $MOUNT" 2
+touch $MOUNT || error "can't touch $MOUNT" 2
 HOSTS=$MOUNT/hosts.$$
 TRUNCSIZE=123
 
@@ -68,18 +62,18 @@ if [ $COUNT -gt 10 -o $COUNT -eq 0 ]; then
        log "create an empty file $HOSTS"
        mcreate $HOSTS
        log "copying /etc/hosts to $HOSTS"
-       cp /etc/hosts $HOSTS || fail "can't cp /etc/hosts to $HOSTS" 3
+       cp /etc/hosts $HOSTS || error "can't cp /etc/hosts to $HOSTS" 3
        log "comparing /etc/hosts and $HOSTS"
-       diff -u /etc/hosts $HOSTS || fail "$HOSTS different" 4
+       diff -u /etc/hosts $HOSTS || error "$HOSTS different" 4
        log "renaming $HOSTS to $HOSTS.ren"
-       mv $HOSTS $HOSTS.ren || fail "can't rename $HOSTS to $HOSTS.ren" 5
+       mv $HOSTS $HOSTS.ren || error "can't rename $HOSTS to $HOSTS.ren" 5
        log "copying /etc/hosts to $HOSTS again"
-       cp /etc/hosts $HOSTS || fail "can't cp /etc/hosts to $HOSTS again" 6
+       cp /etc/hosts $HOSTS || error "can't cp /etc/hosts to $HOSTS again" 6
        log "truncating $HOSTS"
-       > $HOSTS || fail "can't truncate $HOSTS" 8
+       > $HOSTS || error "can't truncate $HOSTS" 8
        log "removing $HOSTS"
-       rm $HOSTS || fail "can't remove $HOSTS" 9
-       cp /etc/hosts $HOSTS.2 || fail "can't cp /etc/hosts to $HOSTS.2" 7
+       rm $HOSTS || error "can't remove $HOSTS" 9
+       cp /etc/hosts $HOSTS.2 || error "can't cp /etc/hosts to $HOSTS.2" 7
        log "truncating $HOSTS.2 to $TRUNCSIZE bytes"
        truncate $HOSTS.2 $TRUNCSIZE
 fi
@@ -87,15 +81,15 @@ fi
 DST=$MOUNT/runtest.$$
 # let's start slowly here...
 log "creating $DST"
-mkdir $DST || fail "can't mkdir $DST" 10
+mkdir $DST || error "can't mkdir $DST" 10
 
 # ok, that hopefully worked, so let's do a little more, with files that
 # haven't changed in the last day (hopefully they don't change during test)
 FILES=`find $RUNTESTS_SRC -type f -mtime +1 | head -n $COUNT`
-[ -z "$FILES" ] && fail "No unchanged files - is $RUNTESTS_SRC a new dir?"
+[ -z "$FILES" ] && error "No unchanged files - is $RUNTESTS_SRC a new dir?"
 
 log "copying files from $RUNTESTS_SRC to $DST$RUNTESTS_SRC at `date`"
-tar cf - $FILES | tar xvf - -C $DST > /dev/null || fail "copying $RUNTESTS_SRC" 11
+tar cf - $FILES | tar xvf - -C $DST > /dev/null || error "copying $RUNTESTS_SRC" 11
 
 log "comparing newly copied files at `date`"
 for f in $FILES; do
@@ -103,7 +97,7 @@ for f in $FILES; do
        diff -q $f $DST/$f || ERROR=11
 done
 
-[ "$ERROR" ] && fail "old and new files are different" $ERROR
+[ "$ERROR" ] && error "old and new files are different" $ERROR
 log "finished at `date` ($(($(date +%s) - START)))"
 
 $CLEANUP || exit 19
@@ -115,32 +109,32 @@ for f in $FILES; do
        diff -q $f $DST/$f || ERROR=22
 done
 
-[ "$ERROR" ] && fail "old and new files are different on second diff" $ERROR
+[ "$ERROR" ] && error "old and new files are different on second diff" $ERROR
 
 $CLEANUP || exit 19
 $SETUP || exit 20
 
 log "removing $DST"
-rm -r $V $DST || fail "can't remove $DST" 37
+rm -r $V $DST || error "can't remove $DST" 37
 
 if [ $COUNT -gt 10 -o $COUNT -eq 0 ]; then
        log "renaming $HOSTS.ren to $HOSTS"
-       mv $HOSTS.ren $HOSTS || fail "can't rename $HOSTS.ren to $HOSTS" 32
+       mv $HOSTS.ren $HOSTS || error "can't rename $HOSTS.ren to $HOSTS" 32
        log "truncating $HOSTS"
-       > $HOSTS || fail "can't truncate $HOSTS" 34
+       > $HOSTS || error "can't truncate $HOSTS" 34
        log "removing $HOSTS"
-       rm $HOSTS || fail "can't remove $HOSTS again" 36
+       rm $HOSTS || error "can't remove $HOSTS again" 36
        log "verifying $HOSTS.2 is $TRUNCSIZE bytes"
        checkstat -s $TRUNCSIZE $HOSTS.2 || \
-               fail "$HOSTS.2 isn't $TRUNCSIZE bytes" 37
-       rm $HOSTS.2 || fail "can't remove $HOSTS.2" 38
+               error "$HOSTS.2 isn't $TRUNCSIZE bytes" 37
+       rm $HOSTS.2 || error "can't remove $HOSTS.2" 38
 fi
 
 # mkdirmany test (bug 589)
 log "running $MKDIRMANY $MOUNT/base$$ 100"
-$MKDIRMANY $MOUNT/base$$ 100 || fail "mkdirmany failed"
+$MKDIRMANY $MOUNT/base$$ 100 || error "mkdirmany failed"
 log "removing mkdirmany directories"
-rmdir $MOUNT/base$$* || fail "mkdirmany cleanup failed"
+rmdir $MOUNT/base$$* || error "mkdirmany cleanup failed"
 
 log "done"
 
index 0487aab..64aae1a 100644 (file)
@@ -831,7 +831,7 @@ test_27e() {
        $SETSTRIPE $DIR/d27/f12 -c 2 && error "lstripe succeeded twice"
        $CHECKSTAT -t file $DIR/d27/f12 || error "checkstat failed"
 }
-run_test 27e "lstripe existing file (should return error) ======"
+run_test 27e "setstripe existing file (should return error) ======"
 
 test_27f() {
        mkdir -p $DIR/d27
@@ -839,7 +839,7 @@ test_27f() {
        dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4 || error "dd failed"
        $GETSTRIPE $DIR/d27/fbad || error "lfs getstripe failed"
 }
-run_test 27f "lstripe with bad stripe size (should return error)"
+run_test 27f "setstripe with bad stripe size (should return error)"
 
 test_27g() {
        mkdir -p $DIR/d27
@@ -858,7 +858,7 @@ test_27j() {
        mkdir -p $DIR/d27
        $SETSTRIPE $DIR/d27/f27j -i $OSTCOUNT && error "lstripe failed"||true
 }
-run_test 27j "lstripe with bad stripe offset (should return error)"
+run_test 27j "setstripe with bad stripe offset (should return error)"
 
 test_27k() { # bug 2844
        mkdir -p $DIR/d27
@@ -3934,7 +3934,7 @@ test_102b() {
        echo "get/set/list trusted.lov xattr ..."
        [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
        local testfile=$DIR/$tfile
-       $SETSTRIPE $testfile -s 65536 -i 1 -c 2
+       $SETSTRIPE -s 65536 -i 1 -c 2 $testfile || error "setstripe failed"
        getfattr -d -m "^trusted" $testfile 2> /dev/null | \
        grep "trusted.lov" || error "can't get trusted.lov from $testfile"
 
@@ -3960,7 +3960,7 @@ test_102c() {
        mkdir -p $DIR/$tdir
        chown $RUNAS_ID $DIR/$tdir
        local testfile=$DIR/$tdir/$tfile
-       $RUNAS $SETSTRIPE $testfile -s 65536 -i 1 -c 2
+       $RUNAS $SETSTRIPE -s 65536 -i 1 -c 2 $testfile||error "setstripe failed"
        $RUNAS getfattr -d -m "^lustre" $testfile 2> /dev/null | \
        grep "lustre.lov" || error "can't get lustre.lov from $testfile"
 
@@ -4309,7 +4309,7 @@ test_116() {
        declare -i FILL
        FILL=$(($MINV / 4))
        echo "Filling 25% remaining space in OST${MINI} with ${FILL}Kb"
-       $SETSTRIPE $DIR/$tdir/OST${MINI} -i $MINI -c 1
+       $SETSTRIPE -i $MINI -c 1 $DIR/$tdir/OST${MINI}||error "setstripe failed"
        i=1
        while [ $FILL -gt 0 ]; do
            dd if=/dev/zero of=$DIR/$tdir/OST${MINI}/$tfile-$i bs=2M count=1 2>/dev/null
@@ -4755,7 +4755,7 @@ test_119b() # bug 11737
 {
         [ "$OSTCOUNT" -lt "2" ] && skip "skipping 2-stripe test" && return
 
-        $SETSTRIPE $DIR/$tfile -c 2
+        $SETSTRIPE -c 2 $DIR/$tfile || error "setstripe failed"
         dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 seek=1 || error "dd failed"
         sync
         multiop $DIR/$tfile oO_RDONLY:O_DIRECT:r$((2048 * 1024)) || \
@@ -5270,7 +5270,7 @@ test_126() { # bug 12829/13455
 run_test 126 "check that the fsgid provided by the client is taken into account"
 
 test_127() { # bug 15521
-        $SETSTRIPE -i 0 -c 1 $DIR/$tfile
+        $SETSTRIPE -i 0 -c 1 $DIR/$tfile || error "setstripe failed"
         $LCTL set_param osc.*.stats=0
         FSIZE=$((2048 * 1024))
         dd if=/dev/zero of=$DIR/$tfile bs=$FSIZE count=1
@@ -5768,6 +5768,23 @@ test_153() {
 }
 run_test 153 "test if fdatasync does not crash ======================="
 
+test_154() {
+       # do directio so as not to populate the page cache
+       log "creating a 10 Mb file"
+       multiop $DIR/$tfile oO_CREAT:O_DIRECT:O_RDWR:w$((10*1048576))c || error "multiop failed while creating a file"
+       log "starting reads"
+       dd if=$DIR/$tfile of=/dev/null bs=4096 &
+       log "truncating the file"
+       multiop $DIR/$tfile oO_TRUNC:c || error "multiop failed while truncating the file"
+       log "killing dd"
+       kill %+ || true # reads might have finished
+       echo "wait until dd is finished"
+       wait
+       log "removing the temporary file"
+       rm -rf $DIR/$tfile || error "tmp file removal failed"
+}
+run_test 154 "parallel read and truncate should not deadlock ==="
+
 test_170() {
         $LCTL clear    # bug 18514
         $LCTL debug_daemon start $TMP/${tfile}_log_good
@@ -5830,11 +5847,12 @@ POOL_ROOT=${POOL_ROOT:-$DIR/d200.pools}
 POOL_DIR=$POOL_ROOT/dir_tst
 POOL_FILE=$POOL_ROOT/file_tst
 
-skip_pools()
+test_pools()
 {
        [ -z "$($LCTL get_param -n mdc.*.connect_flags | grep pools)" ] &&
                skip "missing pools support on server" && return 1
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return 1
+       [ -z "$mdtlov" ] && mdtlov=$(get_mdtlov_proc_path $FSNAME)
        return 0
 }
 
@@ -5856,10 +5874,10 @@ check_file_in_pool()
        return 0
 }
 
-mdtlov=$(get_mdtlov_proc_path $FSNAME)
+export mdtlov=
 
 test_200a() {
-        skip_pools || return
+        test_pools || return 0
         do_facet mgs $LCTL pool_new $FSNAME.$POOL
         # get param should return err until pool is created
         wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null || echo foo" "" || error "Pool creation of $POOL failed"
@@ -5867,7 +5885,7 @@ test_200a() {
 run_test 200a "Create new pool =========================================="
 
 test_200b() {
-        skip_pools || return
+        test_pools || return 0
         TGT=$(for i in `seq $TGTPOOL_FIRST $TGTPOOL_STEP $TGTPOOL_MAX`; do printf "$FSNAME-OST%04x_UUID " $i; done)
         do_facet mgs $LCTL pool_add $FSNAME.$POOL \
                 $FSNAME-OST[$TGTPOOL_FIRST-$TGTPOOL_MAX/$TGTPOOL_STEP]
@@ -5876,7 +5894,7 @@ test_200b() {
 run_test 200b "Add targets to a pool ===================================="
 
 test_200c() {
-        skip_pools || return
+        test_pools || return 0
         mkdir -p $POOL_DIR
         $SETSTRIPE -c 2 -p $POOL $POOL_DIR
         [ $? = 0 ] || error "Cannot set pool $POOL to $POOL_DIR"
@@ -5884,14 +5902,14 @@ test_200c() {
 run_test 200c "Set pool on a directory ================================="
 
 test_200d() {
-        skip_pools || return
+        test_pools || return 0
        res=$($GETSTRIPE $POOL_DIR | grep pool: | cut -f8 -d " ")
        [ "$res" = $POOL ] || error "Pool on $POOL_DIR is not $POOL"
 }
 run_test 200d "Check pool on a directory ==============================="
 
 test_200e() {
-        skip_pools || return
+        test_pools || return 0
        failed=0
        for i in $(seq -w 1 $(($TGT_COUNT * 3))); do
                file=$POOL_DIR/file-$i
@@ -5906,7 +5924,7 @@ test_200e() {
 run_test 200e "Check files allocation from directory pool =============="
 
 test_200f() {
-        skip_pools || return
+        test_pools || return 0
        mkdir -p $POOL_FILE
        failed=0
        for i in $(seq -w 1 $(($TGT_COUNT * 3))); do
@@ -5922,7 +5940,7 @@ test_200f() {
 run_test 200f "Create files in a pool ==================================="
 
 test_200g() {
-        skip_pools || return
+        test_pools || return 0
         TGT=$($LCTL get_param -n lov.$FSNAME-*.pools.$POOL | head -1)
         do_facet mgs $LCTL pool_remove $FSNAME.$POOL $TGT
         wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL | grep $TGT" "" || error "$TGT not removed from $FSNAME.$POOL"
@@ -5930,7 +5948,7 @@ test_200g() {
 run_test 200g "Remove a target from a pool ============================="
 
 test_200h() {
-        skip_pools || return
+        test_pools || return 0
         for TGT in $($LCTL get_param -n lov.$FSNAME-*.pools.$POOL | sort -u)
         do
                 do_facet mgs $LCTL pool_remove $FSNAME.$POOL $TGT
@@ -5944,7 +5962,7 @@ test_200h() {
 run_test 200h "Remove all targets from a pool =========================="
 
 test_200i() {
-        skip_pools || return
+        test_pools || return 0
         do_facet mgs $LCTL pool_destroy $FSNAME.$POOL
         # get param should return err once pool is gone
         wait_update $HOSTNAME "lctl get_param -n lov.$FSNAME-*.pools.$POOL 2>/dev/null || echo foo" "foo" && return 0
@@ -5952,23 +5970,6 @@ test_200i() {
 }
 run_test 200i "Remove a pool ============================================"
 
-test_154() {
-       # do directio so as not to populate the page cache
-       log "creating a 10 Mb file"
-       multiop $DIR/$tfile oO_CREAT:O_DIRECT:O_RDWR:w$((10*1048576))c || error "multiop failed while creating a file"
-       log "starting reads"
-       dd if=$DIR/$tfile of=/dev/null bs=4096 &
-       log "truncating the file"
-       multiop $DIR/$tfile oO_TRUNC:c || error "multiop failed while truncating the file"
-       log "killing dd"
-       kill %+ || true # reads might have finished
-       echo "wait until dd is finished"
-       wait
-       log "removing the temporary file"
-       rm -rf $DIR/$tfile || error "tmp file removal failed"
-}
-run_test 154 "parallel read and truncate should not deadlock ======================="
-
 #
 # tests that do cleanup/setup should be run at the end
 #
index 12ff832..18f9b05 100644 (file)
@@ -1314,7 +1314,10 @@ init_facet_vars () {
 }
 
 init_facets_vars () {
-    init_facet_vars mds $MDSDEV $MDS_MOUNT_OPTS
+    remote_mds_nodsh || 
+        init_facet_vars mds $MDSDEV $MDS_MOUNT_OPTS
+
+    remote_ost_nodsh && return
 
     for num in `seq $OSTCOUNT`; do
         DEVNAME=`ostdevname $num`
@@ -1323,17 +1326,20 @@ init_facets_vars () {
 }
 
 init_param_vars () {
-    export MDSVER=$(do_facet mds "lctl get_param version" | cut -d. -f1,2)
-    export OSTVER=$(do_facet ost1 "lctl get_param version" | cut -d. -f1,2)
-    export CLIVER=$(lctl get_param version | cut -d. -f 1,2)
+    if ! remote_ost_nodsh && ! remote_mds_nodsh; then
+        export MDSVER=$(do_facet mds "lctl get_param version" | cut -d. -f1,2)
+        export OSTVER=$(do_facet ost1 "lctl get_param version" | cut -d. -f1,2)
+        export CLIVER=$(lctl get_param version | cut -d. -f 1,2)
+    fi
+
+    remote_mds_nodsh || 
+        TIMEOUT=$(do_facet mds "lctl get_param -n timeout")
 
-    TIMEOUT=$(do_facet mds "lctl get_param -n timeout")
     log "Using TIMEOUT=$TIMEOUT"
 
     if [ "$ENABLE_QUOTA" ]; then
         setup_quota $MOUNT  || return 2
     fi
-
 }
 
 check_config () {
@@ -1823,7 +1829,7 @@ log() {
     lsmod | grep lnet > /dev/null || load_modules
 
     local MSG="$*"
-    # Get rif of '
+    # Get rid of '
     MSG=${MSG//\'/\\\'}
     MSG=${MSG//\(/\\\(}
     MSG=${MSG//\)/\\\)}
@@ -1876,7 +1882,7 @@ run_one() {
     umask 0022
 
     local BEFORE=`date +%s`
-    log "== test $testnum: $message ============ `date +%H:%M:%S` ($BEFORE)"
+    log "== test $testnum: $message == `date +%H:%M:%S` ($BEFORE)"
     #check_mds
     export TESTNAME=test_$testnum
     TEST_FAILED=false