Whamcloud - gitweb
Revert "LU-2469 tests: use MDS/OSTDEV and MDS/OSTDEVBASE with zfs"
[fs/lustre-release.git] / lustre / tests / test-framework.sh
index 515c4d1..8a08dff 100644 (file)
@@ -336,7 +336,7 @@ version_code() {
     # split arguments like "1.8.6-wc3" into "1", "8", "6", "wc3"
     eval set -- $(tr "[:punct:]" " " <<< $*)
 
-    echo -n $((($1 << 16) | ($2 << 8) | $3))
+    echo -n "$((($1 << 16) | ($2 << 8) | $3))"
 }
 
 export LINUX_VERSION=$(uname -r | sed -e "s/[-.]/ /3" -e "s/ .*//")
@@ -1531,6 +1531,7 @@ TESTLOG_PREFIX=$TESTLOG_PREFIX \
 TESTNAME=$TESTNAME \
 DBENCH_LIB=$DBENCH_LIB \
 DBENCH_SRC=$DBENCH_SRC \
+LFS=$LFS \
 run_${load}.sh" &
     local ppid=$!
     log "Started client load: ${load} on $client"
@@ -2109,42 +2110,42 @@ obd_name() {
 }
 
 replay_barrier() {
-    local facet=$1
-    do_facet $facet "sync; sync; sync"
-    df $MOUNT
+       local facet=$1
+       do_facet $facet "sync; sync; sync"
+       df $MOUNT
 
-    # make sure there will be no seq change
-    local clients=${CLIENTS:-$HOSTNAME}
-    local f=fsa-\\\$\(hostname\)
-    do_nodes $clients "mcreate $MOUNT/$f; rm $MOUNT/$f"
-    do_nodes $clients "if [ -d $MOUNT2 ]; then mcreate $MOUNT2/$f; rm $MOUNT2/$f; fi"
+        # make sure there will be no seq change
+       local clients=${CLIENTS:-$HOSTNAME}
+       local f=fsa-\\\$\(hostname\)
+       do_nodes $clients "mcreate $MOUNT/$f; rm $MOUNT/$f"
+       do_nodes $clients "if [ -d $MOUNT2 ]; then mcreate $MOUNT2/$f; rm $MOUNT2/$f; fi"
 
-    local svc=${facet}_svc
-    do_facet $facet $LCTL --device %${!svc} notransno
-    do_facet $facet $LCTL --device %${!svc} readonly
-    do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"
-    $LCTL mark "local REPLAY BARRIER on ${!svc}"
+       local svc=${facet}_svc
+       do_facet $facet $LCTL --device ${!svc} notransno
+       do_facet $facet $LCTL --device ${!svc} readonly
+       do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"
+       $LCTL mark "local REPLAY BARRIER on ${!svc}"
 }
 
 replay_barrier_nodf() {
-    local facet=$1    echo running=${running}
-    do_facet $facet "sync; sync; sync"
-    local svc=${facet}_svc
-    echo Replay barrier on ${!svc}
-    do_facet $facet $LCTL --device %${!svc} notransno
-    do_facet $facet $LCTL --device %${!svc} readonly
-    do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"
-    $LCTL mark "local REPLAY BARRIER on ${!svc}"
+       local facet=$1    echo running=${running}
+       do_facet $facet "sync; sync; sync"
+       local svc=${facet}_svc
+       echo Replay barrier on ${!svc}
+       do_facet $facet $LCTL --device ${!svc} notransno
+       do_facet $facet $LCTL --device ${!svc} readonly
+       do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"
+       $LCTL mark "local REPLAY BARRIER on ${!svc}"
 }
 
 replay_barrier_nosync() {
-    local facet=$1    echo running=${running}
-    local svc=${facet}_svc
-    echo Replay barrier on ${!svc}
-    do_facet $facet $LCTL --device %${!svc} notransno
-    do_facet $facet $LCTL --device %${!svc} readonly
-    do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"
-    $LCTL mark "local REPLAY BARRIER on ${!svc}"
+       local facet=$1    echo running=${running}
+       local svc=${facet}_svc
+       echo Replay barrier on ${!svc}
+       do_facet $facet $LCTL --device ${!svc} notransno
+       do_facet $facet $LCTL --device ${!svc} readonly
+       do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"
+       $LCTL mark "local REPLAY BARRIER on ${!svc}"
 }
 
 mds_evict_client() {
@@ -4338,9 +4339,45 @@ mdtuuid_from_index()
     $LFS mdts $2 | sed -ne "/^$1: /s/.* \(.*\) .*$/\1/p"
 }
 
+# Description:
+#   Return unique identifier for given hostname
+host_id() {
+       local host_name=$1
+       echo $host_name | md5sum | cut -d' ' -f1
+}
+
+# Description:
+#   Returns list of ip addresses for each interface
+local_addr_list() {
+       ip addr | awk '/inet\ / {print $2}' | awk -F\/ '{print $1}'
+}
+
+is_local_addr() {
+       local addr=$1
+       # Cache address list to avoid mutiple execution of local_addr_list
+       LOCAL_ADDR_LIST=${LOCAL_ADDR_LIST:-$(local_addr_list)}
+       local i
+       for i in $LOCAL_ADDR_LIST ; do
+               [[ "$i" == "$addr" ]] && return 0
+       done
+       return 1
+}
+
+local_node() {
+       local host_name=$1
+       local is_local="IS_LOCAL_$(host_id $host_name)"
+       if [ -z "${!is_local-}" ] ; then
+               eval $is_local=0
+               local host_ip=$($LUSTRE/tests/resolveip $host_name)
+               is_local_addr "$host_ip" && eval $is_local=1
+       fi
+       [[ "${!is_local}" == "1" ]]
+}
+
 remote_node () {
-    local node=$1
-    [ "$node" != "$(hostname)" ]
+       local node=$1
+       local_node $node && return 1
+       return 0
 }
 
 remote_mds ()