Whamcloud - gitweb
LU-13019 tests: replace usleep in test scripts
[fs/lustre-release.git] / lustre / tests / sanity-hsm.sh
index ae49009..9f31459 100755 (executable)
@@ -17,16 +17,37 @@ init_logging
 ALWAYS_EXCEPT="$SANITY_HSM_EXCEPT "
 if $SHARED_KEY; then
 # bug number for skipped tests: LU-9795 LU-9795
-       ALWAYS_EXCEPT+="        13      402b"
+       ALWAYS_EXCEPT+="        13      402b "
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
 fi
 
+# Skip tests for PPC that fail frequently
+if [[ $(uname -m) = ppc64 ]]; then
+       # bug number:    LU-12251 LU-12251 LU-12251 LU-12251 LU-12251 LU-12251
+       ALWAYS_EXCEPT+=" 1a       1b       1d       1e       12c      12f "
+       # bug number:    LU-12251 LU-12251 LU-12251 LU-12251 LU-12251 LU-12251
+       ALWAYS_EXCEPT+=" 12g      12h      12m      12n      12o      12p "
+       # bug number:    LU-12251 LU-12251 LU-12251 LU-12251 LU-12251 LU-12251
+       ALWAYS_EXCEPT+=" 12q      21       22       23       24a      24b "
+       # bug number:    LU-12251 LU-12251 LU-12251 LU-12251 LU-12251 LU-12251
+       ALWAYS_EXCEPT+=" 24d      24e      24f      25b      30c      37 "
+       # bug number:    LU-12251 LU-12251 LU-12251 LU-12251 LU-12251 LU-12251
+       ALWAYS_EXCEPT+=" 57       58       90       110b     111b     113 "
+       # bug number:    LU-12251 LU-12251 LU-12251 LU-12251 LU-12251 LU-12251
+       ALWAYS_EXCEPT+=" 222b     222d     228      260a     260b     260c "
+       # bug number:    LU-12252 LU-12252 LU-12252 LU-12252 LU-12252 LU-12252
+       ALWAYS_EXCEPT+=" 220A     220a     221      222a     222c     223a "
+       # bug number:    LU-12252 LU-12252 LU-12252 LU-12252 LU-12252 LU-12252
+       ALWAYS_EXCEPT+=" 223b     224A     224a     226      227      600"
+       # bug number:    LU-12252 LU-12252 LU-12252 LU-12252 LU-12252 LU-12252
+       ALWAYS_EXCEPT+=" 601      602      603      604      605 "
+fi
+
 build_test_filter
 
 [ -n "$FILESET" ] && skip "Not functional for FILESET set"
 
 OPENFILE=${OPENFILE:-openfile}
-MMAP_CAT=${MMAP_CAT:-mmap_cat}
 MOUNT_2=${MOUNT_2:-"yes"}
 FAIL_ON_ERROR=false
 
@@ -61,106 +82,17 @@ CLIENT1=${CLIENT1:-$HOSTNAME}
 # Exception is the test which need two separate nodes
 CLIENT2=${CLIENT2:-$CLIENT1}
 
-#
-# In order to test multiple remote HSM agents, a new facet type named "AGT" and
-# the following associated variables are added:
-#
-# AGTCOUNT: number of agents
-# AGTDEV{N}: target HSM mount point (root path of the backend)
-# agt{N}_HOST: hostname of the agent agt{N}
-# SINGLEAGT: facet of the single agent
-#
-# The number of agents is initialized as the number of remote client nodes.
-# By default, only single copytool is started on a remote client/agent. If there
-# was no remote client, then the copytool will be started on the local client.
-#
-init_agt_vars() {
-       local n
-       local agent
-
-       export AGTCOUNT=${AGTCOUNT:-$((CLIENTCOUNT - 1))}
-       [[ $AGTCOUNT -gt 0 ]] || AGTCOUNT=1
-
-       export SHARED_DIRECTORY=${SHARED_DIRECTORY:-$TMP}
-       if [[ $CLIENTCOUNT -gt 1 ]] &&
-               ! check_shared_dir $SHARED_DIRECTORY $CLIENTS; then
-               skip_env "SHARED_DIRECTORY should be accessible"\
-                        "on all client nodes"
-               exit 0
-       fi
-
-       # We used to put the HSM archive in $SHARED_DIRECTORY but that
-       # meant NFS issues could hose sanity-hsm sessions. So now we
-       # use $TMP instead.
-       for n in $(seq $AGTCOUNT); do
-               eval export AGTDEV$n=\$\{AGTDEV$n:-"$TMP/arc$n"\}
-               agent=CLIENT$((n + 1))
-               if [[ -z "${!agent}" ]]; then
-                       [[ $CLIENTCOUNT -eq 1 ]] && agent=CLIENT1 ||
-                               agent=CLIENT2
-               fi
-               eval export agt${n}_HOST=\$\{agt${n}_HOST:-${!agent}\}
-       done
-
-       export SINGLEAGT=${SINGLEAGT:-agt1}
-
-       export HSMTOOL=${HSMTOOL:-"lhsmtool_posix"}
-       export HSMTOOL_VERBOSE=${HSMTOOL_VERBOSE:-""}
-       export HSMTOOL_UPDATE_INTERVAL=${HSMTOOL_UPDATE_INTERVAL:=""}
-       export HSMTOOL_EVENT_FIFO=${HSMTOOL_EVENT_FIFO:=""}
-       export HSMTOOL_TESTDIR
-
-       HSM_ARCHIVE_NUMBER=2
-
-       # The test only support up to 10 MDTs
-       MDT_PREFIX="mdt.$FSNAME-MDT000"
-       HSM_PARAM="${MDT_PREFIX}0.hsm"
-
-       # archive is purged at copytool setup
-       HSM_ARCHIVE_PURGE=true
-
-       # Don't allow copytool error upon start/setup
-       HSMTOOL_NOERROR=false
-}
-
-# Get the backend root path for the given agent facet.
-copytool_device() {
-       local facet=$1
-       local dev=AGTDEV$(facet_number $facet)
-
-       echo -n ${!dev}
-}
-
-get_mdt_devices() {
-       local mdtno
-       # get MDT device for each mdc
-       for mdtno in $(seq 1 $MDSCOUNT); do
-               local idx=$(($mdtno - 1))
-               MDT[$idx]=$($LCTL get_param -n \
-                       mdc.$FSNAME-MDT000${idx}-mdc-*.mds_server_uuid |
-                       awk '{gsub(/_UUID/,""); print $1}' | head -n1)
-       done
-}
-
 search_copytools() {
        local hosts=${1:-$(facet_active_host $SINGLEAGT)}
        do_nodesv $hosts "libtool execute pgrep -x $HSMTOOL"
 }
 
