Whamcloud - gitweb
LU-7044 test: Skip sanityn test_77e/77f/77g
[fs/lustre-release.git] / lustre / tests / sanityn.sh
index 5f5a3bb..19a7c31 100755 (executable)
@@ -3045,10 +3045,14 @@ tbf_rule_operate()
        do_facet $facet lctl set_param \
                ost.OSS.ost_io.nrs_tbf_rule="$*"
        [ $? -ne 0 ] &&
-               error "failed to operate on TBF rules"
+               error "failed to run operate '$*' on TBF rules"
 }
 
 test_77e() {
+       local server_version=$(lustre_version_code ost1)
+       [[ $server_version -ge $(version_code 2.7.58) ]] ||
+               { skip "Need server version newer than 2.7.57"; return 0; }
+
        oss=$(comma_list $(osts_nodes))
 
        do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="tbf\ nid"
@@ -3091,6 +3095,10 @@ test_77e() {
 run_test 77e "check TBF NID nrs policy"
 
 test_77f() {
+       local server_version=$(lustre_version_code ost1)
+       [[ $server_version -ge $(version_code 2.7.58) ]] ||
+               { skip "Need server version newer than 2.7.57"; return 0; }
+
        oss=$(comma_list $(osts_nodes))
 
        # Configure jobid_var
@@ -3146,6 +3154,10 @@ test_77f() {
 run_test 77f "check TBF JobID nrs policy"
 
 test_77g() {
+       local server_version=$(lustre_version_code ost1)
+       [[ $server_version -ge $(version_code 2.7.58) ]] ||
+               { skip "Need server version newer than 2.7.57"; return 0; }
+
        oss=$(comma_list $(osts_nodes))
 
        do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="tbf\ nid"
@@ -3209,6 +3221,81 @@ test_77h() {
 }
 run_test 77h "Wrong policy name should report error, not LBUG"
 
+tbf_rule_check()
+{
+       local facet=$1
+       local expected=$2
+       local error_message=$3
+       local rule_number=0
+       for rule in $expected; do
+               rule_number=$((rule_number + 1))
+       done
+       local stop_line=$(($rule_number + 3))
+       local awk_command="awk 'NR >= 4 && NR <= $stop_line {print \$1}'"
+
+       local output=$(do_facet $facet lctl get_param \
+               ost.OSS.ost_io.nrs_tbf_rule |
+               eval $awk_command |
+               tr "\n" " " |
+               sed 's/[ ]*$//')
+       if [ "$output" != "$expected" ]; then
+               error "$error_message, expected '$expected', got '$output'"
+       fi
+}
+
+test_77i() {
+    [ $(lustre_version_code ost1) -ge $(version_code 2.8.55) ] ||
+               { skip "Need OST version at least 2.8.55"; return 0; }
+
+       for i in $(seq 1 $OSTCOUNT)
+       do
+               do_facet ost"$i" lctl set_param \
+                       ost.OSS.ost_io.nrs_policies="tbf\ jobid"
+               [ $? -ne 0 ] &&
+                       error "failed to set TBF policy"
+       done
+
+       tbf_rule_check ost1 "default" "error before inserting any rule"
+
+       tbf_rule_operate ost1 "start\ before\ jobid={jobid}\ rate=1000"
+       tbf_rule_check ost1 "before default" \
+               "error when inserting rule 'before'"
+
+       tbf_rule_operate ost1 "start\ after\ jobid={jobid}\ rate=1000\ rank=default"
+       tbf_rule_check ost1 "before after default" \
+               "error when inserting rule 'after'"
+
+       tbf_rule_operate ost1 "start\ target\ jobid={jobid}\ rate=1000\ rank=after"
+       tbf_rule_check ost1 "before target after default" \
+               "error when inserting rule 'target'"
+
+       echo "Move before itself"
+       tbf_rule_operate ost1 "change\ target\ rank=target"
+       tbf_rule_check ost1 "before target after default" \
+               "error when moving before itself"
+
+       echo "Move to higher rank"
+       tbf_rule_operate ost1 "change\ target\ rank=before"
+       tbf_rule_check ost1 "target before after default" \
+               "error when moving to higher rank"
+
+       echo "Move to lower rank"
+       tbf_rule_operate ost1 "change\ target\ rank=after"
+       tbf_rule_check ost1 "before target after default" \
+               "error when moving to lower rank"
+
+       echo "Move before default"
+       tbf_rule_operate ost1 "change\ target\ rank=default"
+       tbf_rule_check ost1 "before after target default" \
+               error "error when moving before default"
+
+       # Cleanup the TBF policy
+       do_nodes $(comma_list $(osts_nodes)) \
+               $LCTL set_param ost.OSS.ost_io.nrs_policies=fifo
+       return 0
+}
+run_test 77i "Change rank of TBF rule"
+
 test_78() { #LU-6673
        local rc