From nobody Thu Apr 25 05:23:42 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1499174051631801.6057661454544; Tue, 4 Jul 2017 06:14:11 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8ED618EB3F; Tue, 4 Jul 2017 13:14:05 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E5C261751C; Tue, 4 Jul 2017 13:14:04 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4B80C3FAE0; Tue, 4 Jul 2017 13:14:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v64DDvHQ009686 for ; Tue, 4 Jul 2017 09:13:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id D5E8717551; Tue, 4 Jul 2017 13:13:57 +0000 (UTC) Received: from inaba.usersys.redhat.com (unknown [10.43.2.82]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 369C11751C for ; Tue, 4 Jul 2017 13:13:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8ED618EB3F Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8ED618EB3F From: Andrea Bolognani To: libvir-list@redhat.com Date: Tue, 4 Jul 2017 15:13:51 +0200 Message-Id: <1499174031-15411-1-git-send-email-abologna@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH] tests: Add DO_TEST_PARSE_ERROR() to qemuxml2xml X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 04 Jul 2017 13:14:07 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" qemuxml2argv already supports the ability to include test cases that are known not to make it past XML parsing, and since we want to keep qemuxml2xml in sync with it as much as possible, we need to implement this missing feature. Signed-off-by: Andrea Bolognani --- tests/qemuxml2xmltest.c | 104 +++++++++++++++++++++++++++++++-------------= ---- 1 file changed, 67 insertions(+), 37 deletions(-) diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index c74614c..66729fa 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -28,6 +28,10 @@ enum { WHEN_BOTH =3D 3, }; =20 +typedef enum { + FLAG_EXPECT_PARSE_ERROR =3D 1 << 0, +} virQemuXML2XMLTestFlags; + struct testInfo { char *inName; char *outActiveName; @@ -36,6 +40,8 @@ struct testInfo { virBitmapPtr activeVcpus; =20 virQEMUCapsPtr qemuCaps; + + virQemuXML2XMLTestFlags flags; }; =20 static int @@ -55,12 +61,15 @@ static int testXML2XMLActive(const void *opaque) { const struct testInfo *info =3D opaque; + testCompareDomXML2XMLResult flags =3D TEST_COMPARE_DOM_XML2XML_RESULT_= SUCCESS; + + if (info->flags & FLAG_EXPECT_PARSE_ERROR) + flags =3D TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE; =20 return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName, info->outActiveName, t= rue, qemuXML2XMLActivePreFormatCallback, - opaque, 0, - TEST_COMPARE_DOM_XML2XML_RESULT_SUCC= ESS); + opaque, 0, flags); } =20 =20 @@ -68,11 +77,14 @@ static int testXML2XMLInactive(const void *opaque) { const struct testInfo *info =3D opaque; + testCompareDomXML2XMLResult flags =3D TEST_COMPARE_DOM_XML2XML_RESULT_= SUCCESS; + + if (info->flags & FLAG_EXPECT_PARSE_ERROR) + flags =3D TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE; =20 return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->in= Name, info->outInactiveName, false, - NULL, opaque, 0, - TEST_COMPARE_DOM_XML2XML_RESULT_SUCC= ESS); + NULL, opaque, 0, flags); } =20 =20 @@ -195,6 +207,8 @@ testCompareStatusXMLToXMLFiles(const void *opaque) VIR_DOMAIN_DEF_PARSE_STATUS | VIR_DOMAIN_DEF_PARSE_ACTUAL_NET | VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES= ))) { + if (data->flags & FLAG_EXPECT_PARSE_ERROR) + goto ok; VIR_TEST_DEBUG("Failed to parse domain status XML:\n%s", source); goto cleanup; } @@ -217,6 +231,17 @@ testCompareStatusXMLToXMLFiles(const void *opaque) =20 ret =3D 0; =20 + ok: + if (data->flags & FLAG_EXPECT_PARSE_ERROR) { + if (ret < 0) { + VIR_TEST_DEBUG("Got expected error"); + ret =3D 0; + } else { + VIR_TEST_DEBUG("Error expected but there wasn't any"); + ret =3D -1; + } + } + cleanup: xmlKeepBlanksDefault(keepBlanksDefault); xmlFreeDoc(xml); @@ -249,7 +274,8 @@ static int testInfoSet(struct testInfo *info, const char *name, int when, - int gic) + int gic, + virQemuXML2XMLTestFlags flags) { if (!(info->qemuCaps =3D virQEMUCapsNew())) goto error; @@ -296,6 +322,8 @@ testInfoSet(struct testInfo *info, } } =20 + info->flags =3D flags; + return 0; =20 error: @@ -335,9 +363,9 @@ mymain(void) /* TODO: test with format probing disabled too */ driver.config->allowDiskFormatProbing =3D true; =20 -# define DO_TEST_FULL(name, when, gic, ...) = \ +# define DO_TEST_FULL(name, when, gic, flags, ...) = \ do { = \ - if (testInfoSet(&info, name, when, gic) < 0) { = \ + if (testInfoSet(&info, name, when, gic, flags) < 0) { = \ VIR_TEST_DEBUG("Failed to generate test data for '%s'", name);= \ return -1; = \ } = \ @@ -364,8 +392,10 @@ mymain(void) # define NONE QEMU_CAPS_LAST =20 # define DO_TEST(name, ...) \ - DO_TEST_FULL(name, WHEN_BOTH, GIC_NONE, __VA_ARGS__) + DO_TEST_FULL(name, WHEN_BOTH, GIC_NONE, 0, __VA_ARGS__) =20 +# define DO_TEST_PARSE_ERROR(name, ...) \ + DO_TEST_FULL(name, WHEN_BOTH, GIC_NONE, FLAG_EXPECT_PARSE_ERROR, __VA_= ARGS__) =20 =20 /* Unset or set all envvars here that are copied in qemudBuildCommandL= ine @@ -493,7 +523,7 @@ mymain(void) QEMU_CAPS_SCSI_DISK_WWN); DO_TEST("disk-mirror-old", NONE); DO_TEST("disk-mirror", NONE); - DO_TEST_FULL("disk-active-commit", WHEN_ACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("disk-active-commit", WHEN_ACTIVE, GIC_NONE, 0, NONE); DO_TEST("graphics-listen-network", NONE); DO_TEST("graphics-vnc", NONE); DO_TEST("graphics-vnc-websocket", NONE); @@ -571,7 +601,7 @@ mymain(void) DO_TEST("channel-virtio", NONE); DO_TEST("channel-virtio-state", NONE); =20 - DO_TEST_FULL("channel-unix-source-path", WHEN_INACTIVE, GIC_NONE, NONE= ); + DO_TEST_FULL("channel-unix-source-path", WHEN_INACTIVE, GIC_NONE, 0, N= ONE); =20 DO_TEST("hostdev-usb-address", NONE); DO_TEST("hostdev-pci-address", NONE); @@ -644,17 +674,17 @@ mymain(void) DO_TEST("blkdeviotune-max-length", NONE); DO_TEST("controller-usb-order", NONE); =20 - DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, GIC_NONE, NO= NE); - DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE, GIC_NONE, NON= E); - DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE, GIC_NONE, NO= NE); - DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE, GIC_NONE, NONE= ); + DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, GIC_NONE, 0,= NONE); + DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE, GIC_NONE, 0, = NONE); + DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE, GIC_NONE, 0,= NONE); + DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE, GIC_NONE, 0, N= ONE); DO_TEST("seclabel-static", NONE); - DO_TEST_FULL("seclabel-static-labelskip", WHEN_ACTIVE, GIC_NONE, NONE); + DO_TEST_FULL("seclabel-static-labelskip", WHEN_ACTIVE, GIC_NONE, 0, NO= NE); DO_TEST("seclabel-none", NONE); DO_TEST("seclabel-dac-none", NONE); DO_TEST("seclabel-dynamic-none", NONE); DO_TEST("seclabel-device-multiple", NONE); - DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE, GIC_NONE,= NONE); + DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE, GIC_NONE,= 0, NONE); DO_TEST("numad-static-vcpu-no-numatune", NONE); =20 DO_TEST("disk-scsi-lun-passthrough-sgio", @@ -1088,27 +1118,27 @@ mymain(void) QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_DEVICE_VIRTIO_GPU, QEMU_CAPS_BOOTINDEX); =20 - DO_TEST_FULL("aarch64-gic-none", WHEN_BOTH, GIC_NONE, NONE); - DO_TEST_FULL("aarch64-gic-none-v2", WHEN_BOTH, GIC_V2, NONE); - DO_TEST_FULL("aarch64-gic-none-v3", WHEN_BOTH, GIC_V3, NONE); - DO_TEST_FULL("aarch64-gic-none-both", WHEN_BOTH, GIC_BOTH, NONE); - DO_TEST_FULL("aarch64-gic-none-tcg", WHEN_BOTH, GIC_BOTH, NONE); - DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_NONE, NONE); - DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_V2, NONE); - DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_V3, NONE); - DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_BOTH, NONE); - DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_NONE, NONE); - DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_V2, NONE); - DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_V3, NONE); - DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_BOTH, NONE); - DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_NONE, NONE); - DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_V2, NONE); - DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_V3, NONE); - DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_BOTH, NONE); - DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_NONE, NONE); - DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_V2, NONE); - DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_V3, NONE); - DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_BOTH, NONE); + DO_TEST_FULL("aarch64-gic-none", WHEN_BOTH, GIC_NONE, 0, NONE); + DO_TEST_FULL("aarch64-gic-none-v2", WHEN_BOTH, GIC_V2, 0, NONE); + DO_TEST_FULL("aarch64-gic-none-v3", WHEN_BOTH, GIC_V3, 0, NONE); + DO_TEST_FULL("aarch64-gic-none-both", WHEN_BOTH, GIC_BOTH, 0, NONE); + DO_TEST_FULL("aarch64-gic-none-tcg", WHEN_BOTH, GIC_BOTH, 0, NONE); + DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_NONE, 0, NONE); + DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_V2, 0, NONE); + DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_V3, 0, NONE); + DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH, GIC_BOTH, 0, NONE); + DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_NONE, 0, NONE); + DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_V2, 0, NONE); + DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_V3, 0, NONE); + DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH, GIC_BOTH, 0, NONE); + DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_NONE, 0, NONE); + DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_V2, 0, NONE); + DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_V3, 0, NONE); + DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH, GIC_BOTH, 0, NONE); + DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_NONE, 0, NONE); + DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_V2, 0, NONE); + DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_V3, 0, NONE); + DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH, GIC_BOTH, 0, NONE); =20 DO_TEST("memory-hotplug", NONE); DO_TEST("memory-hotplug-nonuma", NONE); --=20 2.7.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list