[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 05/11] tests: Fix how qom-test is run
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL v2 05/11] tests: Fix how qom-test is run |
Date: |
Thu, 8 Oct 2015 15:02:05 +0200 |
We want to run qom-test for every architecture, without having to
manually add it to every architecture's list of tests. Commit 3687d53
accomplished this by adding it to every architecture's list
automatically.
However, some architectures inherit their tests from others, like this:
check-qtest-x86_64-y = $(check-qtest-i386-y)
check-qtest-microblazeel-y = $(check-qtest-microblaze-y)
check-qtest-xtensaeb-y = $(check-qtest-xtensa-y)
For such architectures, we ended up running the (slow!) test twice.
Commit 2b8419c attempted to avoid this by adding the test only when
it's not already present. Works only as long as we consider adding
the test to the architectures on the left hand side *after* the ones
on the right hand side: x86_64 after i386, microblazeel after
microblaze, xtensaeb after xtensa.
Turns out we consider them in $(SYSEMU_TARGET_LIST) order. Defined as
SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \
$(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak)))
On my machine, this results in the oder xtensa, x86_64, microblazeel,
microblaze, i386. Consequently, qom-test runs twice for microblazeel
and x86_64.
Replace this complex and flawed machinery with a much simpler one: add
generic tests (currently just qom-test) to check-qtest-generic-y
instead of check-qtest-$(target)-y for every target, then run
$(check-qtest-generic-y) for every target.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Andreas Färber <address@hidden>
Message-Id: <address@hidden>
---
tests/Makefile | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/tests/Makefile b/tests/Makefile
index e6474ba..c32a43e 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -86,6 +86,8 @@ check-block-$(CONFIG_POSIX) += tests/qemu-iotests-quick.sh
# All QTests for now are POSIX-only, but the dependencies are
# really in libqtest, not in the testcases themselves.
+check-qtest-generic-y =
+
gcov-files-ipack-y += hw/ipack/ipack.c
check-qtest-ipack-y += tests/ipoctal232-test$(EXESUF)
gcov-files-ipack-y += hw/char/ipoctal232.c
@@ -218,10 +220,7 @@ gcov-files-ppc64-y += ppc64-softmmu/hw/ppc/spapr_pci.c
check-qtest-microblazeel-y = $(check-qtest-microblaze-y)
check-qtest-xtensaeb-y = $(check-qtest-xtensa-y)
-# qom-test works for all sysemu architectures:
-$(foreach target,$(SYSEMU_TARGET_LIST), \
- $(if $(findstring tests/qom-test$(EXESUF),
$(check-qtest-$(target)-y)),, \
- $(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF))))
+check-qtest-generic-y += tests/qom-test$(EXESUF)
check-qapi-schema-y := $(addprefix tests/qapi-schema/, \
comments.json empty.json enum-empty.json enum-missing-data.json \
@@ -448,8 +447,11 @@ CFLAGS += $(TEST_CFLAGS)
TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
ifeq ($(CONFIG_POSIX),y)
-QTEST_TARGETS=$(foreach TARGET,$(TARGETS), $(if $(check-qtest-$(TARGET)-y),
$(TARGET),))
+QTEST_TARGETS = $(TARGETS)
check-qtest-y=$(foreach TARGET,$(TARGETS), $(check-qtest-$(TARGET)-y))
+check-qtest-y += $(check-qtest-generic-y)
+else
+QTEST_TARGETS =
endif
qtest-obj-y = tests/libqtest.o $(test-util-obj-y)
@@ -487,7 +489,7 @@ $(patsubst %, check-qtest-%, $(QTEST_TARGETS)):
check-qtest-%: $(check-qtest-y)
$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
QTEST_QEMU_IMG=qemu-img$(EXESUF) \
MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \
- gtester $(GTESTER_OPTIONS) -m=$(SPEED)
$(check-qtest-$*-y),"GTESTER $@")
+ gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y)
$(check-qtest-generic-y),"GTESTER $@")
$(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y); do \
echo Gcov report for $$f:;\
$(GCOV) $(GCOV_OPTIONS) $$f -o `dirname $$f`; \
--
2.4.3
- [Qemu-devel] [PULL v2 00/11] Fix device introspection regressions, Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 02/11] memory: allow destroying a non-empty MemoryRegion, Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 03/11] hw: do not pass NULL to memory_region_init from instance_init, Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 08/11] device-introspect-test: New, covering device introspection, Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 01/11] virtio-input: Fix device introspection on non-Linux hosts, Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 05/11] tests: Fix how qom-test is run,
Markus Armbruster <=
- [Qemu-devel] [PULL v2 07/11] libqtest: New hmp() & friends, Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 11/11] Revert "qdev: Use qdev_get_device_class() for -device <type>, help", Markus Armbruster, 2015/10/08
- [Qemu-devel] [PULL v2 06/11] libqtest: Clean up unused QTestState member sigact_old, Markus Armbruster, 2015/10/09
- Re: [Qemu-devel] [PULL v2 00/11] Fix device introspection regressions, Peter Maydell, 2015/10/09
- [Qemu-devel] [PULL v2 04/11] macio: move DBDMA_init from instance_init to realize, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v2 09/11] qmp: Fix device-list-properties not to crash for abstract device, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v2 10/11] qdev: Protect device-list-properties against broken devices, Markus Armbruster, 2015/10/09