]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdadm/clustermd_tests: add some APIs in func.sh to support running the tests without...
authorHeming Zhao <heming.zhao@suse.com>
Tue, 9 Jul 2024 12:04:51 +0000 (20:04 +0800)
committerMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Wed, 10 Jul 2024 14:06:17 +0000 (16:06 +0200)
clustermd_tests/func.sh lacks some APIs to run, this patch makes
clustermd_tests runnable from the test suite.

Signed-off-by: Heming Zhao <heming.zhao@suse.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
clustermd_tests/func.sh

index 801d6043de61fc3bc4324925b4f9cbeda06f59f9..e659c0ba4c745a6fe9eb43b7d8abb322b6c01b48 100644 (file)
@@ -1,5 +1,22 @@
 #!/bin/bash
 
+COLOR_FAIL='\033[0;31m' #RED
+COLOR_WARN='\033[1;33m' #YELLOW
+COLOR_SUCCESS='\033[0;32m' #GREEN
+COLOR_NONE='\033[0m'
+
+fail() {
+       printf "${COLOR_FAIL}$1${COLOR_NONE}"
+}
+
+warn() {
+       printf "${COLOR_WARN}$1${COLOR_NONE}"
+}
+
+succeed() {
+       printf "${COLOR_SUCCESS}$1${COLOR_NONE}"
+}
+
 check_ssh()
 {
        NODE1="$(grep '^NODE1' $CLUSTER_CONF | cut -d'=' -f2)"
@@ -151,6 +168,33 @@ stop_md()
        fi
 }
 
+record_system_speed_limit() {
+       system_speed_limit_max=`cat /proc/sys/dev/raid/speed_limit_max`
+       system_speed_limit_min=`cat /proc/sys/dev/raid/speed_limit_min`
+}
+
+# To avoid sync action finishes before checking it, it needs to limit
+# the sync speed
+control_system_speed_limit() {
+       echo $test_speed_limit_min > /proc/sys/dev/raid/speed_limit_min
+       echo $test_speed_limit_max > /proc/sys/dev/raid/speed_limit_max
+}
+
+restore_system_speed_limit() {
+       echo $system_speed_limit_min > /proc/sys/dev/raid/speed_limit_max
+       echo $system_speed_limit_max > /proc/sys/dev/raid/speed_limit_max
+}
+
+record_selinux() {
+       # empty
+       return 0
+}
+
+restore_selinux() {
+       # empty
+       return 0
+}
+
 # $1/optional, it shows why to save log
 save_log()
 {
@@ -240,6 +284,22 @@ check()
                                        die "$ip: check '$2' failed."
                        done
                ;;
+               recovery-remote )
+                       cnt=5
+                       for ip in ${NODES[@]}
+                       do
+                               while ! ssh $ip "grep -sqE 'recovery|REMOTE' /proc/mdstat"
+                               do
+                                       if [ "$cnt" -gt '0' ]
+                                       then
+                                               sleep 0.2
+                                               cnt=$[cnt-1]
+                                       else
+                                               die "$ip: no '$2' happening!"
+                                       fi
+                               done
+                       done
+               ;;
                PENDING | recovery | resync | reshape )
                        cnt=5
                        for ip in ${NODES[@]}