* [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test
@ 2015-01-29 14:58 Markus Armbruster
2015-01-29 14:58 ` [Qemu-devel] [PATCH RFC 1/1] qtest: Add generic " Markus Armbruster
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Markus Armbruster @ 2015-01-29 14:58 UTC (permalink / raw)
To: qemu-devel; +Cc: afaerber, mst
The test uses QMP introspection to find PCI devices, then tries to
cold-plug each of them. Could be extended to hot-plug and unplug.
The tests' QMP introspection part is patterned after Andreas's
qom-test, which uses QMP to find machine types.
The following devices pass the test:
AC97 ich9-ahci pcnet
ES1370 ich9-intel-hda piix3-ide
VGA ich9-usb-ehci1 piix3-ide-xen
am53c974 ich9-usb-ehci2 piix3-usb-uhci
cirrus-vga ich9-usb-uhci1 piix4-ide
dc390 ich9-usb-uhci2 piix4-usb-uhci
e1000 ich9-usb-uhci3 pvscsi
e1000-82540em ich9-usb-uhci4 qxl-vga
e1000-82544gc ich9-usb-uhci5 rtl8139
e1000-82545em ich9-usb-uhci6 sdhci-pci
edu intel-hda secondary-vga
i6300esb ioh3420 tpci200
i82550 lsi53c810 usb-ehci
i82551 lsi53c895a virtio-balloon-pci
i82557a megasas virtio-blk-pci
i82557b megasas-gen2 virtio-net-pci
i82557c ne2k_pci virtio-rng-pci
i82558a nec-usb-xhci virtio-scsi-pci
i82558b nvme virtio-serial-pci
i82559a pci-bridge vmware-svga
i82559b pci-ohci vmxnet3
i82559c pci-serial vt82c686b-usb-uhci
i82559er pci-serial-2x x3130-upstream
i82562 pci-serial-4x xen-pvdevice
i82801 pci-testdev xio3130-downstream
i82801b11-bridge
Many of them are not currently tested at all.
This test does everything a number of existing tests currently do:
ac97-test.c e1000-test.c es1370-test.c eepro100-test.c
ne2000-test.c nvme-test.c pcnet-test.c rtl8139-test.c
tpci200-test.c virtio-balloon-test.c virtio-rng-test.c
vmxnet3-test.c
They are all marked "TODO: Replace with functional tests". Options
* Delete them now, undelete when we add functional tests
* Keep them, blacklist the devices in pci-devs-test.c
* Live with the duplicated testing
Andreas, I guess you got an opinion here.
There's overlap with a few others:
i82801b11-test.c usb-hcd-ehci-test.c usb-hcd-ohci-test.c
usb-hcd-xhci-test.c virtio-blk-test.c virtio-net-test.c
virtio-scsi-test.c virtio-serial-test.c
Options:
* Blacklist the devices in pci-devs-test.c
* Live with the duplicated testing
Andreas?
I manually blacklisted devices unavailable with -device, because QMP
introspection can't tell (pity).
I further blacklisted devices that require a suitable host device to
pass through:
kvm-pci-assign vhost-scsi-pci xen-pci-passthrough
vfio-pci
I blacklisted virtio-9p-pci and ivshmem for now, because they require
funky backends.
I blacklisted qxl and xen-platform, because they fail the test.
The test runs only for the x86 targets, just like all of
$(check-qtest-pci-y). It could run on other targets, as long as we
can find a machine type with a PCI bus.
Markus Armbruster (1):
qtest: Add generic PCI device test
tests/Makefile | 2 +
tests/pci-devs-test.c | 299 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 301 insertions(+)
create mode 100644 tests/pci-devs-test.c
--
1.9.3
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH RFC 1/1] qtest: Add generic PCI device test
2015-01-29 14:58 [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test Markus Armbruster
@ 2015-01-29 14:58 ` Markus Armbruster
2015-01-29 17:13 ` [Qemu-devel] [PATCH RFC 0/1] qtest: Generic " Andreas Färber
2015-01-29 19:46 ` John Snow
2 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2015-01-29 14:58 UTC (permalink / raw)
To: qemu-devel; +Cc: afaerber, mst
Covers only cold plug with -device so far.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
tests/Makefile | 2 +
tests/pci-devs-test.c | 299 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 301 insertions(+)
create mode 100644 tests/pci-devs-test.c
diff --git a/tests/Makefile b/tests/Makefile
index c2e2e52..230238d 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -100,6 +100,7 @@ gcov-files-virtio-y += i386-softmmu/hw/char/virtio-serial-bus.c
check-qtest-virtio-y += $(check-qtest-virtioserial-y)
gcov-files-virtio-y += $(gcov-files-virtioserial-y)
+check-qtest-pci-y += tests/pci-devs-test$(EXESUF)
check-qtest-pci-y += tests/e1000-test$(EXESUF)
gcov-files-pci-y += hw/net/e1000.c
check-qtest-pci-y += tests/rtl8139-test$(EXESUF)
@@ -319,6 +320,7 @@ tests/bios-tables-test$(EXESUF): tests/bios-tables-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/pci-devs-test$(EXESUF): tests/pci-devs-test.o
tests/e1000-test$(EXESUF): tests/e1000-test.o
tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o
tests/pcnet-test$(EXESUF): tests/pcnet-test.o
diff --git a/tests/pci-devs-test.c b/tests/pci-devs-test.c
new file mode 100644
index 0000000..27cbeee
--- /dev/null
+++ b/tests/pci-devs-test.c
@@ -0,0 +1,299 @@
+/*
+ * Generic PCI device test cases.
+ *
+ * Copyright (c) 2015 Red Hat Inc.
+ *
+ * Authors:
+ * Markus Armbruster <armbru@redhat.com>,
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+/*
+ * Covers only cold plug with -device so far. Better than nothing.
+ * Improvements welcome.
+ */
+
+#include "qemu-common.h"
+#include "libqtest.h"
+#include "qapi/qmp/types.h"
+
+typedef struct Prop {
+ const char *name;
+ const char *value;
+} Prop;
+
+typedef struct {
+ Prop prop[16];
+ int nprop;
+ const char *xprops;
+ int nchr;
+ int nblk;
+} TestCase;
+
+static const char *blacklist[] = {
+ /* cannot_instantiate_with_device_add_yet, no way to introspect it */
+ "Bonito",
+ "ICH9 SMB",
+ "ICH9-LPC",
+ "PIIX3",
+ "PIIX3-xen",
+ "PIIX4",
+ "PIIX4_PM",
+ "VT82C686B",
+ "dec-21154",
+ "e500-host-bridge",
+ "grackle",
+ "gt64120_pci",
+ "i440FX",
+ "mch",
+ "pbm-pci",
+ "ppc4xx-host-bridge",
+ "raven",
+ "s390-pcihost",
+ "sh_pci_host",
+ "spapr-pci-host-bridge",
+ "u3-agp",
+ "uni-north-agp",
+ "uni-north-internal-pci",
+ "uni-north-pci",
+ "versatile_pci_host",
+ /* require a suitable host device to pass through */
+ "kvm-pci-assign",
+ "vfio-pci",
+ "vhost-scsi-pci",
+ "xen-pci-passthrough",
+ /* require a backend this test can't setup (yet) */
+ "virtio-9p-pci", /* requires -fsdev ... */
+ "ivshmem", /* requires special chardev */
+ /* test fails */
+ "qxl", /* qemu crashes */
+ "xen-platform" /* qemu crashes */
+};
+
+static struct {
+ const char *name, *propstr;
+} oddball[] = {
+ { "nvme", "serial=foo" },
+ { "xen-pvdevice", "device-id=666" },
+ { "pci-bridge", "chassis_nr=13" },
+};
+
+static bool is_blacklisted(const char *typename)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(blacklist); i++) {
+ if (!strcmp(blacklist[i], typename)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+static void add_xprops(TestCase *tcase, const char *typename)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(oddball); i++) {
+ if (!strcmp(oddball[i].name, typename)) {
+ tcase->xprops = oddball[i].propstr;
+ break;
+ }
+ }
+}
+
+static void add_prop(TestCase *tcase, const char *name, const char *value)
+{
+ g_assert(tcase->nprop < ARRAY_SIZE(tcase->prop));
+ tcase->prop[tcase->nprop].name = g_strdup(name);
+ tcase->prop[tcase->nprop].value = g_strdup(value);
+ tcase->nprop++;
+}
+
+static char *fmt_props(const Prop prop[], int nprop, const char *xprops)
+{
+ char **strv = g_new(char *, nprop + 2);
+ int i;
+ char *props;
+
+ for (i = 0; i < nprop; i++) {
+ strv[i] = g_strdup_printf("%s=%s", prop[i].name, prop[i].value);
+ }
+ strv[nprop] = (char *)xprops;
+ strv[nprop + 1] = NULL;
+
+ props = g_strjoinv(",", strv);
+
+ for (i = 0; i < nprop; i++) {
+ g_free(strv[i]);
+ }
+
+ return props;
+}
+
+static char *fmt_blkid(char *buf, size_t sz, int index)
+{
+ size_t len = snprintf(buf, sz, "blk%d", index);
+ g_assert(len < sz);
+ return buf;
+}
+
+static char *fmt_blockdevs(int nblk)
+{
+ char **strv = g_new(char *, nblk + 1);
+ int i;
+ char buf[64];
+ char *blks;
+
+ for (i = 0; i < nblk; i++) {
+ strv[i] = g_strdup_printf("-drive if=none,id=%s,format=raw,file=/dev/null",
+ fmt_blkid(buf, sizeof(buf), i));
+ }
+ strv[nblk] = NULL;
+
+ blks = g_strjoinv(" ", strv);
+
+ for (i = 0; i < nblk; i++) {
+ g_free(strv[i]);
+ }
+
+ return blks;
+}
+
+static char *fmt_chrid(char *buf, size_t sz, int index)
+{
+ size_t len = snprintf(buf, sz, "chr%d", index);
+ g_assert(len < sz);
+ return buf;
+}
+
+static char *fmt_chardevs(int nchr)
+{
+ char **strv = g_new(char *, nchr + 1);
+ int i;
+ char buf[64];
+ char *chrs;
+
+ for (i = 0; i < nchr; i++) {
+ strv[i] = g_strdup_printf("-chardev null,id=%s",
+ fmt_chrid(buf, sizeof(buf), i));
+ }
+ strv[nchr] = NULL;
+
+ chrs = g_strjoinv(" ", strv);
+
+ for (i = 0; i < nchr; i++) {
+ g_free(strv[i]);
+ }
+
+ return chrs;
+}
+
+static void test_device(gconstpointer data)
+{
+ const TestCase *tcase = data;
+ char *blks = fmt_blockdevs(tcase->nblk);
+ char *chrs = fmt_chardevs(tcase->nchr);
+ char *props = fmt_props(tcase->prop, tcase->nprop, tcase->xprops);
+ char *args;
+ QDict *response;
+
+ args = g_strconcat(blks, chrs, " -device '", props, "'", NULL);
+ g_free(props);
+ qtest_start(args);
+ response = qmp("{ 'execute': 'quit' }");
+ g_assert(qdict_haskey(response, "return"));
+ qtest_end();
+ g_free(args);
+}
+
+static void add_backends(TestCase *tcase, const char *typename)
+{
+ QDict *response, *dpinfo;
+ QList *list;
+ const QListEntry *p;
+ QObject *qobj;
+ QString *qstr;
+ const char *name;
+ char buf[64];
+
+ response = qmp("{ 'execute': 'device-list-properties', "
+ "'arguments': { 'typename': %s } }", typename);
+ g_assert(response);
+ list = qdict_get_qlist(response, "return");
+ g_assert(list);
+
+ for (p = qlist_first(list); p; p = qlist_next(p)) {
+ dpinfo = qobject_to_qdict(qlist_entry_obj(p));
+ g_assert(dpinfo);
+ qobj = qdict_get(dpinfo, "name");
+ g_assert(qobj);
+ qstr = qobject_to_qstring(qobj);
+ g_assert(qstr);
+ name = qstring_get_str(qstr);
+
+ if (strstart(name, "chardev", NULL)) {
+ add_prop(tcase, name,
+ fmt_chrid(buf, sizeof(buf), tcase->nchr++));
+ } else if (strstart(name, "drive", NULL)) {
+ add_prop(tcase, name,
+ fmt_blkid(buf, sizeof(buf), tcase->nblk++));
+ }
+ }
+
+ QDECREF(response);
+}
+
+static void add_device_test_cases(void)
+{
+ QDict *response, *otinfo;
+ QList *list;
+ const QListEntry *p;
+ QObject *qobj;
+ QString *qstr;
+ const char *name, *path;
+ TestCase *tcase;
+
+ qtest_start("-machine none");
+ response = qmp("{ 'execute': 'qom-list-types', "
+ "'arguments': { 'implements': 'pci-device' } }");
+ g_assert(response);
+ list = qdict_get_qlist(response, "return");
+ g_assert(list);
+
+ for (p = qlist_first(list); p; p = qlist_next(p)) {
+ otinfo = qobject_to_qdict(qlist_entry_obj(p));
+ g_assert(otinfo);
+ qobj = qdict_get(otinfo, "name");
+ g_assert(qobj);
+ qstr = qobject_to_qstring(qobj);
+ g_assert(qstr);
+ name = qstring_get_str(qstr);
+
+ if (is_blacklisted(name)) {
+ continue;
+ }
+
+ tcase = g_new0(TestCase, 1);
+ add_prop(tcase, "driver", name);
+ add_backends(tcase, name);
+ add_xprops(tcase, name);
+
+ path = g_strdup_printf("/pci-devs/%s", name);
+ g_test_add_data_func(path, tcase, test_device);
+ }
+
+ QDECREF(response);
+ qtest_end();
+}
+
+int main(int argc, char **argv)
+{
+ g_test_init(&argc, &argv, NULL);
+
+ add_device_test_cases();
+
+ return g_test_run();
+}
--
1.9.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test
2015-01-29 14:58 [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test Markus Armbruster
2015-01-29 14:58 ` [Qemu-devel] [PATCH RFC 1/1] qtest: Add generic " Markus Armbruster
@ 2015-01-29 17:13 ` Andreas Färber
2015-02-12 14:45 ` Markus Armbruster
2015-01-29 19:46 ` John Snow
2 siblings, 1 reply; 5+ messages in thread
From: Andreas Färber @ 2015-01-29 17:13 UTC (permalink / raw)
To: Markus Armbruster, qemu-devel; +Cc: mst
Hi Markus,
Again thanks for digging into this.
Am 29.01.2015 um 15:58 schrieb Markus Armbruster:
> This test does everything a number of existing tests currently do:
>
> ac97-test.c e1000-test.c es1370-test.c eepro100-test.c
> ne2000-test.c nvme-test.c pcnet-test.c rtl8139-test.c
> tpci200-test.c virtio-balloon-test.c virtio-rng-test.c
> vmxnet3-test.c
>
> They are all marked "TODO: Replace with functional tests". Options
>
> * Delete them now, undelete when we add functional tests
>
> * Keep them, blacklist the devices in pci-devs-test.c
>
> * Live with the duplicated testing
>
> Andreas, I guess you got an opinion here.
My preference would be to not remove device files. "Functional tests"
refers to doing real device-specific MMIO or PIO, and the intent of
contributing such stubs, beyond the basic -device init/realize testing,
was lowering the hurdle so that maintainers can require bugfixers to
contribute a matching test case where applicable.
> There's overlap with a few others:
>
> i82801b11-test.c usb-hcd-ehci-test.c usb-hcd-ohci-test.c
> usb-hcd-xhci-test.c virtio-blk-test.c virtio-net-test.c
> virtio-scsi-test.c virtio-serial-test.c
>
> Options:
>
> * Blacklist the devices in pci-devs-test.c
>
> * Live with the duplicated testing
>
> Andreas?
Not having reviewed the respective test code yet, I would suggest to
keep generic tests in pci-devs-test.c and to rather drop generic tests
from device-specific files (de-duplication).
While I haven't benchmarked it, I assume that the bigger contributor to
qtest runtime is the overhead of spawning qemu-system-* processes rather
than running multiple tests per process. So living with duplication may
be a convenience option.
Regards,
Andreas
--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu,
Graham Norton; HRB 21284 (AG Nürnberg)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test
2015-01-29 14:58 [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test Markus Armbruster
2015-01-29 14:58 ` [Qemu-devel] [PATCH RFC 1/1] qtest: Add generic " Markus Armbruster
2015-01-29 17:13 ` [Qemu-devel] [PATCH RFC 0/1] qtest: Generic " Andreas Färber
@ 2015-01-29 19:46 ` John Snow
2 siblings, 0 replies; 5+ messages in thread
From: John Snow @ 2015-01-29 19:46 UTC (permalink / raw)
To: Markus Armbruster, qemu-devel; +Cc: afaerber, mst
On 01/29/2015 09:58 AM, Markus Armbruster wrote:
> The test uses QMP introspection to find PCI devices, then tries to
> cold-plug each of them. Could be extended to hot-plug and unplug.
>
> The tests' QMP introspection part is patterned after Andreas's
> qom-test, which uses QMP to find machine types.
>
> The following devices pass the test:
>
> AC97 ich9-ahci pcnet
> ES1370 ich9-intel-hda piix3-ide
> VGA ich9-usb-ehci1 piix3-ide-xen
> am53c974 ich9-usb-ehci2 piix3-usb-uhci
> cirrus-vga ich9-usb-uhci1 piix4-ide
> dc390 ich9-usb-uhci2 piix4-usb-uhci
> e1000 ich9-usb-uhci3 pvscsi
> e1000-82540em ich9-usb-uhci4 qxl-vga
> e1000-82544gc ich9-usb-uhci5 rtl8139
> e1000-82545em ich9-usb-uhci6 sdhci-pci
> edu intel-hda secondary-vga
> i6300esb ioh3420 tpci200
> i82550 lsi53c810 usb-ehci
> i82551 lsi53c895a virtio-balloon-pci
> i82557a megasas virtio-blk-pci
> i82557b megasas-gen2 virtio-net-pci
> i82557c ne2k_pci virtio-rng-pci
> i82558a nec-usb-xhci virtio-scsi-pci
> i82558b nvme virtio-serial-pci
> i82559a pci-bridge vmware-svga
> i82559b pci-ohci vmxnet3
> i82559c pci-serial vt82c686b-usb-uhci
> i82559er pci-serial-2x x3130-upstream
> i82562 pci-serial-4x xen-pvdevice
> i82801 pci-testdev xio3130-downstream
> i82801b11-bridge
>
> Many of them are not currently tested at all.
>
> This test does everything a number of existing tests currently do:
>
> ac97-test.c e1000-test.c es1370-test.c eepro100-test.c
> ne2000-test.c nvme-test.c pcnet-test.c rtl8139-test.c
> tpci200-test.c virtio-balloon-test.c virtio-rng-test.c
> vmxnet3-test.c
>
> They are all marked "TODO: Replace with functional tests". Options
>
> * Delete them now, undelete when we add functional tests
>
> * Keep them, blacklist the devices in pci-devs-test.c
>
> * Live with the duplicated testing
>
I'd be happy with stubbing out some of those tests, so we at least have
some record and starting place for beginning tests again in the future.
So... Delete the test interface, keep the tests?
Or: Remove these devices from the generic test, but factor the generic
test code such that these device tests can just invoke the generic
routines from their own tests.
That way there's no duplication, everybody gets to use the shared code,
and we keep the record that we'd like to enhance testing of these devices.
> Andreas, I guess you got an opinion here.
>
> There's overlap with a few others:
>
> i82801b11-test.c usb-hcd-ehci-test.c usb-hcd-ohci-test.c
> usb-hcd-xhci-test.c virtio-blk-test.c virtio-net-test.c
> virtio-scsi-test.c virtio-serial-test.c
>
> Options:
>
> * Blacklist the devices in pci-devs-test.c
>
> * Live with the duplicated testing
>
If you factor out the core generic PCI testing as above, you can just
cull the common parts out of these tests and let them do their own
functional tests on top, then blacklist them from the generic dispatcher.
> Andreas?
>
> I manually blacklisted devices unavailable with -device, because QMP
> introspection can't tell (pity).
>
> I further blacklisted devices that require a suitable host device to
> pass through:
>
> kvm-pci-assign vhost-scsi-pci xen-pci-passthrough
> vfio-pci
>
> I blacklisted virtio-9p-pci and ivshmem for now, because they require
> funky backends.
>
> I blacklisted qxl and xen-platform, because they fail the test.
>
> The test runs only for the x86 targets, just like all of
> $(check-qtest-pci-y). It could run on other targets, as long as we
> can find a machine type with a PCI bus.
>
> Markus Armbruster (1):
> qtest: Add generic PCI device test
>
> tests/Makefile | 2 +
> tests/pci-devs-test.c | 299 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 301 insertions(+)
> create mode 100644 tests/pci-devs-test.c
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test
2015-01-29 17:13 ` [Qemu-devel] [PATCH RFC 0/1] qtest: Generic " Andreas Färber
@ 2015-02-12 14:45 ` Markus Armbruster
0 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2015-02-12 14:45 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-devel, mst
Andreas Färber <afaerber@suse.de> writes:
> Hi Markus,
>
> Again thanks for digging into this.
>
> Am 29.01.2015 um 15:58 schrieb Markus Armbruster:
>> This test does everything a number of existing tests currently do:
>>
>> ac97-test.c e1000-test.c es1370-test.c eepro100-test.c
>> ne2000-test.c nvme-test.c pcnet-test.c rtl8139-test.c
>> tpci200-test.c virtio-balloon-test.c virtio-rng-test.c
>> vmxnet3-test.c
>>
>> They are all marked "TODO: Replace with functional tests". Options
>>
>> * Delete them now, undelete when we add functional tests
>>
>> * Keep them, blacklist the devices in pci-devs-test.c
>>
>> * Live with the duplicated testing
>>
>> Andreas, I guess you got an opinion here.
>
> My preference would be to not remove device files. "Functional tests"
> refers to doing real device-specific MMIO or PIO, and the intent of
> contributing such stubs, beyond the basic -device init/realize testing,
> was lowering the hurdle so that maintainers can require bugfixers to
> contribute a matching test case where applicable.
Yes, asking people who aren't familiar with device tests to create one
from scratch is asking a lot. Asking them to copy a skeleton and flesh
it out is much more practical. Almost as good as fleshing out one of
your stubs, I think.
A non-skeleton test for a really simple PCI device could serve as
skeleton. wdt_i6300esb.c is a possible candidate.
>> There's overlap with a few others:
>>
>> i82801b11-test.c usb-hcd-ehci-test.c usb-hcd-ohci-test.c
>> usb-hcd-xhci-test.c virtio-blk-test.c virtio-net-test.c
>> virtio-scsi-test.c virtio-serial-test.c
>>
>> Options:
>>
>> * Blacklist the devices in pci-devs-test.c
>>
>> * Live with the duplicated testing
>>
>> Andreas?
>
> Not having reviewed the respective test code yet, I would suggest to
> keep generic tests in pci-devs-test.c and to rather drop generic tests
> from device-specific files (de-duplication).
Makes sense to me. However, some existing device-specific files won't
have any tests left then. What do you want me to do with them?
> While I haven't benchmarked it, I assume that the bigger contributor to
> qtest runtime is the overhead of spawning qemu-system-* processes rather
> than running multiple tests per process. So living with duplication may
> be a convenience option.
My new test is a pig in that regard: it runs qemu-system-FOO once per
non-blacklisted PCI device.
I could pack tests into fewer runs by using more than just a single PCI
slot. i440FX can do 30 without a pci-bridge (would probably a bad idea
for this test) and multifunction (certainly a bad idea). However, when
a test fails, the culprit isn't as obvious then. Do you want me to try
that?
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-02-12 14:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-29 14:58 [Qemu-devel] [PATCH RFC 0/1] qtest: Generic PCI device test Markus Armbruster
2015-01-29 14:58 ` [Qemu-devel] [PATCH RFC 1/1] qtest: Add generic " Markus Armbruster
2015-01-29 17:13 ` [Qemu-devel] [PATCH RFC 0/1] qtest: Generic " Andreas Färber
2015-02-12 14:45 ` Markus Armbruster
2015-01-29 19:46 ` John Snow
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.