]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: fix nbdkit command test for backing chains
authorJonathon Jongsma <jjongsma@redhat.com>
Fri, 26 Jan 2024 16:41:58 +0000 (10:41 -0600)
committerJonathon Jongsma <jjongsma@redhat.com>
Fri, 9 Feb 2024 20:45:20 +0000 (14:45 -0600)
Previously this test only tested the generated nbdkit command for the
top level disk source. Update it to test the generated commmands for all
sources in the chain.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
30 files changed:
tests/qemunbdkitdata/disk-cdrom-network.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-cdrom-network.args.disk0 with 63% similarity]
tests/qemunbdkitdata/disk-cdrom-network.args.disk1-src0 [moved from tests/qemunbdkitdata/disk-cdrom-network.args.disk1 with 70% similarity]
tests/qemunbdkitdata/disk-cdrom-network.args.disk1-src0.pipe.778 [moved from tests/qemunbdkitdata/disk-cdrom-network.args.disk1.pipe.778 with 100% similarity]
tests/qemunbdkitdata/disk-cdrom-network.args.disk2-src0 [moved from tests/qemunbdkitdata/disk-cdrom-network.args.disk2 with 72% similarity]
tests/qemunbdkitdata/disk-cdrom-network.args.disk2-src0.pipe.780 [moved from tests/qemunbdkitdata/disk-cdrom-network.args.disk2.pipe.780 with 100% similarity]
tests/qemunbdkitdata/disk-network-http.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-network-http.args.disk0 with 64% similarity]
tests/qemunbdkitdata/disk-network-http.args.disk1-src0 [moved from tests/qemunbdkitdata/disk-network-http.args.disk1 with 59% similarity]
tests/qemunbdkitdata/disk-network-http.args.disk2-src0 [moved from tests/qemunbdkitdata/disk-network-http.args.disk2 with 64% similarity]
tests/qemunbdkitdata/disk-network-http.args.disk2-src0.pipe.778 [moved from tests/qemunbdkitdata/disk-network-http.args.disk2.pipe.778 with 100% similarity]
tests/qemunbdkitdata/disk-network-http.args.disk3-src0 [moved from tests/qemunbdkitdata/disk-network-http.args.disk3 with 70% similarity]
tests/qemunbdkitdata/disk-network-http.args.disk3-src0.pipe.780 [moved from tests/qemunbdkitdata/disk-network-http.args.disk3.pipe.780 with 100% similarity]
tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0 with 69% similarity]
tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src0.pipe.778 [moved from tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0.pipe.778 with 100% similarity]
tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src1 [new file with mode: 0644]
tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src1.pipe.780 [new file with mode: 0644]
tests/qemunbdkitdata/disk-network-source-curl.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk0 with 69% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk0-src0.pipe.778 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk0.pipe.778 with 100% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk1-src0 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk1 with 75% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk1-src0.pipe.780 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk1.pipe.780 with 100% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk1-src0.pipe.782 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk1.pipe.782 with 100% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk2-src0 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk2 with 69% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk2-src0.pipe.784 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk2.pipe.784 with 100% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk3-src0 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk3 with 64% similarity]
tests/qemunbdkitdata/disk-network-source-curl.args.disk4-src0 [moved from tests/qemunbdkitdata/disk-network-source-curl.args.disk4 with 65% similarity]
tests/qemunbdkitdata/disk-network-ssh-key.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-network-ssh-key.args.disk0 with 74% similarity]
tests/qemunbdkitdata/disk-network-ssh-key.args.disk1-src0 [moved from tests/qemunbdkitdata/disk-network-ssh-key.args.disk1 with 73% similarity]
tests/qemunbdkitdata/disk-network-ssh-password.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-network-ssh-password.args.disk0 with 71% similarity]
tests/qemunbdkitdata/disk-network-ssh-password.args.disk0-src0.pipe.778 [moved from tests/qemunbdkitdata/disk-network-ssh-password.args.disk0.pipe.778 with 100% similarity]
tests/qemunbdkitdata/disk-network-ssh.args.disk0-src0 [moved from tests/qemunbdkitdata/disk-network-ssh.args.disk0 with 66% similarity]
tests/qemunbdkittest.c

similarity index 63%
rename from tests/qemunbdkitdata/disk-cdrom-network.args.disk0
rename to tests/qemunbdkitdata/disk-cdrom-network.args.disk0-src0
index b2f3be4cbafdbefeed935cf681739411f8f53ccf..cec0c758cd9cf47fc3ea74e5495eaef989b62b68 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground \
 --readonly curl \
 protocols=ftp \
