#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on ext4 filesystem"
"$testdir"/run-qemu -nic none \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
- test_marker_check || return 1
+ test_marker_check
}
test_setup() {
# create root filesystem
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync
mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on a btrfs filesystem with /usr subvolume"
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE $client_opts" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
if ! test_marker_check; then
echo "CLIENT TEST END: $test_name [FAILED]"
}
test_run() {
- client_run "no option specified" || return 1
- client_run "readonly root" "ro" || return 1
- client_run "writeable root" "rw" || return 1
+ client_run "no option specified"
+ client_run "readonly root" "ro"
+ client_run "writeable root" "rw"
}
test_setup() {
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-i ./fstab /etc/fstab \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# second, install the files needed to make the root filesystem
--add-confdir test-makeroot \
-I "mkfs.btrfs" \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
# Create the blank file to use as a root filesystem
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
if ! test_marker_check dracut-root-block-created; then
echo "Could not create root filesystem"
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="UEFI boot (ukify, kernel-install)"
-drive file=fat:rw:"$TESTDIR"/ESP,format=vvfat,label=EFI \
-global driver=cfi.pflash01,property=secure,value=on \
-drive if=pflash,format=raw,unit=0,file="$(ovmf_code)",readonly=on
- test_marker_check || return 1
+ test_marker_check
}
test_run() {
- client_run "UEFI with UKI and squashfs root" || return 1
+ client_run "UEFI with UKI and squashfs root"
}
test_setup() {
# Create what will eventually be our root filesystem
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- "$TESTDIR"/tmp-initramfs.root "$KVERSION" || return 1
+ "$TESTDIR"/tmp-initramfs.root "$KVERSION"
mksquashfs "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/squashfs.img -quiet -no-progress
#!/usr/bin/env bash
+set -e
[ -z "$TEST_FSTYPE" ] && TEST_FSTYPE="ext4"
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE ro $client_opts " \
- -initrd "$TESTDIR"/initramfs.testing || return 1
- test_marker_check || return 1
+ -initrd "$TESTDIR"/initramfs.testing
+ test_marker_check
echo "CLIENT TEST END: $test_name [OK]"
}
test_run() {
# ignore crypttab with rd.luks.crypttab=0 and RAID with rd.md=0
- client_run "$TEST_FSTYPE" "disk" "rd.auto=1 rd.luks.crypttab=0 rd.md=0" || return 1
+ client_run "$TEST_FSTYPE" "disk" "rd.auto=1 rd.luks.crypttab=0 rd.md=0"
# LVM-THIN
if [ -n "$USE_LVM" ]; then
- client_run "$TEST_FSTYPE" "disk-thin" "rd.auto=1 rd.luks.crypttab=0 rd.md=0" || return 1
+ client_run "$TEST_FSTYPE" "disk-thin" "rd.auto=1 rd.luks.crypttab=0 rd.md=0"
fi
# ignore crypttab with rd.luks.crypttab=0
if [ -n "$HAVE_RAID" ]; then
- client_run "raid" "raid" "rd.auto=1 rd.luks.crypttab=0" || return 1
- client_run "degraded raid" "raid" "rd.auto=1 rd.luks.crypttab=0" || return 1
+ client_run "raid" "raid" "rd.auto=1 rd.luks.crypttab=0"
+ client_run "degraded raid" "raid" "rd.auto=1 rd.luks.crypttab=0"
fi
# for encrypted test run - use raid-crypt.img drives instead of raid.img drives
if [ -n "$HAVE_CRYPT" ] && [ -n "$HAVE_RAID" ]; then
- client_run "raid crypt" "raid-crypt" "rd.auto=1 " || return 1
- client_run "degraded raid crypt" "raid-crypt" "rd.auto=1 " || return 1
+ client_run "raid crypt" "raid-crypt" "rd.auto=1 "
+ client_run "degraded raid crypt" "raid-crypt" "rd.auto=1 "
read -r LUKS_UUID < "$TESTDIR"/luksuuid
read -r MD_UUID < "$TESTDIR"/mduuid
- client_run "degraded raid crypt" "raid-crypt" "rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.md.conf=0 rd.lvm.vg=dracut" || return 1
- client_run "degraded raid crypt" "raid-crypt" "rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.vg=dracut" || return 1
- client_run "degraded raid crypt" "raid-crypt" "rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.lv=dracut/root" || return 1
+ client_run "degraded raid crypt" "raid-crypt" "rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.md.conf=0 rd.lvm.vg=dracut"
+ client_run "degraded raid crypt" "raid-crypt" "rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.vg=dracut"
+ client_run "degraded raid crypt" "raid-crypt" "rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.lv=dracut/root"
fi
}
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot quiet console=ttyS0,115200n81 $client_opts " \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
echo "MAKEROOT END: $test_name [OK]"
}
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# pass enviroment variables to make the root filesystem
$(if command -v cryptsetup > /dev/null; then echo "-a crypt -I cryptsetup"; fi) \
$(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE} --add-drivers ${TEST_FSTYPE}"; fi) \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
# LVM
- test_makeroot "$TEST_FSTYPE" "disk" "rd.md=0 rd.luks=0" || return 1
+ test_makeroot "$TEST_FSTYPE" "disk" "rd.md=0 rd.luks=0"
# LVM-THIN
if [ -n "$USE_LVM" ]; then
- test_makeroot "$TEST_FSTYPE" "disk-thin" "rd.md=0 rd.luks=0 test.thin" || return 1
+ test_makeroot "$TEST_FSTYPE" "disk-thin" "rd.md=0 rd.luks=0 test.thin"
fi
if [ -n "$HAVE_RAID" ]; then
- test_makeroot "raid" "raid" "rd.luks=0" || return 1
+ test_makeroot "raid" "raid" "rd.luks=0"
fi
# for encrypted test run - use raid-crypt.img drives instead of raid.img drives
if [ -n "$HAVE_CRYPT" ] && [ -n "$HAVE_RAID" ]; then
- test_makeroot "raid-crypt" "raid-crypt" " " || return 1
+ test_makeroot "raid-crypt" "raid-crypt" " "
eval "$(grep -F --binary-files=text -m 1 MD_UUID "$TESTDIR"/marker.img)"
echo "$MD_UUID" > "$TESTDIR"/mduuid
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on LVM PV on a isw dmraid"
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE $* root=LABEL=root" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
if ! test_marker_check; then
echo "CLIENT TEST END: $* [FAIL]"
return 1
fi
- client_run rd.auto rd.md.imsm=0 || return 1
- client_run rd.md.uuid="$MD_UUID" rd.dm=0 || return 1
+ client_run rd.auto rd.md.imsm=0
+ client_run rd.md.uuid="$MD_UUID" rd.dm=0
# This test succeeds, because the mirror parts are found without
# assembling the mirror itself, which is what we want
client_run rd.md.uuid="$MD_UUID" rd.md=0 rd.md.imsm failme && return 1
client_run rd.md.uuid="$MD_UUID" rd.md=0 failme && return 1
# the following test hangs on newer md
- client_run rd.md.uuid="$MD_UUID" rd.dm=0 rd.md.imsm rd.md.conf=0 || return 1
+ client_run rd.md.uuid="$MD_UUID" rd.dm=0 rd.md.imsm rd.md.conf=0
return 0
}
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# second, install the files needed to make the root filesystem
-d "piix ide-gd_mod ata_piix ext4 sd_mod dm-multipath dm-crypt dm-round-robin faulty linear multipath raid0 raid10 raid1 raid456" \
-I "grep sfdisk realpath" \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
# Create the blank files to use as a root filesystem
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
eval "$(grep -F --binary-files=text -m 1 MD_UUID "$TESTDIR"/marker.img)"
if [[ -z $MD_UUID ]]; then
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on LVM on encrypted partitions of a RAID"
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root ro rd.auto rootwait $LUKSARGS" \
-initrd "$TESTDIR"/initramfs.testing
- test_marker_check || return 1
+ test_marker_check
echo "CLIENT TEST END: [OK]"
test_marker_reset
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE root=/dev/dracut/root rd.auto" \
-initrd "$TESTDIR"/initramfs.testing
- test_marker_check || return 1
+ test_marker_check
echo "CLIENT TEST END: [OK]"
return 0
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# second, install the files needed to make the root filesystem
-a "bash crypt lvm mdraid" \
-I "grep cryptsetup" \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
# Create the blank files to use as a root filesystem
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
cryptoUUIDS=$(grep -F --binary-files=text -m 3 ID_FS_UUID "$TESTDIR"/marker.img)
for uuid in $cryptoUUIDS; do
eval "$uuid"
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="live root on a squash filesystem"
}
test_run() {
- client_run "overlayfs" "" || return 1
+ client_run "overlayfs" ""
- client_run "live" "rd.live.image" || return 1
- client_run "livedir" "rd.live.image rd.live.dir=LiveOS" || return 1
+ client_run "live" "rd.live.image"
+ client_run "livedir" "rd.live.image rd.live.dir=LiveOS"
# Run the erofs test only if mkfs.erofs is available
if command -v mkfs.erofs &> /dev/null; then
- client_run "erofs" "root=live:/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_erofs" || return 1
+ client_run "erofs" "root=live:/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_root_erofs"
fi
# Run the iso test only if xorriso is available
if command -v xorriso &> /dev/null; then
- client_run "iso" "iso-scan/filename=linux.iso root=live:/dev/disk/by-label/ISO" || return 1
+ client_run "iso" "iso-scan/filename=linux.iso root=live:/dev/disk/by-label/ISO"
fi
test_marker_reset
rootPartitions=$(sfdisk -d "$TESTDIR"/root.img | grep -c 'root\.img[0-9]')
- [ "$rootPartitions" -eq 1 ] || return 1
+ [ "$rootPartitions" -eq 1 ]
- client_run "autooverlay" "init=/sbin/init-persist rd.live.image rd.live.overlay=LABEL=persist rd.live.dir=LiveOS" || return 1
+ client_run "autooverlay" "init=/sbin/init-persist rd.live.image rd.live.overlay=LABEL=persist rd.live.dir=LiveOS"
rootPartitions=$(sfdisk -d "$TESTDIR"/root.img | grep -c 'root\.img[0-9]')
- [ "$rootPartitions" -eq 2 ] || return 1
+ [ "$rootPartitions" -eq 2 ]
(
# Ensure that this test works when run with the `V=1` parameter, which runs the script with `set -o pipefail`.
# Verify that the string "dracut-autooverlay-success" occurs in the second partition in the image file.
dd if="$TESTDIR"/root.img bs=1MiB status=none \
| grep -U --binary-files=binary -F -m 1 -q dracut-autooverlay-success
- ) || return 1
+ )
return 0
}
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-i ./test-init.sh /sbin/init-persist \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/rootfs && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/rootfs && rm -rf "$TESTDIR"/dracut.*
# test to make sure /proc /sys and /dev is not needed inside the generated initrd
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on a ext4 filesystem"
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE \"root=LABEL= rdinit=/bin/sh\" systemd.log_target=console init=/sbin/init" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
- test_marker_check || return 1
+ test_marker_check
}
test_setup() {
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# second, install the files needed to make the root filesystem
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
declare -a disk_args=()
# shellcheck disable=SC2034 # disk_index used in qemu_add_drive
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
# systemd-analyze.sh calls man indirectly
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="Full systemd serialization/deserialization test with /usr mount"
"$testdir"/run-qemu \
"${disk_args[@]}" ${smbios:+-smbios "${smbios}"} \
-append "$TEST_KERNEL_CMDLINE mount.usr=LABEL=dracutusr mount.usrflags=subvol=usr $client_opts $DEBUGOUT" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
if ! test_marker_check; then
echo "CLIENT TEST END: $test_name [FAILED]"
test_run() {
# mask services that require rw
- client_run "readonly root" "" "ro systemd.mask=systemd-sysusers systemd.mask=systemd-timesyncd systemd.mask=systemd-resolved" || return 1
+ client_run "readonly root" "" "ro systemd.mask=systemd-sysusers systemd.mask=systemd-timesyncd systemd.mask=systemd-resolved"
- client_run "writeable root" "" "rw" || return 1
+ client_run "writeable root" "" "rw"
# shellcheck source=$TESTDIR/luks.uuid
. "$TESTDIR"/luks.uuid
if "$testdir"/run-qemu --supports -smbios; then
# luks
client_run "encrypted root with rd.luks.uuid" "type=11,value=io.systemd.credential:key=test" \
- "rw root=LABEL=dracut_crypt rd.luks.uuid=$ID_FS_UUID rd.luks.key=/run/credentials/@system/key" || return 1
+ "rw root=LABEL=dracut_crypt rd.luks.uuid=$ID_FS_UUID rd.luks.key=/run/credentials/@system/key"
client_run "encrypted root with rd.luks.name" "type=11,value=io.systemd.credential:key=test" \
- "rw root=/dev/mapper/crypt rd.luks.name=$ID_FS_UUID=crypt rd.luks.key=/run/credentials/@system/key" || return 1
+ "rw root=/dev/mapper/crypt rd.luks.name=$ID_FS_UUID=crypt rd.luks.key=/run/credentials/@system/key"
else
echo "CLIENT TEST: encrypted root with rd.luks.uuid [SKIPPED]"
echo "CLIENT TEST: encrypted root with rd.luks.name [SKIPPED]"
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-a "$dracut_modules" \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && cp -a "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
-a "btrfs crypt" \
-I "mkfs.btrfs cryptsetup" \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
# Create the blank file to use as a root filesystem
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img > "$TESTDIR"/luks.uuid
#!/usr/bin/env bash
+set -e
+
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on a ext4 filesystem with systemd but without dracut-systemd"
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE $client_opts" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
if ! test_marker_check; then
echo "CLIENT TEST END: $test_name [FAILED]"
}
test_run() {
- client_run "readonly root" "ro" || return 1
- client_run "writeable root" "rw" || return 1
+ client_run "readonly root" "ro"
+ client_run "writeable root" "rw"
}
test_setup() {
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# second, install the files needed to make the root filesystem
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
declare -a disk_args=()
# shellcheck disable=SC2034 # disk_index used in qemu_add_drive
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
# initrd for test infra and required kernel modules
# verify that dracut systemd services are not included
(
- cd "$TESTDIR"/initrd/dracut.*/initramfs/usr/lib/systemd/system/ || return 1
+ cd "$TESTDIR"/initrd/dracut.*/initramfs/usr/lib/systemd/system/
for f in dracut*.service; do
[ -e "$f" ] && echo "unexpected dracut service found: $f" && return 1
done
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="kernel-install with root filesystem on ext4 filesystem"
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE" \
- -initrd "$BOOT_ROOT/$TOKEN/$KVERSION"/initrd || return 1
+ -initrd "$BOOT_ROOT/$TOKEN/$KVERSION"/initrd
- test_marker_check || return 1
+ test_marker_check
test_marker_reset
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "$TEST_KERNEL_CMDLINE" \
- -initrd "$BOOT_ROOT/$TOKEN"/0-rescue/initrd || return 1
+ -initrd "$BOOT_ROOT/$TOKEN"/0-rescue/initrd
- test_marker_check || return 1
+ test_marker_check
}
test_setup() {
# shellcheck disable=SC2153
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync
mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on NFS with $USE_NETWORK"
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-append "panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
- -pidfile "$TESTDIR"/server.pid -daemonize || return 1
- chmod 644 "$TESTDIR"/server.pid || return 1
+ -pidfile "$TESTDIR"/server.pid -daemonize
+ chmod 644 "$TESTDIR"/server.pid
if ! [[ $SERIAL ]]; then
- wait_for_server_startup || return 1
+ wait_for_server_startup
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
# NFSv4: last octet starts at 0x80 and works up
client_test "NFSv3 root=dhcp DHCP path only" 52:54:00:12:34:00 \
- "root=dhcp" 192.168.50.1 -wsize=4096 || return 1
+ "root=dhcp" 192.168.50.1 -wsize=4096
client_test "NFSv3 Legacy root=/dev/nfs nfsroot=IP:path" 52:54:00:12:34:01 \
- "root=/dev/nfs nfsroot=192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096 || return 1
+ "root=/dev/nfs nfsroot=192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096
client_test "NFSv3 Legacy root=/dev/nfs DHCP path only" 52:54:00:12:34:00 \
- "root=/dev/nfs" 192.168.50.1 -wsize=4096 || return 1
+ "root=/dev/nfs" 192.168.50.1 -wsize=4096
client_test "NFSv3 Legacy root=/dev/nfs DHCP IP:path" 52:54:00:12:34:01 \
- "root=/dev/nfs" 192.168.50.2 -wsize=4096 || return 1
+ "root=/dev/nfs" 192.168.50.2 -wsize=4096
client_test "NFSv3 root=dhcp DHCP IP:path" 52:54:00:12:34:01 \
- "root=dhcp" 192.168.50.2 -wsize=4096 || return 1
+ "root=dhcp" 192.168.50.2 -wsize=4096
client_test "NFSv3 root=dhcp DHCP proto:IP:path" 52:54:00:12:34:02 \
- "root=dhcp" 192.168.50.3 -wsize=4096 || return 1
+ "root=dhcp" 192.168.50.3 -wsize=4096
client_test "NFSv3 root=dhcp DHCP proto:IP:path:options" 52:54:00:12:34:03 \
- "root=dhcp" 192.168.50.3 wsize=4096 || return 1
+ "root=dhcp" 192.168.50.3 wsize=4096
client_test "NFSv3 root=nfs:..." 52:54:00:12:34:04 \
- "root=nfs:192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096 || return 1
+ "root=nfs:192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096
client_test "NFSv3 Bridge root=nfs:..." 52:54:00:12:34:04 \
- "root=nfs:192.168.50.1:/nfs/client bridge net.ifnames=0" 192.168.50.1 -wsize=4096 || return 1
+ "root=nfs:192.168.50.1:/nfs/client bridge net.ifnames=0" 192.168.50.1 -wsize=4096
client_test "NFSv3 Legacy root=IP:path" 52:54:00:12:34:04 \
- "root=192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096 || return 1
+ "root=192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096
client_test "NFSv3 root=dhcp DHCP path,options" 52:54:00:12:34:05 \
- "root=dhcp" 192.168.50.1 wsize=4096 || return 1
+ "root=dhcp" 192.168.50.1 wsize=4096
client_test "NFSv3 root=dhcp DHCP IP:path,options" 52:54:00:12:34:06 \
- "root=dhcp" 192.168.50.2 wsize=4096 || return 1
+ "root=dhcp" 192.168.50.2 wsize=4096
client_test "NFSv3 root=dhcp DHCP proto:IP:path,options" 52:54:00:12:34:07 \
- "root=dhcp" 192.168.50.3 wsize=4096 || return 1
+ "root=dhcp" 192.168.50.3 wsize=4096
# TODO FIXME
# client_test "NFSv3 Bridge Customized root=dhcp DHCP path,options" 52:54:00:12:34:05 \
- # "root=dhcp bridge=foobr0:enp0s1" 192.168.50.1 wsize=4096 || return 1
+ # "root=dhcp bridge=foobr0:enp0s1" 192.168.50.1 wsize=4096
return 0
}
# switch_root
client_test "NFSv4 root=dhcp DHCP proto:IP:path" 52:54:00:12:34:82 \
- "root=dhcp" 192.168.50.3 -wsize=4096 || return 1
+ "root=dhcp" 192.168.50.3 -wsize=4096
client_test "NFSv4 root=dhcp DHCP proto:IP:path:options" 52:54:00:12:34:83 \
- "root=dhcp" 192.168.50.3 wsize=4096 || return 1
+ "root=dhcp" 192.168.50.3 wsize=4096
client_test "NFSv4 root=nfs4:..." 52:54:00:12:34:84 \
- "root=nfs4:192.168.50.1:/client" 192.168.50.1 -wsize=4096 || return 1
+ "root=nfs4:192.168.50.1:/client" 192.168.50.1 -wsize=4096
client_test "NFSv4 root=dhcp DHCP proto:IP:path,options" 52:54:00:12:34:87 \
- "root=dhcp" 192.168.50.3 wsize=4096 || return 1
+ "root=dhcp" 192.168.50.3 wsize=4096
client_test "NFSv4 Overlayfs root=nfs4:..." 52:54:00:12:34:84 \
- "root=nfs4:192.168.50.1:/client rd.live.overlay.overlayfs=1 " 192.168.50.1 -wsize=4096 || return 1
+ "root=nfs4:192.168.50.1:/client rd.live.overlay.overlayfs=1 " 192.168.50.1 -wsize=4096
client_test "NFSv4 Live Overlayfs root=nfs4:..." 52:54:00:12:34:84 \
- "root=nfs4:192.168.50.1:/client rd.live.image rd.live.overlay.overlayfs=1" 192.168.50.1 -wsize=4096 || return 1
+ "root=nfs4:192.168.50.1:/client rd.live.image rd.live.overlay.overlayfs=1" 192.168.50.1 -wsize=4096
return 0
}
-d "piix ide-gd_mod ata_piix ext4 sd_mod" \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/server
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
# Make an overlay with needed tools for the test harness
(
-a "network-legacy ${SERVER_DEBUG:+debug}" \
-d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod i6300esb virtio_net" \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.server "$KVERSION"
}
test_cleanup() {
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on NFS with multiple nics with $USE_NETWORK"
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
- -pidfile "$TESTDIR"/server.pid -daemonize || return 1
+ -pidfile "$TESTDIR"/server.pid -daemonize
- chmod 644 -- "$TESTDIR"/server.pid || return 1
+ chmod 644 -- "$TESTDIR"/server.pid
if ! [[ $SERIAL ]]; then
- wait_for_server_startup || return 1
+ wait_for_server_startup
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
-device virtio-net-pci,netdev=n1,mac=52:54:00:12:34:98 \
-device virtio-net-pci,netdev=n2,mac=52:54:00:12:34:99 \
-append "$TEST_KERNEL_CMDLINE $cmdline ro init=/sbin/init systemd.log_target=console" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
{
read -r OK
client_test "MULTINIC root=nfs BOOTIF=" \
00 01 02 \
"root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
- "lan0" || return 1
+ "lan0"
client_test "MULTINIC root=nfs BOOTIF= ip=lan2:dhcp" \
00 01 02 \
"root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00 ip=lan1:dhcp" \
- "lan0 lan1" || return 1
+ "lan0 lan1"
# PXE Style BOOTIF= with dhcp root-path
client_test "MULTINIC root=dhcp BOOTIF=" \
00 01 02 \
"root=dhcp BOOTIF=52-54-00-12-34-02" \
- "lan2" || return 1
+ "lan2"
# Multinic case, where only one nic works
client_test "MULTINIC root=nfs ip=dhcp" \
FF 00 FE \
"root=nfs:192.168.50.1:/nfs/client ip=dhcp" \
- "lan0" || return 1
+ "lan0"
# Require two interfaces
client_test "MULTINIC root=nfs ip=lan1:dhcp ip=lan2:dhcp bootdev=lan1" \
00 01 02 \
"root=nfs:192.168.50.1:/nfs/client ip=lan1:dhcp ip=lan2:dhcp bootdev=lan1" \
- "lan1 lan2" || return 1
+ "lan1 lan2"
# Require three interfaces with dhcp root-path
client_test "MULTINIC root=dhcp ip=lan0:dhcp ip=lan1:dhcp ip=lan2:dhcp bootdev=lan2" \
00 01 02 \
"root=dhcp ip=lan0:dhcp ip=lan1:dhcp ip=lan2:dhcp bootdev=lan2" \
- "lan0 lan1 lan2" || return 1
+ "lan0 lan1 lan2"
client_test "MULTINIC bonding" \
00 01 02 \
"root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp bond=bond0:lan0,lan1,lan2:mode=balance-rr" \
- "bond0" || return 1
+ "bond0"
# bridge, where only one interface is actually connected
client_test "MULTINIC bridging" \
00 01 02 \
"root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp::52:54:00:12:34:00 bridge=bridge0:lan0,lan98,lan99" \
- "bridge0" || return 1
+ "bridge0"
return 0
}
-d "piix ide-gd_mod ata_piix ext4 sd_mod" \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
# Make an overlay with needed tools for the test harness
(
-m "bash rootfs-block kernel-modules watchdog qemu network-legacy ${SERVER_DEBUG:+debug}" \
-d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd i6300esb virtio_net" \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.server "$KVERSION"
}
#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on NFS with bridging/bonding/vlan with $USE_NETWORK"
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-append "panic=1 oops=panic softlockup_panic=1 root=LABEL=dracut rootfstype=ext4 rw console=ttyS0,115200n81" \
-initrd "$TESTDIR"/initramfs.server \
- -pidfile "$TESTDIR"/server.pid -daemonize || return 1
- chmod 644 -- "$TESTDIR"/server.pid || return 1
+ -pidfile "$TESTDIR"/server.pid -daemonize
+ chmod 644 -- "$TESTDIR"/server.pid
if ! [[ $SERIAL ]]; then
- wait_for_server_startup || return 1
+ wait_for_server_startup
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
ifname=net5:52:54:00:12:34:05
$cmdline rd.net.timeout.dhcp=30
rw init=/sbin/init" \
- -initrd "$TESTDIR"/initramfs.testing || return 1
+ -initrd "$TESTDIR"/initramfs.testing
{
read -r OK _
[[ $line == END ]] && break
CONF+="$line "
done
- } < "$TESTDIR"/client.img || return 1
+ } < "$TESTDIR"/client.img
if [[ $check != "$CONF" ]]; then
echo "Expected: '$check'"
root=nfs:192.168.50.1:/nfs/client
bootdev=net1
" \
- "net1 net2.0004 net2.3 vlan0001 vlan2 PING1=0 PING2=0 PING3=0 PING4=0 PING5=0 ${NETCONF}EOF " \
- || return 1
+ "net1 net2.0004 net2.3 vlan0001 vlan2 PING1=0 PING2=0 PING3=0 PING4=0 PING5=0 ${NETCONF}EOF "
### TEST 2: bond
if [ "$USE_NETWORK" = network-legacy ]; then
root=nfs:192.168.51.1:/nfs/client
bootdev=bond0
" \
- "bond0 PING1=0 NET3=0 NET4=0 ${NETCONF}EOF " \
- || return 1
+ "bond0 PING1=0 NET3=0 NET4=0 ${NETCONF}EOF "
### TEST 3: bridge
if [ "$USE_NETWORK" = network-legacy ]; then
root=nfs:192.168.50.1:/nfs/client
bootdev=br0
" \
- "br0 PING1=0 NET1=0 NET5=0 ${NETCONF}EOF " \
- || return 1
+ "br0 PING1=0 NET1=0 NET5=0 ${NETCONF}EOF "
kill_server
return 0
-d "piix ide-gd_mod ata_piix ext4 sd_mod" \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
declare -a disk_args=()
# shellcheck disable=SC2034 # disk_index used in qemu_add_drive
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
rm -fr "$TESTDIR"/overlay
-m "rootfs-block kernel-modules watchdog qemu network network-legacy ${SERVER_DEBUG:+debug}" \
-d "ipvlan macvlan af_packet piix ide-gd_mod ata_piix ext4 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd virtio-net i6300esb" \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.server "$KVERSION"
}
kill_server() {
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem over iSCSI with $USE_NETWORK"
-net socket,listen=127.0.0.1:12330 \
-append "panic=1 oops=panic softlockup_panic=1 quiet root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rw console=ttyS0,115200n81 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
- -pidfile "$TESTDIR"/server.pid -daemonize || return 1
- chmod 644 "$TESTDIR"/server.pid || return 1
+ -pidfile "$TESTDIR"/server.pid -daemonize
+ chmod 644 "$TESTDIR"/server.pid
if ! [[ $SERIAL ]]; then
- wait_for_server_startup || return 1
+ wait_for_server_startup
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
run_client "root=dhcp" "" \
"root=/dev/root netroot=dhcp ip=lan0:dhcp" \
- "rd.iscsi.initiator=$initiator" \
- || return 1
+ "rd.iscsi.initiator=$initiator"
run_client "netroot=iscsi target0" "" \
"root=LABEL=singleroot netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target0" \
"ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:lan0:off" \
- "rd.iscsi.initiator=$initiator" \
- || return 1
+ "rd.iscsi.initiator=$initiator"
run_client "netroot=iscsi target1 target2" "" \
"root=LABEL=sysroot" \
"ip=dhcp" \
"netroot=iscsi:192.168.51.1::::iqn.2009-06.dracut:target1" \
"netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
- "rd.iscsi.initiator=$initiator" \
- || return 1
+ "rd.iscsi.initiator=$initiator"
if "$testdir"/run-qemu --supports -acpitable; then
run_client "root=ibft" "ibft.table" \
"root=LABEL=singleroot" \
"rd.iscsi.ibft=1" \
- "rd.iscsi.firmware=1" \
- || return 1
+ "rd.iscsi.firmware=1"
else
echo "CLIENT TEST: root=ibft [SKIPPED]"
fi
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-I "ip grep setsid" \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p -- "$TESTDIR"/overlay/source/var/lib/nfs/rpc_pipefs
-I "setsid blockdev" \
-i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
# Create what will eventually be the server root filesystem onto an overlay
-I "modprobe chmod ip setsid pidof tgtd tgtadm /etc/passwd" \
--install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \
-i "./dhcpd.conf" "/etc/dhcpd.conf" \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p "$TESTDIR"/overlay/source/var/lib/dhcpd
"$DRACUT" -N -i "$TESTDIR"/overlay / \
--add-confdir test-makeroot \
-i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
# Make server's dracut image
-i "./server.link" "/etc/systemd/network/01-server.link" \
-i ./wait-if-server.sh /lib/dracut/hooks/pre-mount/99-wait-if-server.sh \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.server "$KVERSION"
# Make client's dracut image
test_dracut \
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem over multiple iSCSI with $USE_NETWORK"
-net socket,listen=127.0.0.1:12331 \
-append "panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
- -pidfile "$TESTDIR"/server.pid -daemonize || return 1
- chmod 644 "$TESTDIR"/server.pid || return 1
+ -pidfile "$TESTDIR"/server.pid -daemonize
+ chmod 644 "$TESTDIR"/server.pid
if ! [[ $SERIAL ]]; then
- wait_for_server_startup || return 1
+ wait_for_server_startup
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
"ip=192.168.51.101:::255.255.255.0::lan1:off" \
"netroot=iscsi:192.168.51.1::::iqn.2009-06.dracut:target1" \
"netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
- "rd.iscsi.initiator=$initiator" \
- || return 1
+ "rd.iscsi.initiator=$initiator"
run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0" \
"root=LABEL=sysroot" \
"netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
- "rd.iscsi.waitnet=0" \
- || return 1
+ "rd.iscsi.waitnet=0"
run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
"root=LABEL=sysroot" \
"netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
- "rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
- || return 1
+ "rd.iscsi.waitnet=0 rd.iscsi.testroute=0"
run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0 default GW" \
"root=LABEL=sysroot" \
"netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2" \
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
- "rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
- || return 1
+ "rd.iscsi.waitnet=0 rd.iscsi.testroute=0"
echo "All tests passed [OK]"
return 0
--add-confdir test-root \
-I "ip grep setsid" \
--no-hostonly --no-hostonly-cmdline --nohardlink \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p -- "$TESTDIR"/overlay/source/var/lib/nfs/rpc_pipefs
cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
-I "setsid blockdev" \
-i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot rw rootfstype=ext4 quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
rm -rf -- "$TESTDIR"/overlay
--install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \
-i /tmp/config /etc/nbd-server/config \
-i "./dhcpd.conf" "/etc/dhcpd.conf" \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p -- "$TESTDIR"/overlay/source/var/lib/dhcpd "$TESTDIR"/overlay/source/etc/iscsi
"$DRACUT" -N -i "$TESTDIR"/overlay / \
--add-confdir test-makeroot \
-i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -- "$TESTDIR"/marker.img
# Make client's dracut image
-i "./server.link" "/etc/systemd/network/01-server.link" \
-i "./wait-if-server.sh" "/lib/dracut/hooks/pre-mount/99-wait-if-server.sh" \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.server "$KVERSION"
}
test_cleanup() {
#!/usr/bin/env bash
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="root filesystem on NBD with $USE_NETWORK"
-net socket,listen=127.0.0.1:12340 \
-append "panic=1 oops=panic softlockup_panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_serverroot rootfstype=ext4 rw console=ttyS0,115200n81 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
- -pidfile "$TESTDIR"/server.pid -daemonize || return 1
- chmod 644 "$TESTDIR"/server.pid || return 1
+ -pidfile "$TESTDIR"/server.pid -daemonize
+ chmod 644 "$TESTDIR"/server.pid
if ! [[ $SERIAL ]]; then
- wait_for_server_startup || return 1
+ wait_for_server_startup
else
echo Sleeping 10 seconds to give the server a head start
sleep 10
# The default is ext4,errors=continue so use that to determine
# if our options were parsed and used
client_test "NBD root=nbd:IP:port" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:raw rd.luks=0" || return 1
+ "root=nbd:192.168.50.1:raw rd.luks=0"
client_test "NBD root=nbd:IP:port::fsopts" 52:54:00:12:34:00 \
"root=nbd:192.168.50.1:raw::errors=panic rd.luks=0" \
- ext4 errors=panic || return 1
+ ext4 errors=panic
client_test "NBD root=nbd:IP:port:fstype" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:raw:ext4 rd.luks=0" ext4 || return 1
+ "root=nbd:192.168.50.1:raw:ext4 rd.luks=0" ext4
client_test "NBD root=nbd:IP:port:fstype:fsopts" 52:54:00:12:34:00 \
"root=nbd:192.168.50.1:raw:ext4:errors=panic rd.luks=0" \
- ext4 errors=panic || return 1
+ ext4 errors=panic
# DHCP root-path parsing
client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port" 52:54:00:12:34:01 \
- "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" || return 1
+ "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0"
# BROKEN
#client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype" \
- # 52:54:00:12:34:02 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 || return 1
+ # 52:54:00:12:34:02 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2
client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port::fsopts" \
- 52:54:00:12:34:03 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext4 errors=panic || return 1
+ 52:54:00:12:34:03 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext4 errors=panic
# BROKEN
#client_test "NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \
- # 52:54:00:12:34:04 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 errors=panic || return 1
+ # 52:54:00:12:34:04 "root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 errors=panic
# netroot handling
client_test "NBD netroot=nbd:IP:port" 52:54:00:12:34:00 \
- "root=LABEL=dracut netroot=nbd:192.168.50.1:raw ip=dhcp rd.luks=0" || return 1
+ "root=LABEL=dracut netroot=nbd:192.168.50.1:raw ip=dhcp rd.luks=0"
# Encrypted root handling via LVM/LUKS over NBD
client_test "NBD root=LABEL=dracut netroot=nbd:IP:port" \
52:54:00:12:34:00 \
- "root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut ip=dhcp netroot=nbd:192.168.50.1:encrypted" || return 1
+ "root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut ip=dhcp netroot=nbd:192.168.50.1:encrypted"
# XXX This should be ext4,errors=panic but that doesn't currently
# XXX work when you have a real root= line in addition to netroot=
# XXX How we should work here needs clarification
# client_test "NBD root=LABEL=dracut netroot=dhcp (w/ fstype and opts)" \
# 52:54:00:12:34:05 \
- # "root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut netroot=dhcp" || return 1
+ # "root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut netroot=dhcp"
if [[ -s server.pid ]]; then
kill -TERM "$(cat "$TESTDIR"/server.pid)"
--add-confdir test-root \
-I "ip grep" \
--no-hostonly --no-hostonly-cmdline --nohardlink \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
-I "cryptsetup" \
-i ./create-encrypted-root.sh /lib/dracut/hooks/initqueue/01-create-encrypted-root.sh \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/fakeroot rw quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
grep -F -a -m 1 ID_FS_UUID "$TESTDIR"/marker.img > "$TESTDIR"/luks.uuid
}
--add-confdir test-root \
-I "ip" \
--no-hostonly --no-hostonly-cmdline --nohardlink \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
-i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
declare -a disk_args=()
declare -i disk_index=0
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -fr "$TESTDIR"/overlay
}
-i /tmp/config /etc/nbd-server/config \
-i "./dhcpd.conf" "/etc/dhcpd.conf" \
--no-hostonly --no-hostonly-cmdline --nohardlink \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root "$KVERSION"
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p -- "$TESTDIR"/overlay/source/var/lib/dhcpd "$TESTDIR"/overlay/source/etc/nbd-server
-i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
declare -a disk_args=()
# shellcheck disable=SC2034 # disk_index used in qemu_add_drive
"$testdir"/run-qemu \
"${disk_args[@]}" \
-append "root=/dev/dracut/root rw rootfstype=ext4 quiet console=ttyS0,115200n81" \
- -initrd "$TESTDIR"/initramfs.makeroot || return 1
- test_marker_check dracut-root-block-created || return 1
+ -initrd "$TESTDIR"/initramfs.makeroot
+ test_marker_check dracut-root-block-created
rm -fr "$TESTDIR"/overlay
}
test_setup() {
- make_encrypted_root || return 1
- make_client_root || return 1
- make_server_root || return 1
+ make_encrypted_root
+ make_client_root
+ make_server_root
rm -fr "$TESTDIR"/overlay
# Make the test image
-d "af_packet piix ide-gd_mod ata_piix ext4 sd_mod drbg virtio_net" \
-i "./server.link" "/etc/systemd/network/01-server.link" \
-i "./wait-if-server.sh" "/lib/dracut/hooks/pre-mount/99-wait-if-server.sh" \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.server "$KVERSION"
}
kill_server() {
#!/usr/bin/env bash
+set -e
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
#!/usr/bin/env bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="test skipcpio"
}
test_setup() {
- CPIO_TESTDIR=$(mktemp --directory -p "$TESTDIR" cpio-test.XXXXXXXXXX) \
- || return 1
+ CPIO_TESTDIR=$(mktemp --directory -p "$TESTDIR" cpio-test.XXXXXXXXXX)
export CPIO_TESTDIR
return 0
}
#!/usr/bin/env bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
+set -e
# shellcheck disable=SC2034
TEST_DESCRIPTION="kernel cpio extraction tests for dracut-cpio"
-daemonize -pidfile "$tdir/vm.pid" \
-serial "file:$tdir/console.out" \
-append "panic=1 oops=panic softlockup_panic=1 console=ttyS0 rd.shell=1" \
- -initrd "$tdir/initramfs" || return 1
+ -initrd "$tdir/initramfs"
timeout=120
while [[ -f $tdir/vm.pid ]] \
&& ps -p "$(head -n1 "$tdir/vm.pid")" > /dev/null; do
echo "$timeout - awaiting VM shutdown"
sleep 1
- [[ $((timeout--)) -le 0 ]] && return 1
+ [[ $((timeout--)) -gt 0 ]]
done
cat "$tdir/console.out"
# dracut-cpio is typically used with compression and strip disabled, to
# increase the chance of (reflink) extent sharing.
- test_dracut_cpio "simple" "--no-compress" "--nostrip" || return 1
+ test_dracut_cpio "simple" "--no-compress" "--nostrip"
# dracut-cpio should still work fine with compression and stripping enabled
- test_dracut_cpio "compress" "--gzip" "--nostrip" || return 1
- test_dracut_cpio "strip" "--gzip" "--strip" || return 1
+ test_dracut_cpio "compress" "--gzip" "--nostrip"
+ test_dracut_cpio "strip" "--gzip" "--strip"
}
test_setup() {
- CPIO_TESTDIR=$(mktemp --directory -p "$TESTDIR" cpio-test.XXXXXXXXXX) \
- || return 1
+ CPIO_TESTDIR=$(mktemp --directory -p "$TESTDIR" cpio-test.XXXXXXXXXX)
export CPIO_TESTDIR
return 0
}