qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>
Subject: [Qemu-devel] [PATCH 4/9] make: add check targets based on gtester (v2)
Date: Thu, 15 Mar 2012 08:37:41 -0500	[thread overview]
Message-ID: <1331818666-31718-5-git-send-email-aliguori@us.ibm.com> (raw)
In-Reply-To: <1331818666-31718-1-git-send-email-aliguori@us.ibm.com>

This will run all tests through gtester.  The main targets are:

$ make check

Which will run each unit test and:

$ make check-report.html

Which will generate a nice HTML report of the test status.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
v1 -> v2
 - fix Makefile (Paolo)
 - add stubs to work around bug in recent gtester (Paolo)

gtester-cat: work around recent bug

merge into check command
---
 scripts/gtester-cat |   37 +++++++++++++++++++++++++++++
 tests/Makefile      |   64 +++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 97 insertions(+), 4 deletions(-)
 create mode 100755 scripts/gtester-cat

diff --git a/scripts/gtester-cat b/scripts/gtester-cat
new file mode 100755
index 0000000..de57e63
--- /dev/null
+++ b/scripts/gtester-cat
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Copyright IBM, Corp. 2012
+#
+# Authors:
+#  Anthony Liguori <aliguori@us.ibm.com>
+#
+# This work is licensed under the terms of the GNU GPLv2 or later.
+# See the COPYING file in the top-level directory.
+
+cat <<EOF
+<?xml version="1.0"?>
+<gtester>
+ <info>
+  <package>qemu</package>
+  <version>0.0</version>
+  <revision>rev</revision>
+ </info> 
+EOF
+
+for file in "$@"; do
+    first="yes"
+    cat $file | while read LINE; do
+	if test "$first" = "yes"; then
+	    first="no"
+	    continue
+	fi
+	if test "$LINE" = "<gtester>" -o "$LINE" = "</gtester>"; then
+	    continue
+	fi
+	echo $LINE
+    done
+done
+
+cat<<EOF
+</gtester>
+EOF
diff --git a/tests/Makefile b/tests/Makefile
index 9d7cfb3..254c06d 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -11,7 +11,13 @@ CHECKS += test-qmp-input-visitor$(EXESUF)
 CHECKS += test-qmp-output-visitor$(EXESUF)
 CHECKS += test-string-input-visitor$(EXESUF)
 CHECKS += test-string-output-visitor$(EXESUF)
-CHECKS += $(SRC_PATH)/tests/qemu-iotests-quick.sh
+
+TEST_SCRIPTS = $(SRC_PATH)/tests/qemu-iotests-quick.sh
+
+
+HW_TESTS=
+
+TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGET_DIRS)))
 
 check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o test-coroutine.o: $(GENERATED_HEADERS)
 
@@ -59,8 +65,58 @@ tests/rtc-test: tests/rtc-test.o tests/libqtest.o
 
 .PHONY: check check-block
 
-check: $(CHECKS)
-	$(call quiet-command, gtester $(CHECKS), "  CHECK")
-
 check-block:
 	$(call quiet-command, $(SHELL) $(SRC_PATH)/tests/check-block.sh , "  CHECK")
+
+check-help:
+	@echo "Regression targets:"
+	@echo
+	@echo " make check                Run all tests"
+	@echo " make check-qtest          Run qtest tests"
+	@echo " make check-unit           Run qobject tests"
+	@echo " make check-block          Run block tests"
+	@echo " make check-report.html    Generates an HTML test report"
+	@echo
+	@echo "Please note that HTML reports do not regenerate if the unit tests"
+	@echo "has not changed."
+	@echo
+	@echo "The variable SPEED can be set to control the gtester speed setting"
+
+.SECONDARY:
+
+SPEED ?= quick
+
+# Reports
+check-report-qtest-%.log: $(HW_TESTS)
+	$(call quiet-command,QTEST_QEMU_BINARY=`basename $@ .log | cut -f4 -d-`-softmmu/qemu-system-`basename $@ .log | cut -f4 -d-` \
+	  gtester -k -q -o $@ -m=$(SPEED) $(HW_TESTS),"  TEST   $^ (`basename $@ .log | cut -f4 -d-`)")
+
+check-report-unit.log: $(CHECKS)
+	$(call quiet-command,gtester -k -q -m=$(SPEED) -o $@ $^, "  TEST   $^")
+
+check-report.log: check-report-unit.log $(patsubst %,check-report-qtest-%.log, $(TARGETS))
+	$(call quiet-command,$(SRC_PATH)/scripts/gtester-cat $^ > $@, "  GEN    $@")
+
+check-report.html: check-report.log
+	$(call quiet-command,gtester-report $< > $@, "  GEN    $@")
+
+# Check tests
+
+check-qtest-%: $(HW_TESTS)
+	@for test in $^; do \
+	    arch=`echo $@ | cut -f3- -d-`; \
+	    echo "Running '$$test' with qemu-system-$$arch..."; \
+	    $(SRC_PATH)/scripts/qtest $$arch-softmmu/qemu-system-$$arch $$test || exit $$?; \
+	done
+
+check-qtest: $(patsubst %,check-qtest-%, $(TARGETS))
+
+check-unit: $(addprefix $(shell pwd)/, $(CHECKS)) $(TEST_SCRIPTS)
+	@for test in $^; do \
+	    echo "Running '$$test'..."; \
+	    $$test || exit $?; \
+	done
+
+check: check-unit check-qtest
+
+.PHONY: check-help check-qtest check-unit check
-- 
1.7.5.4

  parent reply	other threads:[~2012-03-15 13:38 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-15 13:37 [Qemu-devel] [PATCH 0/9] qtest: a testing framework for devices (v3) Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 1/9] w32: Support tests (make check) Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 2/9] qtest: add test framework (v3) Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 3/9] qtest: add C version of test infrastructure Anthony Liguori
2012-03-15 14:42   ` Stefan Hajnoczi
2012-03-15 14:58     ` Kevin Wolf
2012-03-15 15:04       ` Paolo Bonzini
2012-03-15 15:03     ` Anthony Liguori
2012-03-15 13:37 ` Anthony Liguori [this message]
2012-03-15 15:08   ` [Qemu-devel] [PATCH 4/9] make: add check targets based on gtester (v2) Paolo Bonzini
2012-03-15 13:37 ` [Qemu-devel] [PATCH 5/9] qtest: IRQ interception infrastructure (v2) Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 6/9] libqtest: add IRQ intercept commands Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 7/9] rtc: split out macros into a header file and use in test case Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 8/9] qtest: add rtc-test test-case (v3) Anthony Liguori
2012-03-15 13:37 ` [Qemu-devel] [PATCH 9/9] qtest: add clock management Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1331818666-31718-5-git-send-email-aliguori@us.ibm.com \
    --to=aliguori@us.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).