From: Ruediger Meier Date: Sat, 10 Mar 2018 18:44:32 +0000 (+0100) Subject: tests: consolidate ts_device_has UUID or LABEL X-Git-Tag: v2.32~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ca02cf52d70d56fc3f7e152c55154a15c62af6d;p=thirdparty%2Futil-linux.git tests: consolidate ts_device_has UUID or LABEL Regarding parallel root checks ... - fix: add a few missing "udevadm settle" where we are using LABELs or UUIDs - introduce ts_udevadm_settle(): * Still trivial implementation. The idea is to use it in future for all tests instead of directly calling "udevadm settle". So we could add debug messages, wait for specific events, add code for non-udev systems or even use "udevadm --{start,stop}-exec-queue" to be really sure what we are doing and why using udevadm at all. * The currently unused args may be used in future and show the code reader already now why we are calling "udevadm settle" at all. * So far this patch only affects swapon/, mount/, libmount/ tests, and is only about UUIDs and LABELs, but may be continued later for "partitions", "md devices", whatever. * We are calling ts_udevadm_settle() right *before* we need a LABEL or UUID, not just *after* we created one. This may be a bit better for speed and shows the code reader which command would fail without settle. - function ts_device_has_uuid() is unused now, we trust blkid(1). Renamed to ts_is_uuid() in case we would need it again. Signed-off-by: Ruediger Meier --- diff --git a/tests/functions.sh b/tests/functions.sh index 66eaa9d6ef..0f991881a3 100644 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -555,16 +555,34 @@ function ts_device_deinit { fi } +function ts_blkidtag_by_devname() +{ + local tag=$1 + local dev=$2 + local out + local rval + + out=$($TS_CMD_BLKID -p -s "$tag" -o value "$dev") + rval=$? + printf "%s\n" "$out" + + test -n "$out" -a "$rval" = "0" + return $? +} + function ts_uuid_by_devname { - echo $($TS_CMD_BLKID -p -s UUID -o value $1) + ts_blkidtag_by_devname "UUID" "$1" + return $? } function ts_label_by_devname { - echo $($TS_CMD_BLKID -p -s LABEL -o value $1) + ts_blkidtag_by_devname "LABEL" "$1" + return $? } function ts_fstype_by_devname { - echo $($TS_CMD_BLKID -p -s TYPE -o value $1) + ts_blkidtag_by_devname "TYPE" "$1" + return $? } function ts_device_has { @@ -573,24 +591,24 @@ function ts_device_has { local DEV="$3" local vl="" - case $TAG in - "TYPE") vl=$(ts_fstype_by_devname $DEV);; - "LABEL") vl=$(ts_label_by_devname $DEV);; - "UUID") vl=$(ts_uuid_by_devname $DEV);; - *) return 1;; - esac - - if [ "$vl" == "$VAL" ]; then - return 0 - fi - return 1 + vl=$(ts_blkidtag_by_devname "$TAG" "$DEV") + test $? = 0 -a "$vl" = "$VAL" + return $? } -function ts_device_has_uuid { - ts_uuid_by_devname "$1" | egrep -q '^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$' +function ts_is_uuid() +{ + printf "%s\n" "$1" | egrep -q '^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$' return $? } +function ts_udevadm_settle() +{ + local dev=$1 # optional, might be empty + shift # all other args are tags, LABEL, UUID, ... + udevadm settle +} + function ts_mount { local out local result diff --git a/tests/ts/libmount/tabfiles-tags b/tests/ts/libmount/tabfiles-tags index 4933876d49..38858f47b0 100755 --- a/tests/ts/libmount/tabfiles-tags +++ b/tests/ts/libmount/tabfiles-tags @@ -26,9 +26,8 @@ UUID="de1bc6e9-34ab-4151-a1d7-900042eee8d9" # Create filesystem # mkfs.ext3 -F -L $LABEL $TS_DEVICE -U $UUID &> /dev/null || ts_die "Cannot make ext3 on $TS_DEVICE" -udevadm settle - -ts_device_has_uuid $TS_DEVICE || ts_die "Cannot find UUID on $TS_DEVICE" +ts_device_has "LABEL" "$LABEL" "$TS_DEVICE" || ts_die "Cannot find LABEL '$LABEL' on $TS_DEVICE" +ts_device_has "UUID" "$UUID" "$TS_DEVICE" || ts_die "Cannot find $UUID on $TS_DEVICE" FSTAB="$TS_OUTDIR/fstab" @@ -36,6 +35,7 @@ FSTAB="$TS_OUTDIR/fstab" # Label in fstab # echo "LABEL=$LABEL /mnt/mountpoint auto defaults" > $FSTAB +ts_udevadm_settle "$TS_DEVICE" "LABEL" "UUID" ts_init_subtest "fstab-label2uuid" ts_run $TESTPROG --find-forward $FSTAB source "UUID=$UUID" &> $TS_OUTPUT diff --git a/tests/ts/libmount/tabfiles-tags-py b/tests/ts/libmount/tabfiles-tags-py index c1ad596bfd..5e72a6f907 100755 --- a/tests/ts/libmount/tabfiles-tags-py +++ b/tests/ts/libmount/tabfiles-tags-py @@ -30,9 +30,8 @@ UUID="de1bc6e9-34ab-4151-a1d7-900042eee8d9" # Create filesystem # mkfs.ext3 -F -L $LABEL $TS_DEVICE -U $UUID &> /dev/null || ts_die "Cannot make ext3 on $TS_DEVICE" -udevadm settle - -ts_device_has_uuid $TS_DEVICE || ts_die "Cannot find UUID on $TS_DEVICE" +ts_device_has "LABEL" "$LABEL" "$TS_DEVICE" || ts_die "Cannot find LABEL '$LABEL' on $TS_DEVICE" +ts_device_has "UUID" "$UUID" "$TS_DEVICE" || ts_die "Cannot find $UUID on $TS_DEVICE" FSTAB="$TS_OUTDIR/fstab" @@ -40,6 +39,7 @@ FSTAB="$TS_OUTDIR/fstab" # Label in fstab # echo "LABEL=$LABEL /mnt/mountpoint auto defaults" > $FSTAB +ts_udevadm_settle "$DEVICE" "LABEL" "UUID" ts_init_subtest "fstab-label2uuid" $PYTHON $TESTPROG --find-forward $FSTAB source "UUID=$UUID" &> $TS_OUTPUT diff --git a/tests/ts/mount/fstab-devname2label b/tests/ts/mount/fstab-devname2label index 380b91d03c..02ef1ef18d 100755 --- a/tests/ts/mount/fstab-devname2label +++ b/tests/ts/mount/fstab-devname2label @@ -33,13 +33,13 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 -L $LABEL $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "LABEL=$LABEL" +ts_udevadm_settle "$DEVICE" "LABEL" $TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>&1 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts" diff --git a/tests/ts/mount/fstab-devname2uuid b/tests/ts/mount/fstab-devname2uuid index 3ed19d2df8..4cd4f4502c 100755 --- a/tests/ts/mount/fstab-devname2uuid +++ b/tests/ts/mount/fstab-devname2uuid @@ -32,14 +32,12 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "UUID=$UUID" +ts_udevadm_settle "$DEVICE" "UUID" $TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>&1 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts" diff --git a/tests/ts/mount/fstab-label b/tests/ts/mount/fstab-label index bc5a15f4f6..be6292d17e 100755 --- a/tests/ts/mount/fstab-label +++ b/tests/ts/mount/fstab-label @@ -33,13 +33,13 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 -L $LABEL $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "LABEL=$LABEL" +ts_udevadm_settle "$DEVICE" "LABEL" # variant A) $TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/fstab-label2devname b/tests/ts/mount/fstab-label2devname index 3dcaad54a9..ee4642e250 100755 --- a/tests/ts/mount/fstab-label2devname +++ b/tests/ts/mount/fstab-label2devname @@ -33,13 +33,13 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 -L $LABEL $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "$DEVICE" +ts_udevadm_settle "$DEVICE" "LABEL" # variant A) $TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/fstab-label2uuid b/tests/ts/mount/fstab-label2uuid index 486d070413..0d2b93154e 100755 --- a/tests/ts/mount/fstab-label2uuid +++ b/tests/ts/mount/fstab-label2uuid @@ -34,17 +34,14 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 -L $LABEL $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "UUID=$UUID" +ts_udevadm_settle "$DEVICE" "LABEL" "UUID" # variant A) $TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/fstab-uuid b/tests/ts/mount/fstab-uuid index afe414dc4d..1c588fc1b1 100755 --- a/tests/ts/mount/fstab-uuid +++ b/tests/ts/mount/fstab-uuid @@ -32,14 +32,12 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "UUID=$UUID" +ts_udevadm_settle "$DEVICE" "UUID" # varian A) $TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/fstab-uuid2devname b/tests/ts/mount/fstab-uuid2devname index 3197148bda..39aed65a93 100755 --- a/tests/ts/mount/fstab-uuid2devname +++ b/tests/ts/mount/fstab-uuid2devname @@ -32,14 +32,12 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "$DEVICE" +ts_udevadm_settle "$DEVICE" "UUID" # variant A) $TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/fstab-uuid2label b/tests/ts/mount/fstab-uuid2label index 22c5647dde..4676c9a7b6 100755 --- a/tests/ts/mount/fstab-uuid2label +++ b/tests/ts/mount/fstab-uuid2label @@ -33,17 +33,14 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 -L $LABEL $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT ts_fstab_add "LABEL=$LABEL" +ts_udevadm_settle "$DEVICE" "LABEL" "UUID" # variant A) $TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/label b/tests/ts/mount/label index d3a571bc4c..45da02b6ef 100755 --- a/tests/ts/mount/label +++ b/tests/ts/mount/label @@ -34,11 +34,11 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 -L $LABEL $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" -udevadm settle ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT +ts_udevadm_settle "$DEVICE" "LABEL" # variant A) $TS_CMD_MOUNT -L $LABEL $TS_MOUNTPOINT >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/mount/uuid b/tests/ts/mount/uuid index efd2774ed5..36f75cef9b 100755 --- a/tests/ts/mount/uuid +++ b/tests/ts/mount/uuid @@ -32,12 +32,10 @@ ts_device_init DEVICE=$TS_LODEV mkfs.ext3 $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT +ts_udevadm_settle "$DEVICE" "UUID" # variant A) $TS_CMD_MOUNT -U $UUID $TS_MOUNTPOINT >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/swapon/label b/tests/ts/swapon/label index 210a12c972..1bb5dbb3ec 100755 --- a/tests/ts/swapon/label +++ b/tests/ts/swapon/label @@ -34,11 +34,9 @@ DEVICE=$TS_LODEV $TS_CMD_MKSWAP -L $LABEL $DEVICE > /dev/null 2>> $TS_OUTPUT \ || ts_die "Cannot make swap on $DEVICE" - -udevadm settle - ts_device_has "LABEL" $LABEL $DEVICE \ || ts_die "Cannot find LABEL '$LABEL' on $DEVICE" +ts_udevadm_settle "$DEVICE" "LABEL" $TS_CMD_SWAPON -L $LABEL >> $TS_OUTPUT 2>&1 diff --git a/tests/ts/swapon/uuid b/tests/ts/swapon/uuid index 65af6cb6de..70e62d7f91 100755 --- a/tests/ts/swapon/uuid +++ b/tests/ts/swapon/uuid @@ -33,10 +33,8 @@ DEVICE=$TS_LODEV $TS_CMD_MKSWAP $DEVICE > /dev/null 2>> $TS_OUTPUT \ || ts_die "Cannot make swap $DEVICE" - -ts_device_has_uuid $DEVICE || ts_die "Cannot find UUID on $DEVICE" - -UUID=$(ts_uuid_by_devname $DEVICE) +UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE" +ts_udevadm_settle "$DEVICE" "UUID" $TS_CMD_SWAPON -U $UUID >> $TS_OUTPUT 2>&1