-kill_copytools() {
-       local hosts=${1:-$(facet_active_host $SINGLEAGT)}
-
-       echo "Killing existing copytools on $hosts"
-       do_nodesv $hosts "libtool execute killall -q $HSMTOOL" || true
-       copytool_continue "$hosts"
-}
-
 wait_copytools() {
        local hosts=${1:-$(facet_active_host $SINGLEAGT)}
        local wait_timeout=200
        local wait_start=$SECONDS
        local wait_end=$((wait_start + wait_timeout))
-       local sleep_time=100000 # 0.1 second
+       local sleep_time=1
 
        while ((SECONDS < wait_end)); do
                if ! search_copytools $hosts; then
@@ -169,9 +101,8 @@ wait_copytools() {
                fi
 
                echo "copytools still running on $hosts"
-               usleep $sleep_time
-               [ $sleep_time -lt 32000000 ] && # 3.2 seconds
-                       sleep_time=$(bc <<< "$sleep_time * 2")
+               sleep $sleep_time
+               [ $sleep_time -lt 5 ] && sleep_time=$((sleep_time + 1))
        done
 
        # try to dump Copytool's stack
@@ -198,24 +129,17 @@ copytool_monitor_setup() {
        cmd="cat $test_dir/fifo > $test_dir/events &"
        cmd+=" echo \\\$! > $test_dir/monitor_pid"
 
-       if [[ $PDSH == *Rmrsh* ]]; then
-               # This is required for pdsh -Rmrsh and its handling of remote
-               # shells.
-               # Regular ssh and pdsh -Rssh work fine without this
-               # backgrounded subshell nonsense.
-               (do_node $agent "$cmd") &
-               export HSMTOOL_MONITOR_PDSH=$!
+       # This background subshell nonsense is required when pdsh/ssh decides
+       # to wait for the cat process to exit on the remote client
+       (do_node $agent "$cmd") &
+       export HSMTOOL_MONITOR_PDSH=$!
 
-               # Slightly racy, but just making a best-effort to catch obvious
-               # problems.
-               sleep 1
-               ps -p $HSMTOOL_MONITOR_PDSH > /dev/null ||
-                       error "Failed to start copytool monitor on $agent"
-       else
-               do_node $agent "$cmd"
-               if [ $? != 0 ]; then
-                       error "Failed to start copytool monitor on $agent"
-               fi
+       # Slightly racy, but just making a best-effort to catch obvious
+       # problems.
+       sleep 1
+       do_node $agent "stat $HSMTOOL_MONITOR_DIR/monitor_pid 2>&1 > /dev/null"
+       if [ $? != 0 ]; then
+               error "Failed to start copytool monitor on $agent"
        fi
 }
 
@@ -250,13 +174,6 @@ copytool_suspend() {
        echo "Copytool is suspended on $agents"
 }
 
-copytool_continue() {
-       local agents=${1:-$(facet_active_host $SINGLEAGT)}
-
-       do_nodesv $agents "libtool execute pkill -CONT -x $HSMTOOL" || return 0
-       echo "Copytool is continued on $agents"
-}
-
 copytool_remove_backend() {
        local fid=$1
        local be=$(do_facet $SINGLEAGT find "$(hsm_root)" -name $fid)
@@ -492,7 +409,7 @@ wait_all_done() {
        [[ -n $fid ]] && cmd+=" | grep '$fid'"
        cmd+=" | egrep 'WAITING|STARTED'"
 
-       wait_result $SINGLEMDS "$cmd" "" $timeout ||
+       wait_update_facet --verbose mds1 "$cmd" "" $timeout ||
                error "requests did not complete"
 }