From 5df3afdec03f10e706c10fd2653a51aa39eae601 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 11 Jul 2022 18:25:00 +0200 Subject: [PATCH] main/busybox-initscripts: tests for persistent-storage add tests that verifies current behavior (cherry picked from commit bc5f3b6987eb2fddfa86ec2db35350ca070cd28e) --- main/busybox-initscripts/APKBUILD | 6 +- main/busybox-initscripts/Kyuafile | 1 + main/busybox-initscripts/persistent-storage | 14 +- .../persistent-storage_test | 124 ++++++++++++++++++ 4 files changed, 137 insertions(+), 8 deletions(-) create mode 100755 main/busybox-initscripts/persistent-storage_test diff --git a/main/busybox-initscripts/APKBUILD b/main/busybox-initscripts/APKBUILD index 611ce5ba611..78be22fad6a 100644 --- a/main/busybox-initscripts/APKBUILD +++ b/main/busybox-initscripts/APKBUILD @@ -20,6 +20,7 @@ source="acpid.initd crond.initd dnsd.initd httpd.initd inetd.initd klogd.initd ptpdev test_env.sh ptpdev_test + persistent-storage_test Kyuafile " @@ -83,9 +84,10 @@ acbba3385fb2c416362eb9176f24146b617a2e394ee0e00b9eff89350f82468a5ab8396f4f52b0aa b5c299d5dcd854eb23717aab6938e2e1c9572d10ed667595b4a98f9cddca9f81c3f8f7ae508b62db5fe203c45c696d3c2a9ce62761aa329b2bcfcc5e5a3a9224 mdev.conf ebd82f935da2ca89097234dd8a8f47e179a423652c151123a1f3343f3e1e7bfaba2b8800380e988d4e8f4294545d3a9ab6708ae2e77c5b108b5f091bbce8f94a dvbdev b2dcf0ded9264334d79fbbb05dd12d649dc3119a060db5893f0e8aeca2141323961c3ba4c822a0ffb00dba848742d5cb374dc77e776b57cecde352a3e8e30f8a usbdev -0f54666072a8ee32965cc1b5205a6d35bc2ba6655f298c37ba9ccd72949fa7c41b1e540ec91f41b11f4b261ace614cdcc42dccf390bf0a22698d0ba499feae39 persistent-storage +1e5efd37081ed513912dece5ca9e82bf2f8b192e432d872f1758962469e0548223ddf1f43049973e853373b5c08494f1787e41e3b9d2d2fe15ab835e9a09e6ea persistent-storage 46b9379a5def08ce0afffae546693c19be158ca4fa4ce3c619ec81e0adbaa087ea5dd6df10abbfcd59bfdaf351d7170a7d24c2b403eceeb80f4f04f090630227 ptpdev 0a23323849ba531ac9b56bb7f60a8cdd2b94a0e366e87120c20a53fe6e79b6da3a3fb4320c6cd14fb89ac933a98c2d9d84512713c42042fa2a9a2a80e0d467a9 test_env.sh fd6bb18753f6367f75cd03febe76280d041a24880ec4dc315fe644d838d10098ecb9d7cfaf154e465bda1c90df14d613700c9910960ee78f0941c5442db93624 ptpdev_test -e32e2240bce04c81df3bdb0cd818636bdac58d15233e3811dadc3704d16908bf15471d45b32cabfdffd012c33835d09ff40682564a3e5077050d7d29c08ef5f6 Kyuafile +9af204b2a1daee60b9be409340a5a4f05e41102939831418a0dd36efaa4c9fdd62cb0ebb1f6a7bc7fccb350be5da307dcf0e236b760c3c737f7257476b8c0b24 persistent-storage_test +ea40b39c2cfe96d81fbc91fb9b38f503024127737c7d7bdefc79b5e1eb387214258b3d849b0e35b27e2897847150e2cc09edfaa246d9f30d7cec6655a887a81e Kyuafile " diff --git a/main/busybox-initscripts/Kyuafile b/main/busybox-initscripts/Kyuafile index 789229a3a2e..a7698c6d73b 100644 --- a/main/busybox-initscripts/Kyuafile +++ b/main/busybox-initscripts/Kyuafile @@ -1,3 +1,4 @@ syntax(2) test_suite("mdev-scripts") atf_test_program{name='ptpdev_test',timeout=1} +atf_test_program{name='persistent-storage_test',timeout=1} diff --git a/main/busybox-initscripts/persistent-storage b/main/busybox-initscripts/persistent-storage index ea689482947..d9b41f1141d 100644 --- a/main/busybox-initscripts/persistent-storage +++ b/main/busybox-initscripts/persistent-storage @@ -7,10 +7,12 @@ symlink_action() { esac } +: ${SYSFS:=/sys} + # cdrom symlink case "$MDEV" in sr*|xvd*) - caps="$(cat /sys/block/$MDEV/capability 2>/dev/null)" + caps="$(cat $SYSFS/block/$MDEV/capability 2>/dev/null)" if [ $(( 0x${caps:-0} & 8 )) -gt 0 ]; then symlink_action $MDEV cdrom fi @@ -19,13 +21,13 @@ esac # by-id symlinks mkdir -p disk/by-id -partition=$(cat /sys/class/block/$MDEV/partition 2>/dev/null) +partition=$(cat $SYSFS/class/block/$MDEV/partition 2>/dev/null) case "$partition" in [0-9]*) partsuffix="-part$partition";; esac -wwid=$(cat /sys/class/block/$MDEV/wwid 2>/dev/null) -: ${wwid:=$(cat /sys/class/block/$MDEV/device/wwid 2>/dev/null)} +wwid=$(cat $SYSFS/class/block/$MDEV/wwid 2>/dev/null) +: ${wwid:=$(cat $SYSFS/class/block/$MDEV/device/wwid 2>/dev/null)} if [ -n "$wwid" ]; then case "$MDEV" in @@ -37,10 +39,10 @@ if [ -n "$wwid" ]; then fi serial=$(sed -E -e 's/^\s+//' -e 's/\s+$//' -e 's/ /_/g' \ - /sys/class/block/$MDEV/device/serial 2>/dev/null) + $SYSFS/class/block/$MDEV/device/serial 2>/dev/null) model=$(sed -E -e 's/^\s+//' -e 's/\s+$//' -e 's/ /_/g' \ - /sys/class/block/$MDEV/device/model 2>/dev/null) + $SYSFS/class/block/$MDEV/device/model 2>/dev/null) if [ -n "$serial" ] && [ -n "$model" ]; then case "$MDEV" in diff --git a/main/busybox-initscripts/persistent-storage_test b/main/busybox-initscripts/persistent-storage_test new file mode 100755 index 00000000000..a50dffd5dee --- /dev/null +++ b/main/busybox-initscripts/persistent-storage_test @@ -0,0 +1,124 @@ +#!/usr/bin/env atf-sh + +. $(atf_get_srcdir)/test_env.sh +init_tests \ + persistent_storage_cdrom \ + persistent_storage_nvme_wwid \ + persistent_storage_sda_wwid \ + persistent_storage_nvme_model_serial \ + persistent_storage_virtio_serial \ + persistent_storage_by_uuid \ + persistent_storage_by_partuuid + +mdevscript=$(atf_get_srcdir)/persistent-storage +export SYSFS=sys + +persistent_storage_cdrom_body() { + for dev in sr0 xvdc; do + mkdir -p sys/block/$dev + echo 109 > sys/block/$dev/capability + + MDEV=$dev ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"$dev" \ + readlink cdrom + + MDEV=$dev ACTION=remove atf_check \ + sh $mdevscript + atf_check -s not-exit:0 -o not-match:"$dev" \ + readlink cdrom + done +} + +persistent_storage_nvme_wwid_body() { + mkdir -p sys/class/block/nvme0n1 + echo eui.0025386b61b01dcd > sys/class/block/nvme0n1/wwid + + MDEV=nvme0n1 ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"nvme0n1" \ + readlink disk/by-id/nvme-eui.0025386b61b01dcd + + MDEV=nvme0n1 ACTION=remove atf_check \ + sh $mdevscript + atf_check -s not-exit:0 \ + readlink disk/by-id/nvme-eui.0025386b61b01dcd +} + +persistent_storage_sda_wwid_body() { + mkdir -p sys/class/block/sda/device + echo naa.5002538f4158fd7b > sys/class/block/sda/device/wwid + + MDEV=sda ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"sda" \ + readlink disk/by-id/wwn-0x5002538f4158fd7b + + MDEV=sda ACTION=remove atf_check \ + sh $mdevscript + atf_check -s not-exit:0 \ + readlink disk/by-id/wwn-0x5002538f4158fd7b +} + +persistent_storage_nvme_model_serial_body() { + mkdir -p sys/class/block/nvme0n1/device + echo 'Samsung SSD 960 EVO 500GB ' > sys/class/block/nvme0n1/device/model + echo 'S3EUNX0HB01245Y ' > sys/class/block/nvme0n1/device/serial + + MDEV=nvme0n1 ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"nvme0n1" \ + readlink disk/by-id/nvme-Samsung_SSD_960_EVO_500GB_S3EUNX0HB01245Y +} + +persistent_storage_virtio_serial_body() { + mkdir -p sys/class/block/vda/device + echo 'foobar' > sys/class/block/vda/device/serial + + MDEV=vda ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"vda" \ + readlink disk/by-id/virtio-foobar +} + +persistent_storage_by_uuid_body() { + local fs_uuid="2022-05-15-22-31-31-00" + + cat <<-EOF > blkid + #!/bin/sh + # blkid mock + case \$1 in + /dev/sr0) + echo "/dev/sr0: BLOCK_SIZE=\"2048\" UUID=\"$fs_uuid\" LABEL=\"cidata\" TYPE=\"iso9660\"" + ;; + esac + EOF + chmod +x blkid + export PATH="$PWD:$PATH" + + MDEV=sr0 ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"sr0" \ + readlink disk/by-uuid/"$fs_uuid" +} + +persistent_storage_by_partuuid_body() { + local partuuid="f6daa453-3150-46a2-b6f9-863e38fcd2aa" + + cat <<-EOF > blkid + #!/bin/sh + # blkid mock + case \$1 in + /dev/vda1) + echo '/dev/vda1: LABEL="testlabel" UUID="9850e420-fecd-4d61-bf8e-50c8babebbb2" BLOCK_SIZE="512" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="$partuuid"' + ;; + esac + EOF + chmod +x blkid + export PATH="$PWD:$PATH" + + MDEV=vda1 ACTION=add atf_check \ + sh $mdevscript + atf_check -o match:"vda1" \ + readlink disk/by-partuuid/"$partuuid" +}