X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ftest-framework.sh;h=c3bf14b7bf75b47536958b8f6986c64a693696dd;hb=16dcdf3b09ee15eb8bd5b43cbe413dff72bf3bca;hp=33f9786c3a0717c502a6c694d4213f8491241b21;hpb=cbd3a230274e1197d378725ee9e2aed6e35d2cb6;p=fs%2Flustre-release.git diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 33f9786..c3bf14b 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 @@ -39,7 +38,13 @@ init_test_env() { export LMC=${LMC:-"lmc"} export LCTL=${LCTL:-"$LUSTRE/utils/lctl"} export CHECKSTAT="${CHECKSTAT:-checkstat} " - export FSYTPE=${FSTYPE:-"ext3"} + DEF_FSTYPE=`test "x$(uname -r | grep -o '2.6')" = "x2.6" && echo "ldiskfs" || echo "ext3"` + export FSTYPE=${FSTYPE:-$DEF_FSTYPE} + #used only if FSTYPE == smfs, otherwise ignored by lconf + MDS_BACKFSTYPE=${MDS_BACKFSTYPE:-$DEF_FSTYPE} + OST_BACKFSTYPE=${OST_BACKFSTYPE:-$DEF_FSTYPE} + + export SECURITY=${SECURITY:-"null"} # Paths on remote nodes, if different export RLUSTRE=${RLUSTRE:-$LUSTRE} @@ -56,19 +61,24 @@ 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 shift active=`facet_active $facet` - do_facet $facet $LCONF --select ${facet}_svc=${active}_facet \ + do_facet $facet $LCONF --select ${facet}_svc=${active}_facet -v \ --node ${active}_facet --ptldebug $PTLDEBUG --subsystem $SUBSYSTEM \ - $@ $XMLCONFIG + --mds_sec $SECURITY $@ $XMLCONFIG } stop() { @@ -87,12 +97,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 mds`:/mds_svc/client_facet $mnt || return 1 + do_node $client mount -t lustre -o mds_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 mds`:/mds_svc/client_facet $mnt -o nettype=$NETTYPE|| return 4 + do_node $client $LLMOUNT `facet_active_host mds1`:/mds1_svc/client_facet $mnt \ + -o mds_sec=$SECURITY,nettype=$NETTYPE|| return 4 fi [ -d /r ] && $LCTL modules > /r/tmp/ogdb-`hostname` @@ -168,9 +179,18 @@ 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/mds_svc/evict_client" + do_facet mds "echo $UUID > /proc/fs/lustre/mds/mds1_svc/evict_client" } fail() { @@ -179,6 +199,15 @@ 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" + 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 +215,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 +224,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 +270,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} @@ -274,13 +317,26 @@ do_node() { echo "CMD: $HOST $@" $PDSH $HOST $LCTL mark "$@" > /dev/null 2>&1 || : fi - $PDSH $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests; cd $RPWD; sh -c \"$@\")" + $PDSH $HOST "(PATH=$RLUSTRE/utils:$RLUSTRE/tests:/usr/sbin:/sbin:\$PATH; cd $RPWD; sh -c \"$@\")" +} + +mds_list() { + seq -f mds%g $MDSCOUNT } + do_facet() { facet=$1 shift - HOST=`facet_active_host $facet` - do_node $HOST $@ + + if [ "$facet" == "mds" ]; then + 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 } add_facet() { @@ -298,14 +354,14 @@ add_mds() { shift rm -f ${facet}active add_facet $facet - do_lmc --add mds --node ${facet}_facet --mds ${facet}_svc --fstype $FSTYPE $* + do_lmc --add mds --node ${facet}_facet --mds ${facet}_svc --fstype $FSTYPE --backfstype $MDS_BACKFSTYPE $* } add_mdsfailover() { facet=$1 shift add_facet ${facet}failover --lustre_upcall $UPCALL - do_lmc --add mds --node ${facet}failover_facet --mds ${facet}_svc --fstype $FSTYPE $* + do_lmc --add mds --node ${facet}failover_facet --mds ${facet}_svc --fstype $FSTYPE --backfstype $MDS_BACKFSTYPE $* } add_ost() { @@ -313,14 +369,61 @@ add_ost() { shift rm -f ${facet}active add_facet $facet - do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc --fstype $FSTYPE $* + do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc --fstype $FSTYPE --backfstype $OST_BACKFSTYPE $* +} + +del_ost() { + facet=$1 + shift + do_lmc --delete ost --node ${facet}_facet --ost ${facet}_svc $* +} +start_gks() { + facet=$1 + shift + rm -f ${facet}active + add_facet $facet + do_facet $facet $LCONF --node ${facet}_facet --ptldebug $PTLDEBUG $* $XMLCONFIG +} +stop_gks() { + facet=$1 + shift + do_facet $facet $LCONF --node ${facet}_facet --cleanup $* $XMLCONFIG +} + +add_gks() { + facet=$1 + shift + rm -f ${facet}active + add_facet $facet + do_lmc --add gks --gks ${facet}_svc --node ${facet}_facet $* +} +add_cmobd() { + facet=$1 + cache_facet=$2 + master_facet=$3 + shift; shift; shift + do_lmc --add cmobd --node mds1_facet --cmobd ${facet}_svc --cache_obd ${cache_facet} --master_obd ${master_facet} +} + +add_cobd() { + facet=$1 + client_facet=$2 + master_facet=$3 + shift; shift; shift + do_lmc --add cobd --node mds1_facet --cmobd ${facet}_svc --cache_obd ${cache_facet} --master_obd ${master_facet} +} + +deactivate_ost() { + facet=$1 + shift + do_lmc --deactivate ost --node ${facet}_facet --ost ${facet}_svc $* } add_ostfailover() { facet=$1 shift add_facet ${facet}failover - do_lmc --add ost --failover --node ${facet}failover_facet --ost ${facet}_svc --fstype $FSTYPE $* + do_lmc --add ost --failover --node ${facet}failover_facet --ost ${facet}_svc --fstype $FSTYPE --backfstype $OST_BACKFSTYPE $* } add_lov() { @@ -328,7 +431,27 @@ add_lov() { mds_facet=$2 shift; shift do_lmc --add lov --mds ${mds_facet}_svc --lov $lov $* - +} + +add_lov_to_lmv() { + lov=$1 + lmv=$2 + shift; shift + do_lmc --add lov --lmv $lmv --lov $lov $* +} + +add_lov_to_cache_master_lmv() { + lov=$1 + cache_lmv=$2 + master_lmv=$3 + shift; shift; shift + do_lmc --add lov --cachelmv $cache_lmv --masterlmv $master_lmv --lov $lov $* +} + +add_lmv() { + lmv=$1 + shift; + do_lmc --add lmv --lmv $lmv $* } add_client() { @@ -336,10 +459,12 @@ add_client() { mds=$2 shift; shift add_facet $facet --lustre_upcall $UPCALL - do_lmc --add mtpt --node ${facet}_facet --mds ${mds}_svc $* - + do_lmc --add mtpt --node ${facet}_facet --clientoptions async --mds ${mds}_svc $* } +config_commit() { + do_lmc --commit +} ####### # General functions @@ -481,9 +606,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 @@ -542,6 +669,10 @@ log() { lctl mark "$*" 2> /dev/null || true } +pass() { + echo PASS $@ +} + run_one() { testnum=$1 message=$2 @@ -551,8 +682,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() {