Whamcloud - gitweb
LU-15210 tests: fix sanity-lnet to handle duplicate IP
[fs/lustre-release.git] / lustre / tests / sanity-lnet.sh
index df22b37..ce4c27a 100755 (executable)
@@ -56,7 +56,7 @@ fi
 cleanup_testsuite() {
        trap "" EXIT
        # Cleanup any tmp files created by the sub tests
-       rm -f $TMP/sanity-lnet*
+       rm -f $TMP/sanity-lnet-*.yaml $LNET_PARAMS_FILE
        cleanup_netns
        cleanup_lnet
        if $restore_mounts; then
@@ -255,11 +255,15 @@ if [[ -z ${NIDS[@]} ]]; then
        error "No NID configured after module load"
 fi
 
+do_lnetctl net show
+ip a
+
 declare -a INTERFACES
 for ((i = 0; i < ${#NIDS[@]}; i++)); do
        ip=$(sed 's/^\(.*\)@.*$/\1/'<<<${NIDS[i]})
        INTERFACES[i]=$(ip -o a s |
                        awk '$4 ~ /^'$ip'\//{print $2}')
+       INTERFACES=($(echo "${INTERFACES[@]}" | tr ' ' '\n' | uniq | tr '\n' ' '))
        if [[ -z ${INTERFACES[i]} ]]; then
                error "Can't determine interface name for NID ${NIDS[i]}"
        elif [[ 1 -ne $(wc -w <<<${INTERFACES[i]}) ]]; then
@@ -1613,6 +1617,7 @@ test_208() {
        local if0_ip=$(ip --oneline addr show dev ${INTERFACES[0]} |
                       awk '/inet /{print $4}' |
                       sed 's:/.*::')
+       if0_ip=($(echo "${if0_ip[@]}" | tr ' ' '\n' | uniq | tr '\n' ' '))
        local ip2nets_str="tcp(${INTERFACES[0]}) $if0_ip"
 
        echo "Configure single NID \"$ip2nets_str\""
@@ -2050,7 +2055,8 @@ test_230() {
        echo "Check valid values; Should succeed"
        local i
        local lnid
-       for ((i = 4; i < 16; i+=4)); do
+       local cmd
+       for ((i = 4; i < 16; i+=1)); do
                reinit_dlc || return $?
                add_net "tcp" "${INTERFACES[0]}" || return $?
                do_lnetctl net set --all --conns-per-peer $i ||
@@ -2060,7 +2066,20 @@ test_230() {
                lnid="$(lctl list_nids | head -n 1)"
                do_lnetctl ping "$lnid" ||
                        error "failed to ping myself"
-               printf 'network tcp\nconn_list\n' | lctl | grep -c "$lnid" | grep -q $((2+i*2)) ||
+               # "lctl --net tcp conn_list" prints the list of active
+               # connections. Since we're pinging ourselves, there should be
+               # 2 Control connections plus 2*conns_per_peer connections
+               # created (one Bulk Input, one Bulk Output in each pair).
+               # Here's the sample output for conns_per_peer set to 1:
+               # 12345-1.1.1.1@tcp I[0]host01->host01:988 2626560/1061296 nonagle
+               # 12345-1.1.1.1@tcp O[0]host01->host01:1022 2626560/1061488 nonagle
+               # 12345-1.1.1.1@tcp C[0]host01->host01:988 2626560/1061296 nonagle
+               # 12345-1.1.1.1@tcp C[0]host01->host01:1023 2626560/1061488 nonagle
+               cmd="printf 'network tcp\nconn_list\n' | lctl | grep -c '$lnid'"
+
+               # Expect 2+conns_per_peer*2 connections. Wait no longer
+               # than 2 seconds.
+               wait_update $HOSTNAME "$cmd" "$((2+i*2))" 2 ||
                        error "expected number of tcp connections $((2+i*2))"
        done