Re: [PATCH 3/3] tests: add bhyve xml2xml test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06.04.2014 11:52, Roman Bogorodskiy wrote:
The only implemented test for now is domain metadata test.
---
  tests/Makefile.am                                  |  11 +-
  tests/bhyvexml2argvdata/bhyvexml2argv-metadata.xml |  26 +++++
  .../bhyvexml2xmlout-metadata.xml                   |  33 ++++++
  tests/bhyvexml2xmltest.c                           | 120 +++++++++++++++++++++
  4 files changed, 188 insertions(+), 2 deletions(-)
  create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-metadata.xml
  create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-metadata.xml
  create mode 100644 tests/bhyvexml2xmltest.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index dfa0851..3163bf0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -65,6 +65,7 @@ LDADDS = \

  EXTRA_DIST =		\
  	bhyvexml2argvdata \
+	bhyvexml2xmloutdata \
  	capabilityschemadata \
  	capabilityschematest \
  	commanddata \
@@ -235,7 +236,7 @@ test_programs += vmwarevertest
  endif WITH_VMWARE

  if WITH_BHYVE
-test_programs += bhyvexml2argvtest
+test_programs += bhyvexml2argvtest bhyvexml2xmltest
  endif WITH_BHYVE

  if WITH_CIL
@@ -633,8 +634,14 @@ bhyvexml2argvtest_SOURCES = \
  	testutils.c testutils.h \
  	testutilsbhyve.c testutilsbhyve.h
  bhyvexml2argvtest_LDADD = $(bhyve_LDADDS)
+
+bhyvexml2xmltest_SOURCES = \
+	bhyvexml2xmltest.c \
+	testutils.c testutils.h \
+	testutilsbhyve.c testutilsbhyve.h
+bhyvexml2xmltest_LDADD = $(bhyve_LDADDS)
  else ! WITH_BHYVE
-EXTRA_DIST += bhyvexml2argvtest.c bhyvexml2argvmock.c \
+EXTRA_DIST += bhyvexml2argvtest.c bhyvexml2xmltest.c bhyvexml2argvmock.c \
  		testutilsbhyve.c testutilsbhyve.h
  endif ! WITH_BHYVE

diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-metadata.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-metadata.xml
new file mode 100644
index 0000000..6436301
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-metadata.xml
@@ -0,0 +1,26 @@
+<domain type='bhyve'>
+  <name>bhyve</name>
+  <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
+  <memory>219136</memory>
+  <vcpu>1</vcpu>
+  <os>
+    <type>hvm</type>
+  </os>
+  <devices>
+    <disk type='file'>
+      <driver name='file' type='raw'/>
+      <source file='/tmp/freebsd.img'/>
+      <target dev='hda' bus='sata'/>
+    </disk>
+    <interface type='bridge'>
+      <mac address='52:54:00:ad:55:51'/>
+      <model type='virtio'/>
+      <source bridge="virbr0"/>
+    </interface>
+  </devices>
+  <!-- intentional mis-indentation -->
+  <metadata>
+      <app1:foo xmlns:app1="http://foo.org/";>fooish</app1:foo>
+  <app2:bar xmlns:app2="http://bar.com/"; maman="baz">barish</app2:bar>
+  </metadata>
+</domain>
diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-metadata.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-metadata.xml
new file mode 100644
index 0000000..77e18d4
--- /dev/null
+++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-metadata.xml
@@ -0,0 +1,33 @@
+<domain type='bhyve'>
+  <name>bhyve</name>
+  <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
+  <metadata>
+    <app1:foo xmlns:app1="http://foo.org/";>fooish</app1:foo>
+    <app2:bar xmlns:app2="http://bar.com/"; maman="baz">barish</app2:bar>
+  </metadata>
+  <memory unit='KiB'>219136</memory>
+  <currentMemory unit='KiB'>219136</currentMemory>
+  <vcpu placement='static'>1</vcpu>
+  <os>
+    <type arch='x86_64'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <disk type='file' device='disk'>
+      <driver name='file' type='raw'/>
+      <source file='/tmp/freebsd.img'/>
+      <target dev='hda' bus='sata'/>
+      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+    </disk>
+    <controller type='sata' index='0'/>
+    <interface type='bridge'>
+      <mac address='52:54:00:ad:55:51'/>
+      <source bridge='virbr0'/>
+      <model type='virtio'/>
+    </interface>
+  </devices>
+</domain>
diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c
new file mode 100644
index 0000000..5f9bc65
--- /dev/null
+++ b/tests/bhyvexml2xmltest.c
@@ -0,0 +1,120 @@
+#include <config.h>
+
+#include "testutils.h"
+
+#ifdef WITH_BHYVE
+
+# include "bhyve/bhyve_utils.h"
+# include "testutilsbhyve.h"
+
+# define VIR_FROM_THIS VIR_FROM_NONE
+
+static bhyveConn driver;
+
+static int
+testCompareXMLToXMLFiles(const char *inxml, const char *outxml)
+{
+    char *inXmlData = NULL;
+    char *outXmlData = NULL;
+    char *actual = NULL;
+    virDomainDefPtr def = NULL;
+    int ret = -1;
+
+    if (virtTestLoadFile(inxml, &inXmlData) < 0)
+        goto fail;
+
+    if (virtTestLoadFile(outxml, &outXmlData) < 0)
+        goto fail;
+
+    if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt,
+                                        1 << VIR_DOMAIN_VIRT_BHYVE,
+                                        VIR_DOMAIN_XML_INACTIVE)))
+        goto fail;
+
+    if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_XML_INACTIVE)))
+        goto fail;
+
+    if (STRNEQ(outXmlData, actual)) {
+        virtTestDifference(stderr, outXmlData, actual);
+        goto fail;
+    }
+
+    ret = 0;
+
+ fail:
+    VIR_FREE(inXmlData);
+    VIR_FREE(outXmlData);
+    VIR_FREE(actual);
+    virDomainDefFree(def);
+    return ret;
+}
+
+struct testInfo {
+    const char *name;
+    bool different;
+};
+
+static int
+testCompareXMLToXMLHelper(const void *data)
+{
+    const struct testInfo *info = data;
+    char *xml_in = NULL;
+    char *xml_out = NULL;
+    int ret = -1;
+
+    if (virAsprintf(&xml_in, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.xml",
+                    abs_srcdir, info->name) < 0 ||
+        virAsprintf(&xml_out, "%s/bhyvexml2xmloutdata/bhyvexml2xmlout-%s.xml",
+                    abs_srcdir, info->name) < 0)
+        goto cleanup;
+
+    ret = testCompareXMLToXMLFiles(xml_in,
+                                   info->different ? xml_out : xml_in);
+
+ cleanup:
+    VIR_FREE(xml_in);
+    VIR_FREE(xml_out);
+    return ret;
+}
+
+static int
+mymain(void)
+{
+    int ret = 0;
+
+    if ((driver.caps = testBhyveBuildCapabilities()) == NULL)

Since I suggest dropping 2/3, this needs to be virBhyveCapsBuild() then.

+        return EXIT_FAILURE;
+
+    if ((driver.xmlopt = virDomainXMLOptionNew(NULL, NULL, NULL)) == NULL)
+        return EXIT_FAILURE;
+
+# define DO_TEST_FULL(name, is_different)                        \
+    do {                                                         \
+        const struct testInfo info = {name, is_different};       \
+        if (virtTestRun("BHYVE XML-2-XML " name,                 \
+                       testCompareXMLToXMLHelper, &info) < 0)    \
+            ret = -1;                                            \
+    } while (0)
+
+# define DO_TEST_DIFFERENT(name) \
+    DO_TEST_FULL(name, true)
+
+    DO_TEST_DIFFERENT("metadata");
+
+    virObjectUnref(driver.caps);
+    virObjectUnref(driver.xmlopt);
+
+    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIRT_TEST_MAIN(mymain)
+
+#else
+
+int
+main(void)
+{
+    return EXIT_AM_SKIP;
+}
+
+#endif /* WITH_BHYVE */


ACK

Michal

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]