[libvirt] [PATCHv7 2/7] bhyvexml2argv: Add loader argv tests.

Conrad Meyer cse.cem at gmail.com
Thu Oct 30 15:56:27 UTC 2014


---
 .../bhyvexml2argv-acpiapic.ldargs                  |  1 +
 tests/bhyvexml2argvdata/bhyvexml2argv-base.ldargs  |  1 +
 .../bhyvexml2argvdata/bhyvexml2argv-console.ldargs |  1 +
 .../bhyvexml2argv-disk-cdrom.ldargs                |  1 +
 .../bhyvexml2argv-disk-virtio.ldargs               |  1 +
 .../bhyvexml2argvdata/bhyvexml2argv-macaddr.ldargs |  1 +
 .../bhyvexml2argvdata/bhyvexml2argv-serial.ldargs  |  1 +
 tests/bhyvexml2argvtest.c                          | 60 +++++++++++++++++++---
 8 files changed, 61 insertions(+), 6 deletions(-)
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-base.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-console.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-disk-cdrom.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-disk-virtio.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.ldargs
 create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial.ldargs

diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs
new file mode 100644
index 0000000..215d65f
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-base.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-base.ldargs
new file mode 100644
index 0000000..215d65f
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-base.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-console.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-console.ldargs
new file mode 100644
index 0000000..215d65f
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-console.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-disk-cdrom.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-disk-cdrom.ldargs
new file mode 100644
index 0000000..0eb3cc9
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-disk-cdrom.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/cdrom.iso bhyve
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-disk-virtio.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-disk-virtio.ldargs
new file mode 100644
index 0000000..215d65f
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-disk-virtio.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.ldargs
new file mode 100644
index 0000000..215d65f
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-serial.ldargs
new file mode 100644
index 0000000..215d65f
--- /dev/null
+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial.ldargs
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c
index b9be378..3ff6696 100644
--- a/tests/bhyvexml2argvtest.c
+++ b/tests/bhyvexml2argvtest.c
@@ -15,14 +15,16 @@
 static bhyveConn driver;
 
 static int testCompareXMLToArgvFiles(const char *xml,
-                                     const char *cmdline)
+                                     const char *cmdline,
+                                     const char *ldcmdline,
+                                     const char *dmcmdline)
 {
-    char *expectargv = NULL;
+    char *expectargv = NULL, *expectld = NULL, *expectdm = NULL;
     int len;
-    char *actualargv = NULL;
+    char *actualargv = NULL, *actualld = NULL, *actualdm = NULL;
     virDomainDefPtr vmdef = NULL;
     virDomainObj vm;
-    virCommandPtr cmd = NULL;
+    virCommandPtr cmd = NULL, ldcmd = NULL;
     virConnectPtr conn;
     int ret = -1;
 
@@ -42,6 +44,16 @@ static int testCompareXMLToArgvFiles(const char *xml,
     if (!(actualargv = virCommandToString(cmd)))
         goto out;
 
+    if (!(ldcmd = virBhyveProcessBuildLoadCmd(conn, vmdef, "<device.map>",
+                                              &actualdm)))
+        goto out;
+
+    if (actualdm != NULL)
+        virTrimSpaces(actualdm, NULL);
+
+    if (!(actualld = virCommandToString(ldcmd)))
+        goto out;
+
     len = virtTestLoadFile(cmdline, &expectargv);
     if (len < 0)
         goto out;
@@ -49,17 +61,49 @@ static int testCompareXMLToArgvFiles(const char *xml,
     if (len && expectargv[len - 1] == '\n')
         expectargv[len - 1] = '\0';
 
+    len = virtTestLoadFile(ldcmdline, &expectld);
+    if (len < 0)
+        goto out;
+
+    if (len && expectld[len - 1] == '\n')
+        expectld[len - 1] = '\0';
+
+    len = virFileReadAllQuiet(dmcmdline, 1000, &expectdm);
+    if (len < 0) {
+        if (actualdm != NULL) {
+            virtTestDifference(stderr, "", actualdm);
+            goto out;
+        }
+    } else if (len && expectdm[len - 1] == '\n') {
+        expectdm[len - 1] = '\0';
+    }
+
     if (STRNEQ(expectargv, actualargv)) {
         virtTestDifference(stderr, expectargv, actualargv);
         goto out;
     }
 
+    if (STRNEQ(expectld, actualld)) {
+        virtTestDifference(stderr, expectld, actualld);
+        goto out;
+    }
+
+    if (expectdm && STRNEQ(expectdm, actualdm)) {
+        virtTestDifference(stderr, expectdm, actualdm);
+        goto out;
+    }
+
     ret = 0;
 
  out:
     VIR_FREE(expectargv);
+    VIR_FREE(expectld);
+    VIR_FREE(expectdm);
     VIR_FREE(actualargv);
+    VIR_FREE(actualld);
+    VIR_FREE(actualdm);
     virCommandFree(cmd);
+    virCommandFree(ldcmd);
     virDomainDefFree(vmdef);
     return ret;
 }
@@ -70,15 +114,19 @@ testCompareXMLToArgvHelper(const void *data)
     int ret = -1;
     const char *name = data;
     char *xml = NULL;
-    char *args = NULL;
+    char *args = NULL, *ldargs = NULL, *dmargs = NULL;
 
     if (virAsprintf(&xml, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.xml",
                     abs_srcdir, name) < 0 ||
         virAsprintf(&args, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.args",
+                    abs_srcdir, name) < 0 ||
+        virAsprintf(&ldargs, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.ldargs",
+                    abs_srcdir, name) < 0 ||
+        virAsprintf(&dmargs, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.devmap",
                     abs_srcdir, name) < 0)
         goto cleanup;
 
-    ret = testCompareXMLToArgvFiles(xml, args);
+    ret = testCompareXMLToArgvFiles(xml, args, ldargs, dmargs);
 
  cleanup:
     VIR_FREE(xml);
-- 
1.9.3




More information about the libvir-list mailing list