test: fix public/private image detection and prefer the latter one

This commit is contained in:
Frantisek Sumsal 2020-05-17 10:46:34 +02:00
parent 3be6f50117
commit e89450921f
1 changed files with 18 additions and 19 deletions

View File

@ -329,12 +329,13 @@ systemd.wants=testsuite-$1.service ${_end} \
$KERNEL_APPEND \
"
[ -e "$IMAGE_PRIVATE" ] && image="$IMAGE_PRIVATE" || image="$IMAGE_PUBLIC"
QEMU_OPTIONS="-smp $QEMU_SMP \
-net none \
-m $QEMU_MEM \
-nographic \
-kernel $KERNEL_BIN \
-drive format=raw,cache=unsafe,file=${IMAGESTATEDIR}/${IMAGE_NAME}.img \
-drive format=raw,cache=unsafe,file=$image \
$QEMU_OPTIONS \
"
@ -692,16 +693,14 @@ create_empty_image() {
_size=$((4*_size))
fi
image="${TESTDIR}/${IMAGE_NAME}.img"
public="$IMAGESTATEDIR/${IMAGE_NAME}.img"
echo "Setting up $public (${_size} MB)"
rm -f "$image" "$public"
echo "Setting up $IMAGE_PUBLIC (${_size} MB)"
rm -f "$IMAGE_PRIVATE" "$IMAGE_PUBLIC"
# Create the blank file to use as a root filesystem
truncate -s "${_size}M" "$image"
ln -vs "$(realpath $image)" "$public"
truncate -s "${_size}M" "$IMAGE_PRIVATE"
ln -vs "$(realpath $IMAGE_PRIVATE)" "$IMAGE_PUBLIC"
LOOPDEV=$(losetup --show -P -f "$public")
LOOPDEV=$(losetup --show -P -f "$IMAGE_PUBLIC")
[ -b "$LOOPDEV" ] || return 1
sfdisk "$LOOPDEV" <<EOF
,$((_size-50))M
@ -722,7 +721,7 @@ EOF
mount_initdir() {
if [ -z "${LOOPDEV}" ]; then
image="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
[ -e "$IMAGE_PRIVATE" ] && image="$IMAGE_PRIVATE" || image="$IMAGE_PUBLIC"
LOOPDEV=$(losetup --show -P -f "$image")
[ -b "$LOOPDEV" ] || return 1
@ -744,8 +743,7 @@ cleanup_initdir() {
umount_loopback() {
# unmount the loopback device from all places. Otherwise we risk file
# system corruption.
image="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
for device in $(losetup -l | awk '$6=="'"$image"'" {print $1}'); do
for device in $(losetup -l | awk '$6=="'"$IMAGE_PUBLIC"'" {print $1}'); do
ddebug "Unmounting all uses of $device"
mount | awk '/^'"${device}"'p/{print $1}' | xargs --no-run-if-empty umount -v
done
@ -1215,6 +1213,9 @@ TESTDIR="$TESTDIR"
EOF
export TESTDIR
fi
IMAGE_PRIVATE="${TESTDIR}/${IMAGE_NAME}.img"
IMAGE_PUBLIC="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
}
import_initdir() {
@ -1964,7 +1965,7 @@ _test_cleanup() {
(
set +e
_umount_dir $initdir
rm -vf "${IMAGESTATEDIR}/${IMAGE_NAME}.img"
rm -vf "$IMAGE_PUBLIC"
rm -vfr "$TESTDIR"
rm -vf "$STATEFILE"
) || :
@ -2000,14 +2001,12 @@ test_setup() {
exit 1
fi
image="${TESTDIR}/${IMAGE_NAME}.img"
public="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
if [ -e "$image" ]; then
echo "Reusing existing image $PWD/$image → $(realpath $image)"
if [ -e "$IMAGE_PRIVATE" ]; then
echo "Reusing existing image $IMAGE_PRIVATE → $(realpath $IMAGE_PRIVATE)"
mount_initdir
elif [ -e "$public" ]; then
echo "Reusing existing cached image $PWD/$public → $(realpath $public)"
ln -s "$(realpath $public)" "$image"
elif [ -e "$IMAGE_PUBLIC" ]; then
echo "Reusing existing cached image $IMAGE_PUBLIC → $(realpath $IMAGE_PUBLIC)"
ln -s "$(realpath $IMAGE_PUBLIC)" "$IMAGE_PRIVATE"
mount_initdir
else
test_create_image