mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
tests/qemu: Split qemu snapshot isolation into 3 tests.
It contained 3 tests before. It's better to run them in parallel. Just a simple refactoring, no change.
This commit is contained in:
@@ -23,7 +23,9 @@ include $(top_srcdir)/subdir-rules.mk
|
||||
|
||||
TESTS = \
|
||||
qemu-liveness.sh \
|
||||
qemu-snapshot-isolation.sh \
|
||||
qemu-snapshot-isolation-add-drive-opts-readonly.sh \
|
||||
qemu-snapshot-isolation-add-drive-ro.sh \
|
||||
qemu-snapshot-isolation-qcow2.sh \
|
||||
qemu-force-tcg.sh
|
||||
|
||||
TESTS_ENVIRONMENT = $(top_builddir)/run --test
|
||||
|
||||
68
tests/qemu/qemu-snapshot-isolation-add-drive-opts-readonly.sh
Executable file
68
tests/qemu/qemu-snapshot-isolation-add-drive-opts-readonly.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash -
|
||||
# libguestfs
|
||||
# Copyright (C) 2011-2017 Red Hat Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# Test that qemu snapshots are really isolating writes from the
|
||||
# underlying disk image. If this test were to fail, you could expect
|
||||
# libguestfs to cause massive disk corruption on live guests.
|
||||
|
||||
set -e
|
||||
|
||||
$TEST_FUNCTIONS
|
||||
skip_if_skipped
|
||||
|
||||
f=isolation-add-drive-opts-readonly.img
|
||||
rm -f $f
|
||||
|
||||
guestfish sparse $f 100M
|
||||
md5sum="$(do_md5 $f)"
|
||||
|
||||
guestfish <<EOF
|
||||
add-drive-opts $f format:raw readonly:true
|
||||
|
||||
run
|
||||
|
||||
part-disk /dev/sda mbr
|
||||
mkfs ext2 /dev/sda1
|
||||
mount /dev/sda1 /
|
||||
write /test This_is_a_test
|
||||
|
||||
# Really try hard to force writes to the disk.
|
||||
umount-all
|
||||
sync
|
||||
|
||||
EOF
|
||||
|
||||
# Now verify that the original disks have not been touched.
|
||||
function serious_error
|
||||
{
|
||||
echo
|
||||
echo
|
||||
echo "***** SERIOUS ERROR *****"
|
||||
echo "qemu’s snapshot isolation does not appear to be working."
|
||||
echo "Running libguestfs could cause disk corruption on live guests."
|
||||
echo
|
||||
echo "DO NOT USE libguestfs before you have resolved this problem."
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$(do_md5 $f)" != "$md5sum" ]; then
|
||||
serious_error
|
||||
fi
|
||||
|
||||
rm $f
|
||||
68
tests/qemu/qemu-snapshot-isolation-add-drive-ro.sh
Executable file
68
tests/qemu/qemu-snapshot-isolation-add-drive-ro.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash -
|
||||
# libguestfs
|
||||
# Copyright (C) 2011-2017 Red Hat Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# Test that qemu snapshots are really isolating writes from the
|
||||
# underlying disk image. If this test were to fail, you could expect
|
||||
# libguestfs to cause massive disk corruption on live guests.
|
||||
|
||||
set -e
|
||||
|
||||
$TEST_FUNCTIONS
|
||||
skip_if_skipped
|
||||
|
||||
f=isolation-add-drive-ro.img
|
||||
rm -f $f
|
||||
|
||||
guestfish sparse $f 100M
|
||||
md5sum="$(do_md5 $f)"
|
||||
|
||||
guestfish <<EOF
|
||||
add-drive-ro $f
|
||||
|
||||
run
|
||||
|
||||
part-disk /dev/sda mbr
|
||||
mkfs ext2 /dev/sda1
|
||||
mount /dev/sda1 /
|
||||
write /test This_is_a_test
|
||||
|
||||
# Really try hard to force writes to the disk.
|
||||
umount-all
|
||||
sync
|
||||
|
||||
EOF
|
||||
|
||||
# Now verify that the original disks have not been touched.
|
||||
function serious_error
|
||||
{
|
||||
echo
|
||||
echo
|
||||
echo "***** SERIOUS ERROR *****"
|
||||
echo "qemu’s snapshot isolation does not appear to be working."
|
||||
echo "Running libguestfs could cause disk corruption on live guests."
|
||||
echo
|
||||
echo "DO NOT USE libguestfs before you have resolved this problem."
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$(do_md5 $f)" != "$md5sum" ]; then
|
||||
serious_error
|
||||
fi
|
||||
|
||||
rm $f
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash -
|
||||
# libguestfs
|
||||
# Copyright (C) 2011 Red Hat Inc.
|
||||
# Copyright (C) 2011-2017 Red Hat Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -24,56 +24,24 @@ set -e
|
||||
|
||||
$TEST_FUNCTIONS
|
||||
skip_if_skipped
|
||||
|
||||
# UML backend doesn't support qcow2 format.
|
||||
supports_qcow2=yes
|
||||
if [ "$(guestfish get-backend)" = "uml" ]; then
|
||||
supports_qcow2=no
|
||||
fi
|
||||
skip_if_backend uml
|
||||
|
||||
rm -f isolation1.img isolation2.img isolation3.img
|
||||
f=isolation-qcow2.img
|
||||
rm -f $f
|
||||
|
||||
guestfish sparse isolation1.img 100M
|
||||
isolation1_md5sum="$(do_md5 isolation1.img)"
|
||||
guestfish sparse isolation2.img 100M
|
||||
isolation2_md5sum="$(do_md5 isolation2.img)"
|
||||
guestfish disk-create $f qcow2 100M preallocation:metadata
|
||||
md5sum="$(do_md5 $f)"
|
||||
|
||||
if [ "$supports_qcow2" = "yes" ]; then
|
||||
guestfish \
|
||||
disk-create isolation3.img qcow2 100M preallocation:metadata
|
||||
isolation3_md5sum="$(do_md5 isolation3.img)"
|
||||
add3="add-drive-opts isolation3.img format:qcow2 readonly:true"
|
||||
cmds3="
|
||||
part-disk /dev/sdc mbr
|
||||
mkfs ext2 /dev/sdc1
|
||||
mkmountpoint /c
|
||||
mount /dev/sdc1 /c
|
||||
write /c/test This_is_a_test
|
||||
"
|
||||
fi
|
||||
|
||||
# The vitally important calls are 'add-drive-ro' and
|
||||
# 'add-drive-opts ... readonly:true'.
|
||||
guestfish <<EOF
|
||||
add-drive-ro isolation1.img
|
||||
add-drive-opts isolation2.img format:raw readonly:true
|
||||
$add3
|
||||
add-drive-opts $f format:qcow2 readonly:true
|
||||
|
||||
run
|
||||
|
||||
part-disk /dev/sda mbr
|
||||
mkfs ext2 /dev/sda1
|
||||
mkmountpoint /a
|
||||
mount /dev/sda1 /a
|
||||
write /a/test This_is_a_test
|
||||
|
||||
part-disk /dev/sdb mbr
|
||||
mkfs ext2 /dev/sdb1
|
||||
mkmountpoint /b
|
||||
mount /dev/sdb1 /b
|
||||
write /b/test This_is_a_test
|
||||
|
||||
$cmds3
|
||||
mount /dev/sda1 /
|
||||
write /test This_is_a_test
|
||||
|
||||
# Really try hard to force writes to the disk.
|
||||
umount-all
|
||||
@@ -95,18 +63,8 @@ function serious_error
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$(do_md5 isolation1.img)" != "$isolation1_md5sum" ]; then
|
||||
serious_error
|
||||
fi
|
||||
if [ "$(do_md5 isolation2.img)" != "$isolation2_md5sum" ]; then
|
||||
serious_error
|
||||
fi
|
||||
if [ "$supports_qcow2" = "yes" -a \
|
||||
"$(do_md5 isolation3.img)" != "$isolation3_md5sum" ]; then
|
||||
if [ "$(do_md5 $f)" != "$md5sum" ]; then
|
||||
serious_error
|
||||
fi
|
||||
|
||||
rm isolation1.img isolation2.img
|
||||
if [ "$supports_qcow2" = "yes" ]; then
|
||||
rm isolation3.img
|
||||
fi
|
||||
rm $f
|
||||
Reference in New Issue
Block a user