Whamcloud - gitweb
Improved replay-single.sh and replay-dual.sh
authorpengzhao <pengzhao>
Sun, 3 Aug 2003 16:52:29 +0000 (16:52 +0000)
committerpengzhao <pengzhao>
Sun, 3 Aug 2003 16:52:29 +0000 (16:52 +0000)
lustre/tests/replay-dual.sh
lustre/tests/replay-single.sh

index d6d4c5c..d9a5ce6 100755 (executable)
@@ -2,6 +2,11 @@
 
 set -e
 
+# attempt to print a useful error location, but the ERR trap isn't
+# exported to functions, and the $LINENO doesn't work in EXIT.
+
+trap 'echo ERROR $0:$FUNCNAME:$LINENO: rc: $?' ERR EXIT
+
 LUSTRE=${LUSTRE:-`dirname $0`/..}
 LTESTDIR=${LTESTDIR:-$LUSTRE/../ltest}
 PATH=$PATH:$LUSTRE/utils:$LUSTRE/tests
@@ -33,7 +38,7 @@ start() {
 stop() {
     facet=$1
     shift
-    lconf --node ${facet}_facet $@ -d replay-dual.xml
+    lconf --node ${facet}_facet $@ --cleanup replay-dual.xml
 }
 
 replay_barrier() {
@@ -44,8 +49,9 @@ replay_barrier() {
 }
 
 fail() {
-    stop mds
-    start mds
+    local facet=$1
+    stop $facet --force --failover --nomod
+    start $facet --nomod
     df $MOUNT1 | tail -1
     df $MOUNT2 | tail -1
 }
@@ -72,31 +78,118 @@ gen_config() {
     do_lmc --add mtpt --node client1_facet --path $MOUNT1 --mds mds1 --ost ost1
     do_lmc --add mtpt --node client1_facet --path $MOUNT2 --mds mds1 --ost ost1
 }
+error() {
+    echo '**** FAIL:' $@
+    exit 1
+}
+
+build_test_filter() {
+        for O in $ONLY; do
+            eval ONLY_${O}=true
+        done
+        for E in $EXCEPT $ALWAYS_EXCEPT; do
+            eval EXCEPT_${E}=true
+        done
+}
+
+_basetest() {
+    echo $*
+}
+
+basetest() {
+    IFS=abcdefghijklmnopqrstuvwxyz _basetest $1
+}
+
+run_test() {
+        base=`basetest $1`
+        if [ ! -z "$ONLY" ]; then
+                 testname=ONLY_$1
+                 if [ ${!testname}x != x ]; then
+                     run_one $1 "$2"
+                     return $?
+                 fi
+                 testname=ONLY_$base
+                 if [ ${!testname}x != x ]; then
+                     run_one $1 "$2"
+                     return $?
+                 fi
+                 echo -n "."
+                 return 0
+        fi
+        testname=EXCEPT_$1
+        if [ ${!testname}x != x ]; then
+                 echo "skipping excluded test $1"
+                 return 0
+        fi
+        testname=EXCEPT_$base
+        if [ ${!testname}x != x ]; then
+                 echo "skipping excluded test $1 (base $base)"
+                 return 0
+        fi
+        run_one $1 "$2"
+
+        return $?
+}
+
+EQUALS="======================================================================"
+
+run_one() {
+    testnum=$1
+    message=$2
+    
+    # Pretty tests run faster.
+    echo -n '=====' $testnum: $message
+       local suffixlen=`echo -n $2 | awk '{print 65 - length($0)}'`
+    printf ' %.*s\n' $suffixlen $EQUALS
+
+    test_${testnum} || error "test_$testnum failed with $?"
+}
+
+build_test_filter
 
 gen_config
-start mds
-start ost
+start mds --reformat
+start ost --reformat
 start client1
 start client2
 
-touch $MOUNT1/lustre-works
-replay_barrier mds
-touch $MOUNT2/lustre-does-not-work
+test_1() {
+    touch $MOUNT1/lustre-works
+    replay_barrier mds
+    touch $MOUNT2/lustre-does-not-work
 
-stop client2
-stop client1
-stop ost
-stop mds
+    fail mds
+    if [ -e $MOUNT1/lustre-does-not-work ]; then
+        echo "$MOUNT1/lustre-does-not-work exists"
+        exit 1
+    fi
+}
 
-start mds
-start ost
-start client1
-start client2
+run_test 1 "|X| simple create"
+
+
+test_2() {
+    replay_barrier mds
+    mkdir $MOUNT1/1
+
+    fail mds
+    ls $MOUNT2/1 
+}
+
+run_test 2 "|X| mkdir "
+
+
+test_3() {
+    replay_barrier mds
+    mkdir $MOUNT1/1
+    mkdir $MOUNT2/1/2
+
+    fail mds
+    ls $MOUNT2/1
+    ls $MOUNT1/1/2 
+}
 
-if [ -e $MOUNT1/lustre-does-not-work ]; then
-       echo "$MOUNT1/lustre-does-not-work exists"
-       exit 1
-fi
+run_test 3 "|X| mkdir 1, mkdir 1/2 "
 
 stop client2
 stop client1
index 6939a03..7b20f87 100755 (executable)
@@ -96,21 +96,21 @@ basetest() {
 }
 
 run_test() {
-         base=`basetest $1`
-         if [ ! -z $ONLY ]; then
+        base=`basetest $1`
+        if [ ! -z "$ONLY" ]; then
                  testname=ONLY_$1
                  if [ ${!testname}x != x ]; then
-                       run_one $1 "$2"
-                       return $?
+                     run_one $1 "$2"
+                     return $?
                  fi
                  testname=ONLY_$base
                  if [ ${!testname}x != x ]; then
-                         run_one $1 "$2"
-                         return $?
+                     run_one $1 "$2"
+                     return $?
                  fi
                  echo -n "."
                  return 0
-       fi
+        fi
         testname=EXCEPT_$1
         if [ ${!testname}x != x ]; then
                  echo "skipping excluded test $1"
@@ -122,7 +122,8 @@ run_test() {
                  return 0
         fi
         run_one $1 "$2"
-       return $?
+
+        return $?
 }
 
 EQUALS="======================================================================"
@@ -189,17 +190,50 @@ test_4() {
 run_test 4 "open |X| close"
 
 test_5() {
-    :
+    replay_barrier mds
+    mcreate $MOUNTPT/f5
+    local old_inum=`ls -i $MOUNTPT/f5 | awk '{print $1}'`
+    fail mds
+    local new_inum=`ls -i $MOUNTPT/f5 | awk '{print $1}'`
+
+    echo " old_inum == $old_inum, new_inum == $new_inum"
+    if [ $old_inum -eq $new_inum  ] ;
+    then
+        echo " old_inum and new_inum match"
+    else
+        echo "!!!! old_inum and new_inum NOT match"
+
+    fi
+    rm -f $MOUNTPT/f5
 }
 run_test 5 "|X| create (same inum/gen)"
 
 test_6() {
-    :
+    mcreate $MOUNTPT/f6
+    replay_barrier mds
+    mv $MOUNTPT/f6 $MOUNTPT/F6
+    rm -f $MOUNTPT/F6
+    fail mds
+    ls $MOUNTPT/f6 
+    ls $MOUNTPT/F6
+    rm -f  $MOUNTPT/f6
+    rm -f  $MOUNTPT/F6
+
 }
 run_test 6 "create |X| rename unlink"
 
 test_7() {
-    :
+    mcreate $MOUNTPT/f7
+    echo "old" > $MOUNTPT/f7
+    mv $MOUNTPT/f7 $MOUNTPT/F7
+    replay_barrier mds
+    mcreate $MOUNTPT/f7
+    echo "new" > $MOUNTPT/f7
+    cat $MOUNTPT/f7 | grep new 
+    cat $MOUNTPT/F7 | grep old
+    fail mds
+    cat $MOUNTPT/f7 | grep new
+    cat $MOUNTPT/F7 | grep old
 }
 run_test 7 "create open write rename |X| create-old-name read"