similarity index 70%
rename from tests/qemunbdkitdata/disk-cdrom-network.args.disk1
rename to tests/qemunbdkitdata/disk-cdrom-network.args.disk1-src0
index a23f6573d657deed262c1a5c8f2671153ff88e19..62368ac3e6fe5fe22ca168f2d3eb05da43502ab0 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-1/nbdkit-test-disk-1.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk1-src0.socket \
 --foreground \
 --readonly curl \
 protocols=ftps \
similarity index 72%
rename from tests/qemunbdkitdata/disk-cdrom-network.args.disk2
rename to tests/qemunbdkitdata/disk-cdrom-network.args.disk2-src0
index 04e918609ad1a515b90ad856f57f79dc7c70fc4b..70bfa3925225754c71a9b25aa3b6d503f0c05925 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-2/nbdkit-test-disk-2.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk2-src0.socket \
 --foreground \
 --readonly curl \
 protocols=https \
similarity index 64%
rename from tests/qemunbdkitdata/disk-network-http.args.disk0
rename to tests/qemunbdkitdata/disk-network-http.args.disk0-src0
index 8316f353cba1545dbbe063ae295606ab077f3745..a850610593dfde14483ca9b6aa01ac10d099a0c2 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground curl \
 protocols=http,https \
 url=http://example.org:80/test.img \
similarity index 59%
rename from tests/qemunbdkitdata/disk-network-http.args.disk1
rename to tests/qemunbdkitdata/disk-network-http.args.disk1-src0
index a546a68b273687d409288dcd21af454d1f3b34c0..0864840e41cc1d483871283862317b58c3f32695 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-1/nbdkit-test-disk-1.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk1-src0.socket \
 --foreground curl \
 protocols=https \
 url=https://example.org:443/test2.img
similarity index 64%
rename from tests/qemunbdkitdata/disk-network-http.args.disk2
rename to tests/qemunbdkitdata/disk-network-http.args.disk2-src0
index 1004547b3a11971654f6ca47e2c4e418b3427b2b..359767f20c4fadb97139abfd07f6274300edabea 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-2/nbdkit-test-disk-2.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk2-src0.socket \
 --foreground curl \
 protocols=http,https \
 url=http://example.org:1234/test3.img \
similarity index 70%
rename from tests/qemunbdkitdata/disk-network-http.args.disk3
rename to tests/qemunbdkitdata/disk-network-http.args.disk3-src0
index e3c357b89a4497f2e65a41af6ca02996626ee356..6f2fa96b63395f4c4fd3663b71236c7c6368befe 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-3/nbdkit-test-disk-3.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk3-src0.socket \
 --foreground curl \
 protocols=https \
 'url=https://example.org:1234/test4.img?par=val&other=ble' \
similarity index 69%
rename from tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0
rename to tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src0
index 605354433b87b488b8134d53269e67747b6c6825..ea54fb56d0c975eb2d6657a6f298500e7712f8e0 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground \
 --readonly curl \
 protocols=https \
diff --git a/tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src1 b/tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src1
new file mode 100644 (file)
index 0000000..f9e2d8b
--- /dev/null
@@ -0,0 +1,7 @@
+nbdkit \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src1.socket \
+--foreground \
+--readonly curl \
+protocols=https \
+url=https://https.example2.org:8444/path/to/backing.qcow2 \
+cookie=-779
diff --git a/tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src1.pipe.780 b/tests/qemunbdkitdata/disk-network-source-curl-nbdkit-backing.args.disk0-src1.pipe.780
new file mode 100644 (file)
index 0000000..0aafdfb
--- /dev/null
@@ -0,0 +1 @@
+cookie3=cookievalue3; cookie4=cookievalue4
similarity index 69%
rename from tests/qemunbdkitdata/disk-network-source-curl.args.disk0
rename to tests/qemunbdkitdata/disk-network-source-curl.args.disk0-src0
index 948dbfbe5ae1085be71d89bfaa7878c928ae0f5f..ff3b06760d1d9687d1d827f7be8166f7e4e6e412 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground \
 --readonly curl \
 protocols=https \
