[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v3 06/12] tests: Fix how qom-test is run
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL v3 06/12] tests: Fix how qom-test is run |
Date: |
Fri, 9 Oct 2015 16:36:41 +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 v3 08/12] libqtest: New hmp() & friends, (continued)
- [Qemu-devel] [PULL v3 08/12] libqtest: New hmp() & friends, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 07/12] libqtest: Clean up unused QTestState member sigact_old, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 01/12] update-linux-headers: Rename SW_MAX to SW_MAX_, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 09/12] device-introspect-test: New, covering device introspection, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 03/12] memory: allow destroying a non-empty MemoryRegion, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 02/12] virtio-input: Fix device introspection on non-Linux hosts, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 12/12] Revert "qdev: Use qdev_get_device_class() for -device <type>, help", Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 04/12] hw: do not pass NULL to memory_region_init from instance_init, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 11/12] qdev: Protect device-list-properties against broken devices, Markus Armbruster, 2015/10/09
- [Qemu-devel] [PULL v3 06/12] tests: Fix how qom-test is run,
Markus Armbruster <=
- [Qemu-devel] [PULL v3 10/12] qmp: Fix device-list-properties not to crash for abstract device, Markus Armbruster, 2015/10/10
- [Qemu-devel] [PULL v3 05/12] macio: move DBDMA_init from instance_init to realize, Markus Armbruster, 2015/10/10
- Re: [Qemu-devel] [PULL v3 00/12] Fix device introspection regressions, Peter Maydell, 2015/10/12