]> xenbits.xensource.com Git - libvirt.git/commitdiff
bhyvexml2argv: Add loader argv tests.
authorConrad Meyer <cse.cem@gmail.com>
Sat, 8 Nov 2014 16:48:31 +0000 (11:48 -0500)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 12 Nov 2014 08:55:22 +0000 (09:55 +0100)
tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs [new file with mode: 0644]
tests/bhyvexml2argvdata/bhyvexml2argv-base.ldargs [new file with mode: 0644]
tests/bhyvexml2argvdata/bhyvexml2argv-console.ldargs [new file with mode: 0644]
tests/bhyvexml2argvdata/bhyvexml2argv-disk-cdrom.ldargs [new file with mode: 0644]
tests/bhyvexml2argvdata/bhyvexml2argv-disk-virtio.ldargs [new file with mode: 0644]
tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.ldargs [new file with mode: 0644]
tests/bhyvexml2argvdata/bhyvexml2argv-serial.ldargs [new file with mode: 0644]
tests/bhyvexml2argvtest.c

diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.ldargs
new file mode 100644 (file)
index 0000000..215d65f
--- /dev/null
@@ -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 (file)
index 0000000..215d65f
--- /dev/null
@@ -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 (file)
index 0000000..215d65f
--- /dev/null
@@ -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 (file)
index 0000000..0eb3cc9
--- /dev/null
@@ -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 (file)
index 0000000..215d65f
--- /dev/null
@@ -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 (file)
index 0000000..215d65f
--- /dev/null
@@ -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 (file)
index 0000000..215d65f
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/bhyveload -m 214 -d /tmp/freebsd.img bhyve
index b9be378a642ce3fcd17f87a41853e67a4f341478..3ff6696e79e581fef0416ad8dcf01761721eb120 100644 (file)
 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);