X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fruntests;h=64426d12948f492eb7c8dd9e7c2e4074dc4911ec;hp=42bc0870254d901b1d20ea9e7ae3deea7f22ae9f;hb=49c257b73af33971463eb59a46aa15f1d7a4ffb5;hpb=d2d56f38da01001c92a09afc6b52b5acbd9bc13c diff --git a/lustre/tests/runtests b/lustre/tests/runtests index 42bc087..64426d1 100755 --- a/lustre/tests/runtests +++ b/lustre/tests/runtests @@ -14,52 +14,15 @@ export NAME=${NAME:-local} init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} -SETUP=${SETUP:-setupall} -FORMAT=${FORMAT:-formatall} -CLEANUP=${CLEANUP:-stopall} - -fail() { - echo "ERROR: $1" 1>&2 - [ $2 ] && RC=$2 || RC=1 - exit $RC -} - -log() { - echo "$*" - lctl mark "$*" -} - - -ERROR= -SRC=/etc +RUNTESTS_SRC=${RUNTESTS_SRC:-"/etc /bin"} [ "$COUNT" ] || COUNT=1000 +[ "$SLOW" = "no" ] && COUNT=100 [ "$MCREATE" ] || MCREATE=mcreate [ "$MKDIRMANY" ] || MKDIRMANY="createmany -d" -while [ "$1" ]; do - case $1 in - *.xml) export NAME=`echo $1 | sed "s/.xml//"` ;; - *) OPTS="$OPTS $1" ;; - esac - shift -done - -mounted_lustre_filesystems() { - awk '($3 ~ "lustre" && $1 ~ ":") { print $2 }' /proc/mounts -} - -MOUNTED="`mounted_lustre_filesystems`" -if [ -z "$MOUNTED" ]; then - formatall - setupall - MOUNTED="`mounted_lustre_filesystems`" - [ -z "$MOUNTED" ] && error "NAME=$NAME not mounted" - I_MOUNTED=yes -fi - -MOUNT=$MOUNTED +check_and_setup_lustre OSCTMP=`echo $MOUNT | tr "/" "."` USED=`df | awk "/$OSCTMP/ { print \\$3 }" | tail -n 1` @@ -68,7 +31,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 @@ -77,18 +40,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 @@ -96,58 +59,62 @@ 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 $SRC -type f -mtime +1 -ctime +1 | head -n $COUNT` -log "copying files from $SRC to $DST$SRC at `date`" -tar cf - $FILES | tar xvf - -C $DST > /dev/null || fail "copying $SRC" 11 +FILES=$TMP/runtests.files +# print0 is to use "NUL" instead of newline as filename terminator, bug 19702 +find $RUNTESTS_SRC -type f -mtime +1 -print0 | head -n $COUNT > $FILES +[ -s "$FILES" ] || error "$RUNTESTS_SRC contains only files modifed less than 2 days ago" + +log "copying files from $RUNTESTS_SRC to $DST$RUNTESTS_SRC at `date`" +tar cf - --null --files-from $FILES | tar xvf - -C $DST > /dev/null || error "copying $RUNTESTS_SRC" 11 log "comparing newly copied files at `date`" -for f in $FILES; do + +cat $FILES | tr "\0" "\n" | ( rc=0; while read f; do [ $V ] && log "verifying $DST/$f" - diff -q $f $DST/$f || ERROR=11 + diff -q "$f" "$DST/$f" || rc=11 done +[ "$rc" = 0 ] || error_exit "old and new files are different: rc=$rc" ) -[ "$ERROR" ] && fail "old and new files are different" $ERROR log "finished at `date` ($(($(date +%s) - START)))" -$CLEANUP || exit 19 -$SETUP || exit 20 +stopall || exit 19 +setupall || exit 20 log "comparing previously copied files" -for f in $FILES; do - [ $V ] && log "verifying $DST/$f" - diff -q $f $DST/$f || ERROR=22 +cat $FILES | tr "\0" "\n" | ( rc=0; while read f; do + [ $V ] && log "verifying $DST/$f" + diff -q "$f" "$DST/$f" || rc=22 done +[ "$rc" = 0 ] || error_exit "old and new files are different: rc=$rc" ) -[ "$ERROR" ] && fail "old and new files are different on second diff" $ERROR - -$CLEANUP || exit 19 -$SETUP || exit 20 +stopall || exit 21 +setupall || exit 22 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" @@ -156,6 +123,5 @@ if [ `expr $NOWUSED - $USED` -gt 1024 ]; then echo "Space not all freed: now ${NOWUSED}kB, was ${USED}kB." 1>&2 fi -if [ "$I_MOUNTED" = "yes" ]; then - $CLEANUP -fi +rm -f $FILES +check_and_cleanup_lustre