]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
test: pass flags to services
authorMateusz Kusiak <mateusz.kusiak@intel.com>
Fri, 15 Mar 2024 20:03:09 +0000 (16:03 -0400)
committerMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Tue, 18 Jun 2024 10:10:54 +0000 (12:10 +0200)
Commit 4c12714d1ca0 ("test: run tests on system level mdadm") removed
MDADM_NO_SYSTEMCTL flag from test suite. This causes imsm tests to fail
as mdadm no longer triggers mdmon and flags exists only within session.

Use systemd set/unset-environment to pass necessary flags.

Introduce colors to grab users attention to warnings and key messages.

Make test suite setup systemd environment.
Add setup/clean_systemd_env() functions.
Warn user about altering systemd environment.

Add colors to success/fail messages and warnings.

Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
test
tests/func.sh

diff --git a/test b/test
index 47f53ad78b75d51037e44375c6ff78d6e7d51fc1..3a05bc9b556078c797f4019c0dc83aeb44346cfa 100755 (executable)
--- a/test
+++ b/test
@@ -127,7 +127,7 @@ do_test() {
                                dmesg | grep -iq "error\|call trace\|segfault" | grep -v "systemd" &&
                                        die "dmesg prints errors when testing $_basename!"
                        fi
-                       echo "succeeded"
+                       succeed "succeeded\n"
                        _fail=0
                else
                        save_log fail
@@ -315,10 +315,8 @@ parse_args() {
 }
 
 print_warning() {
-       cat <<-EOF
-       Warning! Tests are performed on system level mdadm!
-       If you want to test local build, you need to install it first!
-       EOF
+       warn "Warning! Tests are performed on system level mdadm!\n"
+       echo "If you want to test local build, you need to install it first!"
 }
 
 main() {
index b2e4d122aa7f72cda8013b5ae8932a7fd056d1e1..8c142c76fb2335585f15bf56a8a71be0f4c34676 100644 (file)
@@ -23,6 +23,28 @@ mdsize12=19988
 # ddf needs bigger devices as 32Meg is reserved!
 ddfsize=65536
 
+# Systemd flags
+devname_as_serial_flag="IMSM_DEVNAME_AS_SERIAL=1"
+no_platform_flag="IMSM_NO_PLATFORM=1"
+
+# Common colors
+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}"
+}
+
 # $1 is optional parameter, it shows why to save log
 save_log() {
        status=$1
@@ -36,7 +58,8 @@ save_log() {
        cat /proc/mdstat >> $logdir/$logfile
        array=($(mdadm -Ds | cut -d' ' -f2))
        [ "$1" == "fail" ] &&
-               echo "FAILED - see $logdir/$_basename.log and $logdir/$logfile for details"
+               fail "FAILED"
+               echo " - see $logdir/$_basename.log and $logdir/$logfile for details\n"
        if [ $DEVTYPE == 'lvm' ]
        then
                # not supported lvm type yet
@@ -86,6 +109,7 @@ cleanup() {
                $mdadm --zero ${disks[@]} &> /dev/null
        ;;
        esac
+       clean_systemd_env
 }
 
 do_clean()
@@ -176,11 +200,31 @@ restore_selinux() {
        setenforce $sys_selinux
 }
 
+setup_systemd_env() {
+       warn "Warning! Test suite will set up systemd environment!\n"
+       echo "Use \"systemctl show-environment\" to show systemd environment variables"
+       for env_var in $devname_as_serial_flag $no_platform_flag
+       do
+               systemctl set-environment $env_var
+               echo "Added $env_var" to systemd environment, use \
+                    \"systemctl unset-environment $env_var\" to remove it.
+       done
+}
+
+clean_systemd_env() {
+       for env_var in $devname_as_serial_flag $no_platform_flag
+       do
+               systemctl unset-environment $env_var
+               echo "Removed $env_var from systemd environment."
+       done
+}
+
 do_setup() {
        trap cleanup 0 1 3 15
        trap ctrl_c 2
 
        check_env
+       setup_systemd_env
        [ -d $logdir ] || mkdir -p $logdir
 
        devlist=