main/busybox-initscripts: tests for persistent-storage

add tests that verifies current behavior

(cherry picked from commit bc5f3b6987eb2fddfa86ec2db35350ca070cd28e)
This commit is contained in:
Natanael Copa 2022-07-11 18:25:00 +02:00
parent ed22835b9c
commit 5df3afdec0
4 changed files with 137 additions and 8 deletions

View File

@ -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
"

View File

@ -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}

View File

@ -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

View File

@ -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"
}