X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ftest-framework.sh;h=66965ed101a18b9c45ec48180a27d2c4ff6dedbf;hb=fbb7ead129258897f5a5d5c9ce28d31fbbe5bca2;hp=b17eea6c1f9de41a7518d08b65fd6915dbc2d5e2;hpb=2dc9c16e770415d56839e1996015fec5fab93f29;p=fs%2Flustre-release.git diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index b17eea6..66965ed 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -1,7 +1,6 @@ #!/bin/sh set -e - export REFORMAT="" export VERBOSE=false @@ -30,7 +29,7 @@ init_test_env() { export XMLCONFIG=${XMLCONFIG:-${TESTSUITE}.xml} export LTESTDIR=${LTESTDIR:-$LUSTRE/../ltest} - [ -d /r ] && export ROOT=/r + [ -d /r ] && test "x$ROOT" = "x" && export ROOT=/r export TMP=${TMP:-$ROOT/tmp} export PATH=:$PATH:$LUSTRE/utils:$LUSTRE/tests @@ -40,6 +39,7 @@ init_test_env() { export LCTL=${LCTL:-"$LUSTRE/utils/lctl"} export CHECKSTAT="${CHECKSTAT:-checkstat} " export FSYTPE=${FSTYPE:-"ext3"} + export SECURITY=${SECURITY:-"null"} # Paths on remote nodes, if different export RLUSTRE=${RLUSTRE:-$LUSTRE} @@ -56,11 +56,16 @@ init_test_env() { esac done + shift $((OPTIND - 1)) + ONLY=${ONLY:-$*} + # save the name of the config file for the upcall echo "XMLCONFIG=$LUSTRE/tests/$XMLCONFIG" > $LUSTRE/tests/XMLCONFIG # echo "CONFIG=`canonical_path $CONFIG`" > $LUSTRE/tests/CONFIG } +. krb5_env.sh + # Facet functions start() { facet=$1 @@ -68,7 +73,7 @@ start() { active=`facet_active $facet` do_facet $facet $LCONF --select ${facet}_svc=${active}_facet \ --node ${active}_facet --ptldebug $PTLDEBUG --subsystem $SUBSYSTEM \ - $@ $XMLCONFIG + --sec $SECURITY $@ $XMLCONFIG } stop() { @@ -87,12 +92,13 @@ zconf_mount() { do_node $client mkdir $mnt 2> /dev/null || : if [ -x /sbin/mount.lustre ] ; then - do_node $client mount -t lustre -o nettype=$NETTYPE `facet_active_host mds1`:/mds1_svc/client_facet $mnt || return 1 + do_node $client mount -t lustre -o sec=$SECURITY,nettype=$NETTYPE \ + `facet_active_host mds1`:/mds1_svc/client_facet $mnt || return 2 else # this is so cheating do_node $client $LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null || return 2 - $LCONF --nosetup --node client_facet $XMLCONFIG - do_node $client $LLMOUNT `facet_active_host mds1`:/mds1_svc/client_facet $mnt -o nettype=$NETTYPE|| return 4 + do_node $client $LLMOUNT `facet_active_host mds1`:/mds1_svc/client_facet $mnt \ + -o sec=$SECURITY,nettype=$NETTYPE|| return 4 fi [ -d /r ] && $LCTL modules > /r/tmp/ogdb-`hostname` @@ -168,6 +174,15 @@ replay_barrier() { $LCTL mark "REPLAY BARRIER" } +replay_barrier_nodf() { + local facet=$1 + do_facet $facet sync + do_facet $facet $LCTL --device %${facet}_svc readonly + do_facet $facet $LCTL --device %${facet}_svc notransno + do_facet $facet $LCTL mark "REPLAY BARRIER" + $LCTL mark "REPLAY BARRIER" +} + mds_evict_client() { UUID=`cat /proc/fs/lustre/mdc/*_MNT_*/uuid` do_facet mds "echo $UUID > /proc/fs/lustre/mds/mds1_svc/evict_client" @@ -179,6 +194,16 @@ fail() { df $MOUNT || error "post-failover df: $?" } +fail_drop() { + local facet=$1 + local failcode=$2 + facet_failover $facet + do_facet mds "echo $failcode > /proc/sys/lustre/fail_loc" + cat /proc/sys/lustre/fail_loc + df $MOUNT || error "post-failover df: $?" + do_facet mds "echo 0 > /proc/sys/lustre/fail_loc" +} + fail_abort() { local facet=$1 stop $facet --force --failover --nomod @@ -186,6 +211,7 @@ fail_abort() { start $facet do_facet $facet lctl --device %${facet}_svc abort_recovery df $MOUNT || echo "first df failed: $?" + sleep 1 df $MOUNT || error "post-failover df: $?" } @@ -194,25 +220,33 @@ do_lmc() { } h2gm () { - if [ "$1" = "client" ]; then echo \'*\'; else + if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else $PDSH $1 $GMNALNID -l | cut -d\ -f2 fi } h2tcp() { - if [ "$1" = "client" ]; then echo \'*\'; else + if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else echo $1 fi } declare -fx h2tcp h2elan() { - if [ "$1" = "client" ]; then echo \'*\'; else + if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else echo $1 | sed 's/[^0-9]*//g' fi } declare -fx h2elan +h2openib() { + if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else + echo $1 | sed 's/[^0-9]*//g' + fi +} +declare -fx h2openib + + facet_host() { local facet=$1 varname=${facet}_HOST @@ -232,6 +266,11 @@ facet_nid() { facet_active() { local facet=$1 local activevar=${facet}active + + if [ -f ./${facet}active ] ; then + source ./${facet}active + fi + active=${!activevar} if [ -z "$active" ] ; then echo -n ${facet} @@ -276,21 +315,24 @@ do_node() { fi $PDSH $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests; cd $RPWD; sh -c \"$@\")" } + +mds_list() { + seq -f mds%g $MDSCOUNT +} + do_facet() { facet=$1 shift if [ "$facet" == "mds" ]; then - if [ "$MDSCOUNT" -gt 1 ]; then - for num in `seq $MDSCOUNT`; do - HOST=`facet_active_host $facet$num` - do_node $HOST $@ - done - return - fi + for mds in `mds_list`; do + HOST=`facet_active_host $mds` + do_node $HOST $@ + done + else + HOST=`facet_active_host $facet` + do_node $HOST $@ fi - HOST=`facet_active_host $facet` - do_node $HOST $@ } add_facet() { @@ -326,6 +368,18 @@ add_ost() { do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc --fstype $FSTYPE $* } +del_ost() { + facet=$1 + shift + do_lmc --delete ost --node ${facet}_facet --ost ${facet}_svc $* +} + +deactivate_ost() { + facet=$1 + shift + do_lmc --deactivate ost --node ${facet}_facet --ost ${facet}_svc $* +} + add_ostfailover() { facet=$1 shift @@ -355,11 +409,15 @@ add_lmv() { add_client() { facet=$1 - shift; + mds=$2 + shift; shift add_facet $facet --lustre_upcall $UPCALL - do_lmc --add mtpt --node ${facet}_facet $* + do_lmc --add mtpt --node ${facet}_facet --clientoptions async --mds ${mds}_svc $* } +config_commit() { + do_lmc --commit +} ####### # General functions @@ -501,9 +559,11 @@ error() { } build_test_filter() { + [ "$ONLY" ] && log "only running $ONLY" for O in $ONLY; do eval ONLY_${O}=true done + [ "$EXCEPT$ALWAYS_EXCEPT" ] && log "skipping $EXCEPT $ALWAYS_EXCEPT" for E in $EXCEPT $ALWAYS_EXCEPT; do eval EXCEPT_${E}=true done @@ -562,6 +622,10 @@ log() { lctl mark "$*" 2> /dev/null || true } +pass() { + echo PASS $@ +} + run_one() { testnum=$1 message=$2 @@ -571,8 +635,10 @@ run_one() { # Pretty tests run faster. equals_msg $testnum: $message - log "== test $1: $2" + BEFORE=`date +%s` + log "== test $testnum: $message ============ `date +%H:%M:%S` ($BEFORE)" test_${testnum} || error "test_$testnum failed with $?" + pass "($((`date +%s` - $BEFORE))s)" } canonical_path() {