Whamcloud - gitweb
LU-10979 test: correct the version code check in sanity-sec.sh
[fs/lustre-release.git] / lustre / tests / sanity-sec.sh
index db4f0aa..dfd07fa 100755 (executable)
@@ -81,18 +81,7 @@ FOPS_IDMAPS=(
 
 check_and_setup_lustre
 
-sec_cleanup() {
-       if [ "$I_MOUNTED" = "yes" ]; then
-               cleanupall -f || error "sec_cleanup"
-       fi
-}
-
-DIR=${DIR:-$MOUNT}
-[ -z "$(echo $DIR | grep $MOUNT)" ] &&
-       error "$DIR not in $MOUNT" && sec_cleanup && exit 1
-
-[ $(echo $MOUNT | wc -w) -gt 1 ] &&
-       echo "NAME=$MOUNT mounted more than once" && sec_cleanup && exit 0
+assert_DIR
 
 # for GSS_SUP
 GSS_REF=$(lsmod | grep ^ptlrpc_gss | awk '{print $3}')
@@ -778,6 +767,66 @@ test_10b() {
 }
 run_test 10b "delete range from the correct nodemap"
 
+test_10c() { #LU-8912
+       [ $(lustre_version_code mgs) -lt $(version_code 2.10.57) ] &&
+               skip "Need MGS >= 2.10.57" && return
+
+       local nm="nodemap_lu8912"
+       local nid_range="10.210.[32-47].[0-255]@o2ib3"
+       local start_nid="10.210.32.0@o2ib3"
+       local end_nid="10.210.47.255@o2ib3"
+       local start_nid_found
+       local end_nid_found
+
+       do_facet mgs $LCTL nodemap_del $nm 2>/dev/null
+       do_facet mgs $LCTL nodemap_add $nm || error "Add $nm failed"
+       do_facet mgs $LCTL nodemap_add_range --name $nm --range $nid_range ||
+               error "Add range $nid_range to $nm failed"
+
+       start_nid_found=$(do_facet mgs $LCTL get_param nodemap.$nm.* |
+               awk -F '[,: ]' /start_nid/'{ print $9 }')
+       [ "$start_nid" == "$start_nid_found" ] ||
+               error "start_nid: $start_nid_found != $start_nid"
+       end_nid_found=$(do_facet mgs $LCTL get_param nodemap.$nm.* |
+               awk -F '[,: ]' /end_nid/'{ print $13 }')
+       [ "$end_nid" == "$end_nid_found" ] ||
+               error "end_nid: $end_nid_found != $end_nid"
+
+       do_facet mgs $LCTL nodemap_del $nm || error "Delete $nm failed"
+       return 0
+}
+run_test 10c "verfify contiguous range support"
+
+test_10d() { #LU-8913
+       [ $(lustre_version_code mgs) -lt $(version_code 2.10.59) ] &&
+               skip "Need MGS >= 2.10.59" && return
+
+       local nm="nodemap_lu8913"
+       local nid_range="*@o2ib3"
+       local start_nid="0.0.0.0@o2ib3"
+       local end_nid="255.255.255.255@o2ib3"
+       local start_nid_found
+       local end_nid_found
+
+       do_facet mgs $LCTL nodemap_del $nm 2>/dev/null
+       do_facet mgs $LCTL nodemap_add $nm || error "Add $nm failed"
+       do_facet mgs $LCTL nodemap_add_range --name $nm --range $nid_range ||
+               error "Add range $nid_range to $nm failed"
+
+       start_nid_found=$(do_facet mgs $LCTL get_param nodemap.$nm.* |
+               awk -F '[,: ]' /start_nid/'{ print $9 }')
+       [ "$start_nid" == "$start_nid_found" ] ||
+               error "start_nid: $start_nid_found != $start_nid"
+       end_nid_found=$(do_facet mgs $LCTL get_param nodemap.$nm.* |
+               awk -F '[,: ]' /end_nid/'{ print $13 }')
+       [ "$end_nid" == "$end_nid_found" ] ||
+               error "end_nid: $end_nid_found != $end_nid"
+
+       do_facet mgs $LCTL nodemap_del $nm || error "Delete $nm failed"
+       return 0
+}
+run_test 10d "verfify nodemap range format '*@<net>' support"
+
 test_11() {
        local rc
 
@@ -978,12 +1027,9 @@ wait_nm_sync() {
        local nodemap_name=$1
        local key=$2
        local value=$3
-       local proc_param="${nodemap_name}.${key}"
-       [ "$nodemap_name" == "active" ] && proc_param="active"
-
+       local opt=$4
+       local proc_param
        local is_active=$(do_facet mgs $LCTL get_param -n nodemap.active)
-       (( is_active == 0 )) && [ "$proc_param" != "active" ] && return
-
        local max_retries=20
        local is_sync
        local out1=""
@@ -991,8 +1037,17 @@ wait_nm_sync() {
        local mgs_ip=$(host_nids_address $mgs_HOST $NETTYPE | cut -d' ' -f1)
        local i
 
+       if [ "$nodemap_name" == "active" ]; then
+               proc_param="active"
+       elif [ -z "$key" ]; then
+               proc_param=${nodemap_name}
+       else
+               proc_param="${nodemap_name}.${key}"
+       fi
+       (( is_active == 0 )) && [ "$proc_param" != "active" ] && return
+
        if [ -z "$value" ]; then
-               out1=$(do_facet mgs $LCTL get_param nodemap.${proc_param})
+               out1=$(do_facet mgs $LCTL get_param $opt nodemap.${proc_param})
                echo "On MGS ${mgs_ip}, ${proc_param} = $out1"
        else
                out1=$value;
@@ -1009,7 +1064,7 @@ wait_nm_sync() {
                        [ $node_ip == $mgs_ip ] && continue
                    fi
 
-                   out2=$(do_node $node_ip $LCTL get_param \
+                   out2=$(do_node $node_ip $LCTL get_param $opt \
                                   nodemap.$proc_param 2>/dev/null)
                    echo "On $node ${node_ip}, ${proc_param} = $out2"
                    [ "$out1" != "$out2" ] && is_sync=false && break
@@ -1438,6 +1493,7 @@ nodemap_test_setup() {
 
        do_facet mgs $LCTL nodemap_modify --name default \
                --property admin --value 1
+       wait_nm_sync default admin_nodemap
        do_facet mgs $LCTL nodemap_modify --name default \
                --property trusted --value 1
        wait_nm_sync default trusted_nodemap
@@ -1451,6 +1507,7 @@ nodemap_test_cleanup() {
 
        do_facet mgs $LCTL nodemap_modify --name default \
                 --property admin --value 0
+       wait_nm_sync default admin_nodemap
        do_facet mgs $LCTL nodemap_modify --name default \
                 --property trusted --value 0
        wait_nm_sync default trusted_nodemap
@@ -1639,6 +1696,7 @@ nodemap_acl_test() {
 }
 
 test_23a() {
+       [ $num_clients -lt 2 ] && skip "Need 2 clients at least" && return
        nodemap_version_check || return 0
        nodemap_test_setup
 
@@ -1838,7 +1896,6 @@ run_test 26 "test transferring very large nodemap"
 
 nodemap_exercise_fileset() {
        local nm="$1"
-       local fileset_on_mgs=""
        local loop=0
 
        # setup
@@ -1857,8 +1914,10 @@ nodemap_exercise_fileset() {
        fileset_test_setup "$nm"
 
        # add fileset info to $nm nodemap
-       do_facet mgs $LCTL set_param nodemap.${nm}.fileset=/$subdir ||
+       if ! combined_mgs_mds; then
+           do_facet mgs $LCTL set_param nodemap.${nm}.fileset=/$subdir ||
                error "unable to add fileset info to $nm nodemap on MGS"
+       fi
        do_facet mgs $LCTL set_param -P nodemap.${nm}.fileset=/$subdir ||
               error "unable to add fileset info to $nm nodemap for servers"
        wait_nm_sync $nm fileset "nodemap.${nm}.fileset=/$subdir"
@@ -1889,13 +1948,14 @@ nodemap_exercise_fileset() {
                error "subdir of fileset not taken into account"
 
        # remove fileset info from nodemap
-       do_facet mgs $LCTL nodemap_set_fileset --name $nm --fileset \'\' ||
+       do_facet mgs $LCTL nodemap_set_fileset --name $nm --fileset clear ||
                error "unable to delete fileset info on $nm nodemap"
        wait_update_facet mgs "$LCTL get_param nodemap.${nm}.fileset" \
-                         "nodemap.${nm}.fileset="
-       do_facet mgs $LCTL set_param -P nodemap.${nm}.fileset=\'\' ||
+                         "nodemap.${nm}.fileset=" ||
+               error "fileset info still not cleared on $nm nodemap"
+       do_facet mgs $LCTL set_param -P nodemap.${nm}.fileset=clear ||
                error "unable to reset fileset info on $nm nodemap"
-       wait_nm_sync $nm fileset
+       wait_nm_sync $nm fileset "nodemap.${nm}.fileset="
 
        # re-mount client
        zconf_umount_clients ${clients_arr[0]} $MOUNT ||
@@ -1904,8 +1964,10 @@ nodemap_exercise_fileset() {
                error "unable to remount client ${clients_arr[0]}"
 
        # test mount point content
-       do_node ${clients_arr[0]} test -d $MOUNT/$subdir ||
-               (ls $MOUNT ; error "fileset not cleared on $nm nodemap")
+       if ! $(do_node ${clients_arr[0]} test -d $MOUNT/$subdir); then
+               ls $MOUNT
+               error "fileset not cleared on $nm nodemap"
+       fi
 
        # back to non-nodemap setup
        if $SHARED_KEY; then
@@ -1928,7 +1990,10 @@ nodemap_exercise_fileset() {
        fi
 }
 
-test_27() {
+test_27a() {
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
+               skip "Need MDS >= 2.11.50" && return
+
        for nm in "default" "c0"; do
                local subdir="subdir_${nm}"
                local subsubdir="subsubdir_${nm}"
@@ -1937,7 +2002,46 @@ test_27() {
                nodemap_exercise_fileset "$nm"
        done
 }
-run_test 27 "test fileset in various nodemaps"
+run_test 27a "test fileset in various nodemaps"
+
+test_27b() { #LU-10703
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
+               skip "Need MDS >= 2.11.50" && return
+       [[ $MDSCOUNT -lt 2 ]] && skip "needs >= 2 MDTs" && return
+
+       nodemap_test_setup
+       trap nodemap_test_cleanup EXIT
+
+       # Add the nodemaps and set their filesets
+       for i in $(seq 1 $MDSCOUNT); do
+               do_facet mgs $LCTL nodemap_del nm$i 2>/dev/null
+               do_facet mgs $LCTL nodemap_add nm$i ||
+                       error "add nodemap nm$i failed"
+               wait_nm_sync nm$i "" "" "-N"
+
+               if ! combined_mgs_mds; then
+                       do_facet mgs \
+                               $LCTL set_param nodemap.nm$i.fileset=/dir$i ||
+                               error "set nm$i.fileset=/dir$i failed on MGS"
+               fi
+               do_facet mgs $LCTL set_param -P nodemap.nm$i.fileset=/dir$i ||
+                       error "set nm$i.fileset=/dir$i failed on servers"
+               wait_nm_sync nm$i fileset "nodemap.nm$i.fileset=/dir$i"
+       done
+
+       # Check if all the filesets are correct
+       for i in $(seq 1 $MDSCOUNT); do
+               fileset=$(do_facet mds$i \
+                         $LCTL get_param -n nodemap.nm$i.fileset)
+               [ "$fileset" = "/dir$i" ] ||
+                       error "nm$i.fileset $fileset != /dir$i on mds$i"
+               do_facet mgs $LCTL nodemap_del nm$i ||
+                       error "delete nodemap nm$i failed"
+       done
+
+       nodemap_test_cleanup
+}
+run_test 27b "The new nodemap won't clear the old nodemap's fileset"
 
 test_28() {
        if ! $SHARED_KEY; then
@@ -2050,7 +2154,6 @@ sec_unsetup() {
 }
 sec_unsetup
 
-sec_cleanup
-
 complete $SECONDS
+check_and_cleanup_lustre
 exit_status