diff mbox

[qom-next,1/5] tests: Add e1000 qtest

Message ID 1391619677-32387-2-git-send-email-afaerber@suse.de
State New
Headers show

Commit Message

Andreas Färber Feb. 5, 2014, 5:01 p.m. UTC
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 tests/Makefile     |  7 +++++++
 tests/e1000-test.c | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 tests/e1000-test.c

Comments

Stefan Hajnoczi Feb. 7, 2014, 3:48 p.m. UTC | #1
On Wed, Feb 05, 2014 at 06:01:13PM +0100, Andreas Färber wrote:
> +#include "libqtest.h"
> +
> +#include <glib.h>
> +#include <string.h>
> +#include "qemu/osdep.h"

Please put <system.h> includes before "user.h" includes.  That way we
can be sure our macros don't mess up system headers.

> +
> +static void nop(void)
> +{
> +}

I suggest a comment here to explain the point of this test:
/* The point of this test case is just to instantiate the device */
Andreas Färber Feb. 7, 2014, 6:06 p.m. UTC | #2
Am 07.02.2014 16:48, schrieb Stefan Hajnoczi:
> On Wed, Feb 05, 2014 at 06:01:13PM +0100, Andreas Färber wrote:
>> +#include "libqtest.h"
>> +
>> +#include <glib.h>
>> +#include <string.h>
>> +#include "qemu/osdep.h"
> 
> Please put <system.h> includes before "user.h" includes.  That way we
> can be sure our macros don't mess up system headers.

You are right in this case, but to my defense I copied this from another
file. ;) You'll find the "libqtest.h"-first pattern in:

endianness-test.c
fw_cfg-test.c
i440fx-test.c
m48t59-test.c
qom-test.c
rtc-test.c
tmp105-test.c

To make it clearer which example to copy from, feel free to submit a
patch cleaning those up.

NB in general it can be a valid technique to place a single "user.h" in
user.c before the usual <system> and "user" headers to assure that it
does not depend on external includes, but clearly that's not the case here.

>> +
>> +static void nop(void)
>> +{
>> +}
> 
> I suggest a comment here to explain the point of this test:
> /* The point of this test case is just to instantiate the device */

Thanks, will add a TODO.

Andreas
Stefan Hajnoczi Feb. 8, 2014, 10:23 a.m. UTC | #3
On Fri, Feb 07, 2014 at 07:06:58PM +0100, Andreas Färber wrote:
> Am 07.02.2014 16:48, schrieb Stefan Hajnoczi:
> > On Wed, Feb 05, 2014 at 06:01:13PM +0100, Andreas Färber wrote:
> >> +#include "libqtest.h"
> >> +
> >> +#include <glib.h>
> >> +#include <string.h>
> >> +#include "qemu/osdep.h"
> > 
> > Please put <system.h> includes before "user.h" includes.  That way we
> > can be sure our macros don't mess up system headers.
> 
> You are right in this case, but to my defense I copied this from another
> file. ;) You'll find the "libqtest.h"-first pattern in:
> 
> endianness-test.c
> fw_cfg-test.c
> i440fx-test.c
> m48t59-test.c
> qom-test.c
> rtc-test.c
> tmp105-test.c
> 
> To make it clearer which example to copy from, feel free to submit a
> patch cleaning those up.

Okay, I will.  Thanks!

Stefan
diff mbox

Patch

diff --git a/tests/Makefile b/tests/Makefile
index 42a52ff..57e21fc 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -64,6 +64,10 @@  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-pci-y += tests/e1000-test$(EXESUF)
+gcov-files-pci-y += hw/net/e1000.c
+
 check-qtest-i386-y = tests/endianness-test$(EXESUF)
 check-qtest-i386-y += tests/fdc-test$(EXESUF)
 gcov-files-i386-y = hw/fdc.c
@@ -77,6 +81,8 @@  check-qtest-i386-y += tests/i440fx-test$(EXESUF)
 check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
 check-qtest-i386-y += tests/blockdev-test$(EXESUF)
 check-qtest-i386-y += tests/qdev-monitor-test$(EXESUF)
+check-qtest-i386-y += $(check-qtest-pci-y)
+gcov-files-i386-y += $(gcov-files-pci-y)
 check-qtest-x86_64-y = $(check-qtest-i386-y)
 gcov-files-i386-y += i386-softmmu/hw/mc146818rtc.c
 gcov-files-x86_64-y = $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y))
@@ -196,6 +202,7 @@  tests/acpi-test$(EXESUF): tests/acpi-test.o $(libqos-obj-y)
 tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
 tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
 tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
+tests/e1000-test$(EXESUF): tests/e1000-test.o
 tests/qom-test$(EXESUF): tests/qom-test.o
 tests/blockdev-test$(EXESUF): tests/blockdev-test.o $(libqos-pc-obj-y)
 tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y)
diff --git a/tests/e1000-test.c b/tests/e1000-test.c
new file mode 100644
index 0000000..a053703
--- /dev/null
+++ b/tests/e1000-test.c
@@ -0,0 +1,35 @@ 
+/*
+ * QTest testcase for e1000 NIC
+ *
+ * Copyright (c) 2013-2014 SUSE LINUX Products GmbH
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+#include "libqtest.h"
+
+#include <glib.h>
+#include <string.h>
+#include "qemu/osdep.h"
+
+static void nop(void)
+{
+}
+
+int main(int argc, char **argv)
+{
+    QTestState *s;
+    int ret;
+
+    g_test_init(&argc, &argv, NULL);
+    qtest_add_func("/e1000/nop", nop);
+
+    s = qtest_start("-device e1000");
+    ret = g_test_run();
+
+    if (s) {
+        qtest_quit(s);
+    }
+
+    return ret;
+}