diff mbox

tests: avoid running duplicate qom-tests

Message ID 1411081173-14618-1-git-send-email-mdroth@linux.vnet.ibm.com
State New
Headers show

Commit Message

Michael Roth Sept. 18, 2014, 10:59 p.m. UTC
Since 3687d532 we've been unconditionally adding qom-test to our qtests
for every arch. However, some archs inherit their tests from Makefile
variables for other archs, such as i386/x86_64,
microblaze/microblazeel, and xtensa/xtensaeb. Since these are evaluated
in a lazy manner, we ultimately end up adding qom-test twice.

In the case x86_64, where we have a large number of machine types that
we rerun qom-test for, this has lead to a fairly noticeable increase
in the overall run-time of `make check` (78s vs. 42s on my machine).
Similar speed-ups are visible for other such archs, but not nearly as
significant.

Fix this by only adding qom-test to an arch's test list if it's not
already present.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Peter Maydell Sept. 18, 2014, 11:18 p.m. UTC | #1
On 18 September 2014 15:59, Michael Roth <mdroth@linux.vnet.ibm.com> wrote:
> Since 3687d532 we've been unconditionally adding qom-test to our qtests
> for every arch. However, some archs inherit their tests from Makefile
> variables for other archs, such as i386/x86_64,
> microblaze/microblazeel, and xtensa/xtensaeb. Since these are evaluated
> in a lazy manner, we ultimately end up adding qom-test twice.
>
> In the case x86_64, where we have a large number of machine types that
> we rerun qom-test for, this has lead to a fairly noticeable increase
> in the overall run-time of `make check` (78s vs. 42s on my machine).
> Similar speed-ups are visible for other such archs, but not nearly as
> significant.
>
> Fix this by only adding qom-test to an arch's test list if it's not
> already present.
>
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
>  tests/Makefile | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tests/Makefile b/tests/Makefile
> index a5e3d0c..9f2a35c 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -192,7 +192,8 @@ check-qtest-xtensaeb-y = $(check-qtest-xtensa-y)
>
>  # qom-test works for all sysemu architectures:
>  $(foreach target,$(SYSEMU_TARGET_LIST), \
> -    $(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF)))
> +       $(if $(findstring tests/qom-test$(EXESUF), $(check-qtest-$(target)-y)),, \
> +               $(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF))))

See also Andreas' suggested fix:
https://lists.gnu.org/archive/html/qemu-devel/2014-04/msg01087.html
and mine:
https://lists.gnu.org/archive/html/qemu-devel/2014-03/msg05771.html

Andreas didn't like my patch because it sorts all the tests
as a side effect, and I didn't like the hard-coded listing
of architectures in Andreas' patch. It looks like maybe your
version will satisfy both of us :-)

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM
Michael Tokarev Sept. 24, 2014, 8 a.m. UTC | #2
Applied to -trivial, I overlooked it initially, not reading Peter's
comments thinkfully.  Thank you!

/mjt
diff mbox

Patch

diff --git a/tests/Makefile b/tests/Makefile
index a5e3d0c..9f2a35c 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -192,7 +192,8 @@  check-qtest-xtensaeb-y = $(check-qtest-xtensa-y)
 
 # qom-test works for all sysemu architectures:
 $(foreach target,$(SYSEMU_TARGET_LIST), \
-    $(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF)))
+	$(if $(findstring tests/qom-test$(EXESUF), $(check-qtest-$(target)-y)),, \
+		$(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF))))
 
 check-qapi-schema-y := $(addprefix tests/qapi-schema/, \
         comments.json empty.json funny-char.json indented-expr.json \