diff --git a/test/TEST-35-ISCSI-MULTI/.shchkdir b/test/TEST-35-ISCSI-MULTI/.shchkdir new file mode 100644 index 00000000..e69de29b diff --git a/test/TEST-35-ISCSI-MULTI/client-init.sh b/test/TEST-35-ISCSI-MULTI/client-init.sh index 5fda27cd..bab846c2 100755 --- a/test/TEST-35-ISCSI-MULTI/client-init.sh +++ b/test/TEST-35-ISCSI-MULTI/client-init.sh @@ -1,125 +1,23 @@ #!/bin/sh -getcmdline() { - while read -r _line || [ -n "$_line" ]; do - printf "%s" "$_line" - done < /proc/cmdline -} +. /lib/dracut-lib.sh -_dogetarg() { - local _o _val _doecho - unset _val - unset _o - unset _doecho - CMDLINE=$(getcmdline) - - for _o in $CMDLINE; do - if [ "${_o%%=*}" = "${1%%=*}" ]; then - if [ -n "${1#*=}" -a "${1#*=*}" != "${1}" ]; then - # if $1 has a "=", we want the exact match - if [ "$_o" = "$1" ]; then - _val="1" - unset _doecho - fi - continue - fi - - if [ "${_o#*=}" = "$_o" ]; then - # if cmdline argument has no "=", we assume "=1" - _val="1" - unset _doecho - continue - fi - - _val="${_o#*=}" - _doecho=1 - fi - done - if [ -n "$_val" ]; then - [ "x$_doecho" != "x" ] && echo "$_val" - return 0 - fi - return 1 -} - -getarg() { - local _deprecated _newoption - while [ $# -gt 0 ]; do - case $1 in - -d) - _deprecated=1 - shift - ;; - -y) - if _dogetarg $2 > /dev/null; then - if [ "$_deprecated" = "1" ]; then - [ -n "$_newoption" ] && warn "Kernel command line option '$2' is deprecated, use '$_newoption' instead." || warn "Option '$2' is deprecated." - fi - echo 1 - return 0 - fi - _deprecated=0 - shift 2 - ;; - -n) - if _dogetarg $2 > /dev/null; then - echo 0 - if [ "$_deprecated" = "1" ]; then - [ -n "$_newoption" ] && warn "Kernel command line option '$2' is deprecated, use '$_newoption=0' instead." || warn "Option '$2' is deprecated." - fi - return 1 - fi - _deprecated=0 - shift 2 - ;; - *) - if [ -z "$_newoption" ]; then - _newoption="$1" - fi - if _dogetarg $1; then - if [ "$_deprecated" = "1" ]; then - [ -n "$_newoption" ] && warn "Kernel command line option '$1' is deprecated, use '$_newoption' instead." || warn "Option '$1' is deprecated." - fi - return 0 - fi - _deprecated=0 - shift - ;; - esac - done - return 1 -} - -getargbool() { - local _b - unset _b - local _default - _default="$1" - shift - _b=$(getarg "$@") - [ $? -ne 0 -a -z "$_b" ] && _b="$_default" - if [ -n "$_b" ]; then - [ $_b = "0" ] && return 1 - [ $_b = "no" ] && return 1 - [ $_b = "off" ] && return 1 - fi - return 0 -} export PATH=/sbin:/bin:/usr/sbin:/usr/bin +command -v plymouth > /dev/null 2>&1 && plymouth --quit exec > /dev/console 2>&1 -strstr() { [ "${1##*"$2"*}" != "$1" ]; } -CMDLINE=$(while read line || [ -n "$line" ]; do echo $line; done < /proc/cmdline) + export TERM=linux export PS1='initramfs-test:\w\$ ' stty sane echo "made it to the rootfs! Powering down." -while read dev fs fstype opts rest || [ -n "$dev" ]; do +while read -r dev _ fstype opts rest || [ -n "$dev" ]; do [ "$fstype" != "ext3" ] && continue echo "iscsi-OK $dev $fstype $opts" | dd oflag=direct,dsync of=/dev/sda break done < /proc/mounts -#sh -i if getargbool 0 rd.shell; then strstr "$(setsid --help)" "control" && CTTY="-c" setsid $CTTY sh -i fi + +sync poweroff -f diff --git a/test/TEST-35-ISCSI-MULTI/create-client-root.sh b/test/TEST-35-ISCSI-MULTI/create-client-root.sh index 228ccbd9..c34ce069 100755 --- a/test/TEST-35-ISCSI-MULTI/create-client-root.sh +++ b/test/TEST-35-ISCSI-MULTI/create-client-root.sh @@ -1,7 +1,7 @@ #!/bin/sh # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do - > "/etc/udev/rules.d/$x" + : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload diff --git a/test/TEST-35-ISCSI-MULTI/create-server-root.sh b/test/TEST-35-ISCSI-MULTI/create-server-root.sh index 40e84215..3b02da85 100755 --- a/test/TEST-35-ISCSI-MULTI/create-server-root.sh +++ b/test/TEST-35-ISCSI-MULTI/create-server-root.sh @@ -1,7 +1,7 @@ #!/bin/sh # don't let udev and this script step on eachother's toes for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do - > "/etc/udev/rules.d/$x" + : > "/etc/udev/rules.d/$x" done rm -f -- /etc/lvm/lvm.conf udevadm control --reload diff --git a/test/TEST-35-ISCSI-MULTI/server-init.sh b/test/TEST-35-ISCSI-MULTI/server-init.sh index 1e0c3ff8..d5372013 100755 --- a/test/TEST-35-ISCSI-MULTI/server-init.sh +++ b/test/TEST-35-ISCSI-MULTI/server-init.sh @@ -12,10 +12,10 @@ wait_for_if_link() { local cnt=0 local li while [ $cnt -lt 600 ]; do - li=$(ip -o link show dev $1 2> /dev/null) + li=$(ip -o link show dev "$1" 2> /dev/null) [ -n "$li" ] && return 0 if [[ $2 ]]; then - li=$(ip -o link show dev $2 2> /dev/null) + li=$(ip -o link show dev "$2" 2> /dev/null) [ -n "$li" ] && return 0 fi sleep 0.1 @@ -28,7 +28,7 @@ wait_for_if_up() { local cnt=0 local li while [ $cnt -lt 200 ]; do - li=$(ip -o link show up dev $1) + li=$(ip -o link show up dev "$1") [ -n "$li" ] && return 0 sleep 0.1 cnt=$((cnt + 1)) @@ -48,7 +48,7 @@ wait_for_route_ok() { } linkup() { - wait_for_if_link $1 2> /dev/null && ip link set $1 up 2> /dev/null && wait_for_if_up $1 2> /dev/null + wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null } wait_for_if_link eth0 ens2 @@ -63,7 +63,7 @@ ip link set dev eth1 name ens3 ip addr add 192.168.51.1/24 dev ens3 linkup ens3 -> /var/lib/dhcpd/dhcpd.leases +: > /var/lib/dhcpd/dhcpd.leases chmod 777 /var/lib/dhcpd/dhcpd.leases dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases & diff --git a/test/TEST-35-ISCSI-MULTI/test.sh b/test/TEST-35-ISCSI-MULTI/test.sh index 434e6d5b..14e05c06 100755 --- a/test/TEST-35-ISCSI-MULTI/test.sh +++ b/test/TEST-35-ISCSI-MULTI/test.sh @@ -8,6 +8,7 @@ else OMIT_NETWORK="network-manager" fi +# shellcheck disable=SC2034 TEST_DESCRIPTION="root filesystem over multiple iSCSI with $USE_NETWORK" KVERSION=${KVERSION-$(uname -r)} @@ -22,20 +23,19 @@ run_server() { # Start server first echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server" - $testdir/run-qemu \ - -drive format=raw,index=0,media=disk,file=$TESTDIR/server.ext3 \ - -drive format=raw,index=1,media=disk,file=$TESTDIR/root.ext3 \ - -drive format=raw,index=2,media=disk,file=$TESTDIR/iscsidisk2.img \ - -drive format=raw,index=3,media=disk,file=$TESTDIR/iscsidisk3.img \ - ${SERIAL:+-serial "$SERIAL"} \ - ${SERIAL:--serial file:"$TESTDIR"/server.log} \ + "$testdir"/run-qemu \ + -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ + -drive format=raw,index=1,media=disk,file="$TESTDIR"/root.ext3 \ + -drive format=raw,index=2,media=disk,file="$TESTDIR"/iscsidisk2.img \ + -drive format=raw,index=3,media=disk,file="$TESTDIR"/iscsidisk3.img \ + -serial "${SERIAL:-"file:$TESTDIR/server.log"}" \ -net nic,macaddr=52:54:00:12:34:56,model=e1000 \ -net nic,macaddr=52:54:00:12:34:57,model=e1000 \ -net socket,listen=127.0.0.1:12331 \ -append "panic=1 systemd.crash_reboot root=/dev/sda2 rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \ - -initrd $TESTDIR/initramfs.server \ - -pidfile $TESTDIR/server.pid -daemonize || return 1 - chmod 644 $TESTDIR/server.pid || return 1 + -initrd "$TESTDIR"/initramfs.server \ + -pidfile "$TESTDIR"/server.pid -daemonize || return 1 + chmod 644 "$TESTDIR"/server.pid || return 1 # Cleanup the terminal if we have one tty -s && stty sane @@ -58,16 +58,16 @@ run_client() { shift echo "CLIENT TEST START: $test_name" - dd if=/dev/zero of=$TESTDIR/client.img bs=1M count=1 + dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1 - $testdir/run-qemu \ - -drive format=raw,index=0,media=disk,file=$TESTDIR/client.img \ + "$testdir"/run-qemu \ + -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img \ -net nic,macaddr=52:54:00:12:34:00,model=e1000 \ -net nic,macaddr=52:54:00:12:34:01,model=e1000 \ -net socket,connect=127.0.0.1:12331 \ -append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \ - -initrd $TESTDIR/initramfs.testing - if ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK $TESTDIR/client.img; then + -initrd "$TESTDIR"/initramfs.testing + if ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK "$TESTDIR"/client.img; then echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]" return 1 fi @@ -132,8 +132,8 @@ test_run() { do_test_run ret=$? if [[ -s $TESTDIR/server.pid ]]; then - kill -TERM $(cat $TESTDIR/server.pid) - rm -f -- $TESTDIR/server.pid + kill -TERM "$(cat "$TESTDIR"/server.pid)" + rm -f -- "$TESTDIR"/server.pid fi return $ret } @@ -145,18 +145,20 @@ test_setup() { fi # Create the blank file to use as a root filesystem - dd if=/dev/zero of=$TESTDIR/root.ext3 bs=1M count=180 - dd if=/dev/zero of=$TESTDIR/iscsidisk2.img bs=1M count=90 - dd if=/dev/zero of=$TESTDIR/iscsidisk3.img bs=1M count=90 + dd if=/dev/zero of="$TESTDIR"/root.ext3 bs=1M count=180 + dd if=/dev/zero of="$TESTDIR"/iscsidisk2.img bs=1M count=90 + dd if=/dev/zero of="$TESTDIR"/iscsidisk3.img bs=1M count=90 kernel=$KVERSION # Create what will eventually be our root filesystem onto an overlay - rm -rf -- $TESTDIR/overlay + rm -rf -- "$TESTDIR"/overlay ( + # shellcheck disable=SC2030 export initdir=$TESTDIR/overlay/source - . $basedir/dracut-init.sh + # shellcheck disable=SC1090 + . "$basedir"/dracut-init.sh ( - cd "$initdir" + cd "$initdir" || exit mkdir -p -- dev sys proc etc var/run tmp mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin for i in bin sbin lib lib64; do @@ -165,21 +167,30 @@ test_setup() { mkdir -p -- var/lib/nfs/rpc_pipefs ) inst_multiple sh shutdown poweroff stty cat ps ln ip \ - mount dmesg mkdir cp ping grep setsid dd + mount dmesg mkdir cp ping grep setsid dd sync for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do [ -f ${_terminfodir}/l/linux ] && break done inst_multiple -o ${_terminfodir}/l/linux inst_simple /etc/os-release + + inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" + inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util" + ln -s dracut-util "${initdir}/usr/bin/dracut-getarg" + ln -s dracut-util "${initdir}/usr/bin/dracut-getargs" + inst ./client-init.sh /sbin/init - cp -a /etc/ld.so.conf* $initdir/etc + cp -a /etc/ld.so.conf* "$initdir"/etc ldconfig -r "$initdir" ) # second, install the files needed to make the root filesystem ( + # shellcheck disable=SC2031 + # shellcheck disable=SC2030 export initdir=$TESTDIR/overlay - . $basedir/dracut-init.sh + # shellcheck disable=SC1090 + . "$basedir"/dracut-init.sh inst_multiple sfdisk mkfs.ext3 poweroff cp umount setsid dd inst_hook initqueue 01 ./create-client-root.sh inst_hook initqueue/finished 01 ./finished-false.sh @@ -189,42 +200,45 @@ test_setup() { # create an initramfs that will create the target root filesystem. # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. - $basedir/dracut.sh -l -i $TESTDIR/overlay / \ + "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -m "dash crypt lvm mdraid udev-rules base rootfs-block fs-lib kernel-modules qemu" \ -d "piix ide-gd_mod ata_piix ext3 sd_mod" \ --no-hostonly-cmdline -N \ - -f $TESTDIR/initramfs.makeroot $KVERSION || return 1 - rm -rf -- $TESTDIR/overlay + -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 + rm -rf -- "$TESTDIR"/overlay # Need this so kvm-qemu will boot (needs non-/dev/zero local disk) - if ! dd if=/dev/zero of=$TESTDIR/client.img bs=1M count=1; then + if ! dd if=/dev/zero of="$TESTDIR"/client.img bs=1M count=1; then echo "Unable to make client sdb image" 1>&2 return 1 fi # Invoke KVM and/or QEMU to actually create the target filesystem. - $testdir/run-qemu \ - -drive format=raw,index=0,media=disk,file=$TESTDIR/root.ext3 \ - -drive format=raw,index=1,media=disk,file=$TESTDIR/client.img \ - -drive format=raw,index=2,media=disk,file=$TESTDIR/iscsidisk2.img \ - -drive format=raw,index=3,media=disk,file=$TESTDIR/iscsidisk3.img \ + "$testdir"/run-qemu \ + -drive format=raw,index=0,media=disk,file="$TESTDIR"/root.ext3 \ + -drive format=raw,index=1,media=disk,file="$TESTDIR"/client.img \ + -drive format=raw,index=2,media=disk,file="$TESTDIR"/iscsidisk2.img \ + -drive format=raw,index=3,media=disk,file="$TESTDIR"/iscsidisk3.img \ -append "root=/dev/fakeroot rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ - -initrd $TESTDIR/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created $TESTDIR/client.img || return 1 - rm -- $TESTDIR/client.img + -initrd "$TESTDIR"/initramfs.makeroot || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/client.img || return 1 + rm -- "$TESTDIR"/client.img # Make server root echo "MAKE SERVER ROOT" - dd if=/dev/zero of=$TESTDIR/server.ext3 bs=1M count=60 + dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=60 - kernel=$KVERSION - rm -rf -- $TESTDIR/overlay + export kernel=$KVERSION + rm -rf -- "$TESTDIR"/overlay ( - mkdir -p $TESTDIR/overlay/source + mkdir -p "$TESTDIR"/overlay/source + # shellcheck disable=SC2031 + # shellcheck disable=SC2030 export initdir=$TESTDIR/overlay/source - . $basedir/dracut-init.sh + # shellcheck disable=SC1090 + . "$basedir"/dracut-init.sh ( - cd "$initdir" + cd "$initdir" || exit mkdir -p dev sys proc etc var/run tmp var/lib/dhcpd /etc/iscsi ) inst /etc/passwd /etc/passwd @@ -248,14 +262,17 @@ test_setup() { inst_multiple /etc/nsswitch.conf /etc/rpc /etc/protocols inst /etc/group /etc/group - cp -a /etc/ld.so.conf* $initdir/etc + cp -a /etc/ld.so.conf* "$initdir"/etc ldconfig -r "$initdir" dracut_kernel_post ) # second, install the files needed to make the root filesystem ( + # shellcheck disable=SC2031 + # shellcheck disable=SC2030 export initdir=$TESTDIR/overlay - . $basedir/dracut-init.sh + # shellcheck disable=SC1090 + . "$basedir"/dracut-init.sh inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd inst_hook initqueue 01 ./create-server-root.sh inst_hook initqueue/finished 01 ./finished-false.sh @@ -265,25 +282,27 @@ test_setup() { # create an initramfs that will create the target root filesystem. # We do it this way so that we do not risk trashing the host mdraid # devices, volume groups, encrypted partitions, etc. - $basedir/dracut.sh -l -i $TESTDIR/overlay / \ + "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -m "dash udev-rules base rootfs-block fs-lib kernel-modules fs-lib qemu" \ -d "piix ide-gd_mod ata_piix ext3 sd_mod" \ --nomdadmconf \ --no-hostonly-cmdline -N \ - -f $TESTDIR/initramfs.makeroot $KVERSION || return 1 + -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1 # Invoke KVM and/or QEMU to actually create the target filesystem. - $testdir/run-qemu \ - -drive format=raw,index=0,media=disk,file=$TESTDIR/server.ext3 \ + "$testdir"/run-qemu \ + -drive format=raw,index=0,media=disk,file="$TESTDIR"/server.ext3 \ -append "root=/dev/dracut/root rw rootfstype=ext3 quiet console=ttyS0,115200n81 selinux=0" \ - -initrd $TESTDIR/initramfs.makeroot || return 1 - grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created $TESTDIR/server.ext3 || return 1 - rm -rf -- $TESTDIR/overlay + -initrd "$TESTDIR"/initramfs.makeroot || return 1 + grep -U --binary-files=binary -F -m 1 -q dracut-root-block-created "$TESTDIR"/server.ext3 || return 1 + rm -rf -- "$TESTDIR"/overlay # Make an overlay with needed tools for the test harness ( + # shellcheck disable=SC2031 export initdir=$TESTDIR/overlay - . $basedir/dracut-init.sh + # shellcheck disable=SC1090 + . "$basedir"/dracut-init.sh inst_multiple poweroff shutdown inst_hook shutdown-emergency 000 ./hard-off.sh inst_hook emergency 000 ./hard-off.sh @@ -291,28 +310,29 @@ test_setup() { ) # Make server's dracut image - $basedir/dracut.sh -l -i $TESTDIR/overlay / \ + "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -a "dash udev-rules base rootfs-block fs-lib debug kernel-modules" \ -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod e1000 drbg" \ --no-hostonly-cmdline -N \ - -f $TESTDIR/initramfs.server $KVERSION || return 1 + -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1 # Make client's dracut image - $basedir/dracut.sh -l -i $TESTDIR/overlay / \ + "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \ -o "dash plymouth dmraid nfs ${OMIT_NETWORK}" \ -a "debug ${USE_NETWORK}" \ -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod" \ --no-hostonly-cmdline -N \ - -f $TESTDIR/initramfs.testing $KVERSION || return 1 + -f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1 - rm -rf -- $TESTDIR/overlay + rm -rf -- "$TESTDIR"/overlay } test_cleanup() { if [[ -s $TESTDIR/server.pid ]]; then - kill -TERM $(cat $TESTDIR/server.pid) - rm -f -- $TESTDIR/server.pid + kill -TERM "$(cat "$TESTDIR"/server.pid)" + rm -f -- "$TESTDIR"/server.pid fi } -. $testdir/test-functions +# shellcheck disable=SC1090 +. "$testdir"/test-functions