tests: Run the iotests during "make check" again
People often forget to run the iotests before submitting patches or pull requests - this is likely due to the fact that we do not run the tests during our mandatory "make check" tests yet. Now that we've got a proper "auto" group of iotests that should be fine to run in every environment, we can enable the iotests during "make check" again by running the "auto" tests by default from the check-block.sh script. Some cases still need to be checked first, though: iotests need bash and GNU sed (otherwise they fail), and if gprof is enabled, it spoils the output of some test cases causing them to fail. So if we detect that one of the required programs is missing or that gprof is enabled, we still have to skip the iotests to avoid failures. And finally, since we are using check-block.sh now again, this patch also removes the qemu-iotests-quick.sh script since we do not need that anymore (and having two shell wrapper scripts around the block tests seems rather confusing than helpful). Message-Id: <20190717111947.30356-4-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> [AJB: -makecheck to check-block.sh, move check-block to start and gate it] Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
f6fc1e30cf
commit
bdd95e4784
@ -142,7 +142,7 @@ check-unit-y += tests/test-uuid$(EXESUF)
|
||||
check-unit-y += tests/ptimer-test$(EXESUF)
|
||||
check-unit-y += tests/test-qapi-util$(EXESUF)
|
||||
|
||||
check-block-$(CONFIG_POSIX) += tests/qemu-iotests-quick.sh
|
||||
check-block-$(call land,$(CONFIG_POSIX),$(CONFIG_SOFTMMU)) += tests/check-block.sh
|
||||
|
||||
# All QTests for now are POSIX-only, but the dependencies are
|
||||
# really in libqtest, not in the testcases themselves.
|
||||
@ -1092,8 +1092,10 @@ clean-tcg: $(CLEAN_TCG_TARGET_RULES)
|
||||
|
||||
QEMU_IOTESTS_HELPERS-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_LINUX)) = tests/qemu-iotests/socket_scm_helper$(EXESUF)
|
||||
|
||||
.PHONY: check-tests/qemu-iotests-quick.sh
|
||||
check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF) qemu-io$(EXESUF) qemu-nbd$(EXESUF) $(QEMU_IOTESTS_HELPERS-y)
|
||||
.PHONY: check-tests/check-block.sh
|
||||
check-tests/check-block.sh: tests/check-block.sh qemu-img$(EXESUF) \
|
||||
qemu-io$(EXESUF) qemu-nbd$(EXESUF) $(QEMU_IOTESTS_HELPERS-y) \
|
||||
$(patsubst %,%/all,$(filter %-softmmu,$(TARGET_DIRS)))
|
||||
$<
|
||||
|
||||
.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y))
|
||||
@ -1167,7 +1169,7 @@ check-acceptance: check-venv $(TESTS_RESULTS_DIR)
|
||||
check-qapi-schema: $(patsubst %,check-%, $(check-qapi-schema-y)) check-tests/qapi-schema/doc-good.texi
|
||||
check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
|
||||
check-block: $(patsubst %,check-%, $(check-block-y))
|
||||
check: check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
|
||||
check: check-block check-qapi-schema check-unit check-softfloat check-qtest check-decodetree
|
||||
check-clean:
|
||||
rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
|
||||
rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
|
||||
|
@ -1,24 +1,48 @@
|
||||
#!/bin/sh
|
||||
|
||||
FORMAT_LIST="raw qcow2 qed vmdk vpc"
|
||||
if [ "$#" -ne 0 ]; then
|
||||
FORMAT_LIST="$@"
|
||||
# Honor the SPEED environment variable, just like we do it for the qtests.
|
||||
if [ "$SPEED" = "slow" ]; then
|
||||
format_list="raw qcow2"
|
||||
group=
|
||||
elif [ "$SPEED" = "thorough" ]; then
|
||||
format_list="raw qcow2 qed vmdk vpc"
|
||||
group=
|
||||
else
|
||||
format_list=qcow2
|
||||
group="-g auto"
|
||||
fi
|
||||
|
||||
export QEMU_PROG="$PWD/x86_64-softmmu/qemu-system-x86_64"
|
||||
export QEMU_IMG_PROG="$PWD/qemu-img"
|
||||
export QEMU_IO_PROG="$PWD/qemu-io"
|
||||
if [ "$#" -ne 0 ]; then
|
||||
format_list="$@"
|
||||
fi
|
||||
|
||||
if [ ! -x $QEMU_PROG ]; then
|
||||
echo "'make check-block' requires qemu-system-x86_64"
|
||||
exit 1
|
||||
if grep -q "TARGET_GPROF=y" *-softmmu/config-target.mak 2>/dev/null ; then
|
||||
echo "GPROF is enabled ==> Not running the qemu-iotests."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$(find . -name 'qemu-system-*' -print)" ]; then
|
||||
echo "No qemu-system binary available ==> Not running the qemu-iotests."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! command -v bash >/dev/null 2>&1 ; then
|
||||
echo "bash not available ==> Not running the qemu-iotests."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! (sed --version | grep 'GNU sed') > /dev/null 2>&1 ; then
|
||||
if ! command -v gsed >/dev/null 2>&1; then
|
||||
echo "GNU sed not available ==> Not running the qemu-iotests."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
cd tests/qemu-iotests
|
||||
|
||||
ret=0
|
||||
for FMT in $FORMAT_LIST ; do
|
||||
./check -T -nocache -$FMT || ret=1
|
||||
for fmt in $format_list ; do
|
||||
./check -makecheck -$fmt $group || ret=1
|
||||
done
|
||||
|
||||
exit $ret
|
||||
|
@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd tests/qemu-iotests
|
||||
|
||||
ret=0
|
||||
TEST_DIR=${TEST_DIR:-/tmp/qemu-iotests-quick-$$} ./check -T -qcow2 -g quick || ret=1
|
||||
|
||||
exit $ret
|
Loading…
Reference in New Issue
Block a user