From 23c755a06f8128286520243fed4c3b60c3e38983 Mon Sep 17 00:00:00 2001 From: pengzhao Date: Sun, 3 Aug 2003 16:52:29 +0000 Subject: [PATCH] Improved replay-single.sh and replay-dual.sh --- lustre/tests/replay-dual.sh | 133 +++++++++++++++++++++++++++++++++++------- lustre/tests/replay-single.sh | 56 ++++++++++++++---- 2 files changed, 158 insertions(+), 31 deletions(-) diff --git a/lustre/tests/replay-dual.sh b/lustre/tests/replay-dual.sh index d6d4c5c..d9a5ce6 100755 --- a/lustre/tests/replay-dual.sh +++ b/lustre/tests/replay-dual.sh @@ -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 diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index 6939a03..7b20f87 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -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" -- 1.8.3.1