similarity index 75%
rename from tests/qemunbdkitdata/disk-network-source-curl.args.disk1
rename to tests/qemunbdkitdata/disk-network-source-curl.args.disk1-src0
index d1288dd242e16d3c94db236de1cb8350bc20ca89..972b07b0e270820c20ce2644fccbf35fbd1c36a1 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-1/nbdkit-test-disk-1.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk1-src0.socket \
 --foreground curl \
 protocols=https \
 'url=https://https.example.org:8443/path/to/disk5.iso?foo=bar' \
similarity index 69%
rename from tests/qemunbdkitdata/disk-network-source-curl.args.disk2
rename to tests/qemunbdkitdata/disk-network-source-curl.args.disk2-src0
index f1d0e1929eb02702b4dd47083295098c62ca3638..6cfa70ad363b7944e7e31a39559a0673a7c5c3c0 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-2/nbdkit-test-disk-2.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk2-src0.socket \
 --foreground \
 --readonly curl \
 protocols=http,https \
similarity index 64%
rename from tests/qemunbdkitdata/disk-network-source-curl.args.disk3
rename to tests/qemunbdkitdata/disk-network-source-curl.args.disk3-src0
index f517baa9488977f77d26cf17699512cd07c41fc1..2377d2e41ba0ab9c2c76e47486dd0088ebe32fb8 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-3/nbdkit-test-disk-3.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk3-src0.socket \
 --foreground \
 --readonly curl \
 protocols=ftp \
similarity index 65%
rename from tests/qemunbdkitdata/disk-network-source-curl.args.disk4
rename to tests/qemunbdkitdata/disk-network-source-curl.args.disk4-src0
index 1df47a9d5477874533c8002cfc4fe7e1d0e55c80..584c30bee98a8950543cd0f68fba496284e45395 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-4/nbdkit-test-disk-4.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk4-src0.socket \
 --foreground \
 --readonly curl \
 protocols=ftps \
similarity index 74%
rename from tests/qemunbdkitdata/disk-network-ssh-key.args.disk0
rename to tests/qemunbdkitdata/disk-network-ssh-key.args.disk0-src0
index f627700490b53caf37158d2683fa3cfad2c9f379..e16f2ca0c4a56609665be75f0aefee1953519ffc 100644 (file)
@@ -1,6 +1,6 @@
 SSH_AUTH_SOCK=/path/to/agent/socket \
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground ssh \
 host=example.org \
 port=2222 \
similarity index 73%
rename from tests/qemunbdkitdata/disk-network-ssh-key.args.disk1
rename to tests/qemunbdkitdata/disk-network-ssh-key.args.disk1-src0
index 80df9c30c64cae81942192407465c94858fa3e0e..fbac8313d7ec9aa1be2dae75adae663dff13cfb1 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-1/nbdkit-test-disk-1.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk1-src0.socket \
 --foreground ssh \
 host=example.org \
 port=2222 \
similarity index 71%
rename from tests/qemunbdkitdata/disk-network-ssh-password.args.disk0
rename to tests/qemunbdkitdata/disk-network-ssh-password.args.disk0-src0
index ee2d7c33436ebfbe656e366268d758ede5df1143..0da07e19f42552ca0f75879df19e6aa553996769 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground ssh \
 host=example.org \
 port=2222 \
similarity index 66%
rename from tests/qemunbdkitdata/disk-network-ssh.args.disk0
rename to tests/qemunbdkitdata/disk-network-ssh.args.disk0-src0
index 481b2189367151fb406322a4dd0326f0c31615b5..2c8f54d5ce217f362d8cfc6eb68aaa59046bbf56 100644 (file)
@@ -1,5 +1,5 @@
 nbdkit \
---unix /tmp/statedir-0/nbdkit-test-disk-0.socket \
+--unix /tmp/domain-QEMUGuest1/nbdkit-disk0-src0.socket \
 --foreground ssh \
 host=example.org \
 port=2222 \
index 3f6bd09616f784be2ba1fac8e104a45c174aca91..d0332a8e9f18e3f34a91fe7add6e7333e06cfd4b 100644 (file)
@@ -174,7 +174,10 @@ testNbdkit(const void *data)
     const TestInfo *info = data;
     g_autoptr(virDomainDef) def = NULL;
     size_t i;
+    size_t n;
     int ret = 0;
+    virStorageSource *backing = NULL;
+    g_autofree char *statedir = NULL;
 
     /* restart mock pipe fds so tests are consistent */
     mockpipefd = PIPE_FD_START;
@@ -189,56 +192,61 @@ testNbdkit(const void *data)
                                       VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE)))
         return -1;
 
