From 39e4add67da46669496cd2eb9a0394f68f28f9e9 Mon Sep 17 00:00:00 2001 From: yury Date: Tue, 5 Apr 2005 15:25:17 +0000 Subject: [PATCH] - cleanups in sanity-fid.sh - added more tests into sanity-gns.sh, splitting general test onto few smaller ones. --- lustre/tests/sanity-fid.sh | 4 +- lustre/tests/sanity-gns.sh | 195 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 154 insertions(+), 45 deletions(-) diff --git a/lustre/tests/sanity-fid.sh b/lustre/tests/sanity-fid.sh index 4fb86af..9844d4e 100644 --- a/lustre/tests/sanity-fid.sh +++ b/lustre/tests/sanity-fid.sh @@ -219,7 +219,7 @@ test_1a() { } rm -fr $DIR/1a0 || error } -run_test 1a " fid managing correctness =============" +run_test 1a " fid correctness (create) =============" test_1b() { rm -fr $DIR/1b0 > /dev/null @@ -247,7 +247,7 @@ test_1b() { } rm -fr $DIR/1b0 || error } -run_test 1b " fid managing correctness =============" +run_test 1b " fid correctness (remove) =============" TMPDIR=$OLDTMPDIR TMP=$OLDTMP diff --git a/lustre/tests/sanity-gns.sh b/lustre/tests/sanity-gns.sh index 64497b4..cff80a1 100644 --- a/lustre/tests/sanity-gns.sh +++ b/lustre/tests/sanity-gns.sh @@ -209,18 +209,6 @@ find_free_loop() { echo $LOOP_DEV } -cleanup_loop() { - local LOOP_DEV=$1 - local LOOP_FILE=$2 - local LOOP_MNTPT=$3 - - chmod u-s $LOOP_MNTPT >/dev/null 2>&1 - umount $LOOP_MNTPT >/dev/null 2>&1 - losetup -d $LOOP_DEV >/dev/null 2>&1 - rm -fr $LOOP_FILE >/dev/null 2>&1 - rm -fr $LOOP_MNTPT >/dev/null 2>&1 -} - setup_loop() { local LOOP_DEV=$1 local LOOP_FILE=$2 @@ -229,20 +217,28 @@ setup_loop() { losetup $LOOP_DEV $LOOP_FILE || { rc=$? - cleanup_mount $LOOP_DEV $LOOP_FILE $DIR/gns_test_1a + cleanup_loop $LOOP_DEV $LOOP_FILE return $rc } mke2fs -F $LOOP_DEV >/dev/null 2>&1 || { rc=$? - cleanup_mount $LOOP_DEV $LOOP_FILE $DIR/gns_test_1a + cleanup_loop $LOOP_DEV $LOOP_FILE echo "cannot create test ext2 fs on $LOOP_DEV" return $? } return 0 } -prep_upcall() { +cleanup_loop() { + local LOOP_DEV=$1 + local LOOP_FILE=$2 + + losetup -d $LOOP_DEV >/dev/null 2>&1 + rm -fr $LOOP_FILE >/dev/null 2>&1 +} + +setup_upcall() { local INJECTION="" local UPCALL=$1 local MODE=$2 @@ -271,6 +267,11 @@ EOF return $? } +cleanup_upcall() { + local UPCALL=$1 + rm -fr $UPCALL +} + check_gns() { local LOG="/tmp/gns-log" local UPCALL_PATH="" @@ -284,7 +285,7 @@ check_gns() { UPCALL_PATH="/tmp/gns-upcall-$UPCALL.sh" echo "generating upcall $UPCALL_PATH" - prep_upcall $UPCALL_PATH $UPCALL $LOG || return $rc + setup_upcall $UPCALL_PATH $UPCALL $LOG || return $rc echo "======================== upcall script ===========================" cat $UPCALL_PATH 2>/dev/null || return $? echo "==================================================================" @@ -306,6 +307,7 @@ check_gns() { } || { echo "upcall log file $LOG is not found" } + cleanup_upcall $UPCALL_PATH return 1 } echo "success" @@ -317,16 +319,60 @@ check_gns() { cat /proc/mounts | grep -q "$ENTRY" && { echo "failed" + cleanup_upcall $UPCALL_PATH return 2 } echo "success" + cleanup_upcall $UPCALL_PATH return 0 } +setup_object() { + local OBJPATH=$1 + local OBJECT=$2 + local CONTENT=$3 + + mkdir -p $OBJPATH || return $? + echo -n $CONTENT > $OBJPATH/$OBJECT || return $? + + echo "======================== mount object ===========================" + cat $OBJPATH/$OBJECT + echo "" + echo "=================================================================" + + chmod u+s $OBJPATH + return $? +} + +cleanup_object() { + local OBJPATH=$1 + + chmod u-s $OBJPATH >/dev/null 2>&1 + umount $OBJPATH >/dev/null 2>&1 + rm -fr $OBJPATH >/dev/null 2>&1 +} + +setup_gns() { + local OBJECT=$1 + local TIMOUT=$2 + local TICK=$3 + + echo "$OBJECT" > /proc/fs/lustre/llite/fs0/gns_object_name || error + echo "$TIMOUT" > /proc/fs/lustre/llite/fs0/gns_timeout || error + echo "$TICK" > /proc/fs/lustre/llite/fs0/gns_tick || error + + echo "" + echo "timeout: $(cat /proc/fs/lustre/llite/fs0/gns_timeout)s" + echo "object: $(cat /proc/fs/lustre/llite/fs0/gns_object_name)" + echo "tick: $(cat /proc/fs/lustre/llite/fs0/gns_tick)s" + echo "" + +} + test_1a() { local LOOP_DEV=$(find_free_loop 2>/dev/null) local UPCALL="/tmp/gns-upcall.sh" - local LOOP_FILE="/tmp/gns_loop" + local LOOP_FILE="/tmp/gns_loop_1a" local OBJECT=".mntinfo" local TIMOUT=5 local TICK=1 @@ -335,51 +381,114 @@ test_1a() { error "can't find free loop device" echo "preparing loop device $LOOP_DEV <-> $LOOP_FILE..." - cleanup_loop $LOOP_DEV $LOOP_FILE $DIR/gns_test_1a + cleanup_loop $LOOP_DEV $LOOP_FILE setup_loop $LOOP_DEV $LOOP_FILE || error echo "setting up GNS timeouts and mount object..." - echo "$OBJECT" > /proc/fs/lustre/llite/fs0/gns_object_name || error - echo "$TIMOUT" > /proc/fs/lustre/llite/fs0/gns_timeout || error - echo "$TICK" > /proc/fs/lustre/llite/fs0/gns_tick || error - - echo "" - echo "timeout: $(cat /proc/fs/lustre/llite/fs0/gns_timeout)s" - echo "object: $(cat /proc/fs/lustre/llite/fs0/gns_object_name)" - echo "tick: $(cat /proc/fs/lustre/llite/fs0/gns_tick)s" - echo "" + setup_gns $OBJECT $TIMOUT $TICK || error echo "preparing mount object at $DIR/gns_test_1a/$OBJECT..." - mkdir -p $DIR/gns_test_1a || error - echo -n "-t ext2 $LOOP_DEV" > $DIR/gns_test_1a/$OBJECT - echo "======================== mount object ===========================" - cat $DIR/gns_test_1a/$OBJECT - echo "" - echo "=================================================================" - chmod u+s $DIR/gns_test_1a || error + setup_object $DIR/gns_test_1a $OBJECT "-t ext2 $LOOP_DEV" || error echo "" - echo "testing GNS with GENERIC upcall 2 times on the row" - for ((i=0;i<2;i++)); do + echo "testing GNS with GENERIC upcall 3 times on the row" + for ((i=0;i<3;i++)); do check_gns GENERIC $DIR/gns_test_1a $TIMOUT $TICK || { - cleanup_loop $LOOP_DEV $LOOP_FILE $DIR/gns_test_1a + cleanup_object $DIR/gns_test_1a + cleanup_loop $LOOP_DEV $LOOP_FILE error } done + cleanup_object $DIR/gns_test_1a + cleanup_loop $LOOP_DEV $LOOP_FILE +} + +run_test 1a " general GNS test - mounting/umount (GENERIC) =============" + +test_2a() { + local LOOP_DEV=$(find_free_loop 2>/dev/null) + local UPCALL="/tmp/gns-upcall.sh" + local LOOP_FILE="/tmp/gns_loop_2a" + local OBJECT=".mntinfo" + local TIMOUT=5 + local TICK=1 + + test "x$LOOP_DEV" != "x" && test -b $LOOP_DEV || + error "can't find free loop device" + + echo "preparing loop device $LOOP_DEV <-> $LOOP_FILE..." + cleanup_loop $LOOP_DEV $LOOP_FILE + setup_loop $LOOP_DEV $LOOP_FILE || error + + echo "setting up GNS timeouts and mount object..." + setup_gns $OBJECT $TIMOUT $TICK || error + + echo "preparing mount object at $DIR/gns_test_2a/$OBJECT..." + setup_object $DIR/gns_test_2a $OBJECT "-t ext2 $LOOP_DEV" || error + echo "" - echo "testing GNS with DEADLOCK upcall 2 times on the row" - for ((i=0;i<2;i++)); do - check_gns DEADLOCK $DIR/gns_test_1a $TIMOUT $TICK || { - cleanup_loop $LOOP_DEV $LOOP_FILE $DIR/gns_test_1a + echo "testing GNS with DEADLOCK upcall 3 times on the row" + for ((i=0;i<3;i++)); do + check_gns DEADLOCK $DIR/gns_test_2a $TIMOUT $TICK || { + cleanup_object $DIR/gns_test_2a + cleanup_loop $LOOP_DEV $LOOP_FILE error } done - cleanup_loop $LOOP_DEV $LOOP_FILE $DIR/gns_test_1a + cleanup_object $DIR/gns_test_2a + cleanup_loop $LOOP_DEV $LOOP_FILE +} + +run_test 2a " general GNS test - mounting/umount (DEADLOCK) ============" + +test_3a() { + local LOOP_DEV=$(find_free_loop 2>/dev/null) + local UPCALL="/tmp/gns-upcall.sh" + local LOOP_FILE="/tmp/gns_loop_3a" + local OBJECT=".mntinfo" + local TIMOUT=5 + local TICK=1 + + test "x$LOOP_DEV" != "x" && test -b $LOOP_DEV || + error "can't find free loop device" + + echo "preparing loop device $LOOP_DEV <-> $LOOP_FILE..." + cleanup_loop $LOOP_DEV $LOOP_FILE + setup_loop $LOOP_DEV $LOOP_FILE || error + + echo "setting up GNS timeouts and mount object..." + setup_gns $OBJECT $TIMOUT $TICK || error + + echo "preparing mount object at $DIR/gns_test_3a/$OBJECT..." + setup_object $DIR/gns_test_3a $OBJECT "-t ext2 $LOOP_DEV" || error + + echo "" + echo "testing GNS with DEADLOCK upcall 4 times on the row" + for ((i=0;i<4;i++)); do + local MODE="GENERIC" + + test $(($i%2)) -eq 1 && MODE="DEADLOCK" + + check_gns $MODE $DIR/gns_test_3a $TIMOUT $TICK || { + cleanup_object $DIR/gns_test_3a + cleanup_loop $LOOP_DEV $LOOP_FILE + error + } + done + + cleanup_object $DIR/gns_test_3a + cleanup_loop $LOOP_DEV $LOOP_FILE +} + +run_test 3a " general GNS test - mounting/umount (GENERIC/DEADLOCK) =====" + +test_4a() { + echo "Not implemented yet!" } -run_test 1a " general GNS test - mounting/umount ====================" +run_test 4a " general GNS test - concurrent mounting/umount =============" TMPDIR=$OLDTMPDIR TMP=$OLDTMP -- 1.8.3.1