+    statedir = g_strdup_printf("/tmp/domain-%s", def->name);
     for (i = 0; i < def->ndisks; i++) {
         virDomainDiskDef *disk = def->disks[i];
-        g_autofree char *statedir = g_strdup_printf("/tmp/statedir-%zi", i);
-        g_autofree char *alias = g_strdup_printf("test-disk-%zi", i);
-        g_autofree char *cmdfile = g_strdup_printf("%s.args.disk%zi",
-                                                   info->outtemplate, i);
-
-        if (qemuNbdkitInitStorageSource(info->nbdkitcaps, disk->src, statedir,
-                                        alias, 101, 101)) {
-            qemuDomainStorageSourcePrivate *srcPriv =
-                qemuDomainStorageSourcePrivateFetch(disk->src);
-            g_autoptr(virCommand) cmd = NULL;
-            g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
-            g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
-            g_autofree char *actualCmdline = NULL;
-            virCommandSendBuffer *sendbuffers;
-            int nsendbuffers;
-            size_t j;
-
-            virCommandSetDryRun(dryRunToken, &buf, true, true, NULL, NULL);
-            cmd = qemuNbdkitProcessBuildCommand(srcPriv->nbdkitProcess);
-
-            if (virCommandRun(cmd, NULL) < 0) {
-                ret = -1;
-                continue;
-            }
-            virCommandPeekSendBuffers(cmd, &sendbuffers, &nsendbuffers);
-
-            if (!(actualCmdline = virBufferContentAndReset(&buf))) {
-                ret = -1;
-                continue;
-            }
+        for (n = 0, backing = disk->src; backing != NULL; n++, backing = backing->backingStore) {
+            g_autofree char *alias = g_strdup_printf("disk%zi-src%zi", i, n);
+            g_autofree char *cmdfile = g_strdup_printf("%s.args.%s",
+                                                       info->outtemplate, alias);
+
+            if (qemuNbdkitInitStorageSource(info->nbdkitcaps, backing, statedir,
+                                            alias, 101, 101)) {
+                qemuDomainStorageSourcePrivate *srcPriv =
+                    qemuDomainStorageSourcePrivateFetch(backing);
+                g_autoptr(virCommand) cmd = NULL;
+                g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
+                g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
+                g_autofree char *actualCmdline = NULL;
+                virCommandSendBuffer *sendbuffers;
+                int nsendbuffers;
+                size_t j;
+
+                if (srcPriv->nbdkitProcess == NULL)
+                    continue;
+
+                virCommandSetDryRun(dryRunToken, &buf, true, true, NULL, NULL);
+                cmd = qemuNbdkitProcessBuildCommand(srcPriv->nbdkitProcess);
+
+                if (virCommandRun(cmd, NULL) < 0) {
+                    ret = -1;
+                    continue;
+                }
+                virCommandPeekSendBuffers(cmd, &sendbuffers, &nsendbuffers);
 
-            if (virTestCompareToFileFull(actualCmdline, cmdfile, false) < 0)
-                ret = -1;
+                if (!(actualCmdline = virBufferContentAndReset(&buf))) {
+                    ret = -1;
+                    continue;
+                }
 
-            for (j = 0; j < nsendbuffers; j++) {
-                virCommandSendBuffer *buffer = &sendbuffers[j];
-                g_autofree char *pipefile = g_strdup_printf("%s.pipe.%i",
-                                                            cmdfile,
-                                                            buffer->fd);
+                if (virTestCompareToFileFull(actualCmdline, cmdfile, false) < 0)
+                    ret = -1;
 
-                if (virTestCompareToFile((const char*)buffer->buffer, pipefile) < 0)
+                for (j = 0; j < nsendbuffers; j++) {
+                    virCommandSendBuffer *buffer = &sendbuffers[j];
+                    g_autofree char *pipefile = g_strdup_printf("%s.pipe.%i",
+                                                                cmdfile,
+                                                                buffer->fd);
+
+                    if (virTestCompareToFile((const char*)buffer->buffer, pipefile) < 0)
+                        ret = -1;
+                }
+            } else {
+                if (virFileExists(cmdfile)) {
+                    virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                                   "qemuNbdkitInitStorageSource() was not expected to fail");
                     ret = -1;
-            }
-        } else {
-            if (virFileExists(cmdfile)) {
-                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                               "qemuNbdkitInitStorageSource() was not expected to fail");
-                ret = -1;
+                }
             }
         }
     }