[PATCH 3/4] backupxml2xmltest: Call 'virDomainBackupAlignDisks' before formatting output

Peter Krempa pkrempa at redhat.com
Tue Jul 7 15:23:02 UTC 2020


Call the post-processing function so that we can validate that it does
the correct thing.

virDomainBackupAlignDisks requires disk definitions to be present so
let's fake them by copying disks from the backup definition and add one
extra disk 'vdextradisk'.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 .../backup-pull-encrypted.xml                 |  1 +
 .../backup-pull-internal-invalid.xml          |  1 +
 .../backup-pull-seclabel.xml                  |  1 +
 tests/domainbackupxml2xmlout/backup-pull.xml  |  1 +
 .../backup-push-encrypted.xml                 |  1 +
 .../backup-push-seclabel.xml                  |  1 +
 tests/domainbackupxml2xmlout/backup-push.xml  |  1 +
 tests/domainbackupxml2xmlout/empty.xml        |  8 ++++-
 tests/genericxml2xmltest.c                    | 36 +++++++++++++++++++
 9 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/tests/domainbackupxml2xmlout/backup-pull-encrypted.xml b/tests/domainbackupxml2xmlout/backup-pull-encrypted.xml
index ea9dcf72b9..3c3042111d 100644
--- a/tests/domainbackupxml2xmlout/backup-pull-encrypted.xml
+++ b/tests/domainbackupxml2xmlout/backup-pull-encrypted.xml
@@ -26,5 +26,6 @@
         </encryption>
       </scratch>
     </disk>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
 </domainbackup>
diff --git a/tests/domainbackupxml2xmlout/backup-pull-internal-invalid.xml b/tests/domainbackupxml2xmlout/backup-pull-internal-invalid.xml
index ba8f7ca3ab..9702978ce0 100644
--- a/tests/domainbackupxml2xmlout/backup-pull-internal-invalid.xml
+++ b/tests/domainbackupxml2xmlout/backup-pull-internal-invalid.xml
@@ -26,6 +26,7 @@
         </encryption>
       </scratch>
     </disk>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
   <privateData>
     <objects>
diff --git a/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml b/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
index 450f007d3a..38330394f7 100644
--- a/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
+++ b/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
@@ -14,5 +14,6 @@
         <seclabel model='dac' relabel='no'/>
       </scratch>
     </disk>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
 </domainbackup>
diff --git a/tests/domainbackupxml2xmlout/backup-pull.xml b/tests/domainbackupxml2xmlout/backup-pull.xml
index 24fce9c0e7..4952270a5a 100644
--- a/tests/domainbackupxml2xmlout/backup-pull.xml
+++ b/tests/domainbackupxml2xmlout/backup-pull.xml
@@ -6,5 +6,6 @@
       <scratch file='/path/to/file'/>
     </disk>
     <disk name='hda' backup='no'/>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
 </domainbackup>
diff --git a/tests/domainbackupxml2xmlout/backup-push-encrypted.xml b/tests/domainbackupxml2xmlout/backup-push-encrypted.xml
index a955340964..2a5aad93cd 100644
--- a/tests/domainbackupxml2xmlout/backup-push-encrypted.xml
+++ b/tests/domainbackupxml2xmlout/backup-push-encrypted.xml
@@ -25,5 +25,6 @@
         </encryption>
       </target>
     </disk>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
 </domainbackup>
diff --git a/tests/domainbackupxml2xmlout/backup-push-seclabel.xml b/tests/domainbackupxml2xmlout/backup-push-seclabel.xml
index 9986889ba3..59af3e6a6c 100644
--- a/tests/domainbackupxml2xmlout/backup-push-seclabel.xml
+++ b/tests/domainbackupxml2xmlout/backup-push-seclabel.xml
@@ -13,5 +13,6 @@
         <seclabel model='dac' relabel='no'/>
       </target>
     </disk>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
 </domainbackup>
diff --git a/tests/domainbackupxml2xmlout/backup-push.xml b/tests/domainbackupxml2xmlout/backup-push.xml
index 1997c814ae..bc11a93d94 100644
--- a/tests/domainbackupxml2xmlout/backup-push.xml
+++ b/tests/domainbackupxml2xmlout/backup-push.xml
@@ -6,5 +6,6 @@
       <target file='/path/to/file'/>
     </disk>
     <disk name='hda' backup='no'/>
+    <disk name='vdextradisk' backup='no'/>
   </disks>
 </domainbackup>
diff --git a/tests/domainbackupxml2xmlout/empty.xml b/tests/domainbackupxml2xmlout/empty.xml
index b1ba4953be..52d2b4f0af 100644
--- a/tests/domainbackupxml2xmlout/empty.xml
+++ b/tests/domainbackupxml2xmlout/empty.xml
@@ -1 +1,7 @@
-<domainbackup mode='push'/>
+<domainbackup mode='push'>
+  <disks>
+    <disk name='vdextradisk' backup='yes' type='file'>
+      <target file='/fake/vdextradisk.qcow2.SUFFIX'/>
+    </disk>
+  </disks>
+</domainbackup>
diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c
index 2c1e8616dd..8b9b0bafb6 100644
--- a/tests/genericxml2xmltest.c
+++ b/tests/genericxml2xmltest.c
@@ -51,6 +51,23 @@ struct testCompareBackupXMLData {
 };


+static virDomainDiskDefPtr
+testCompareBackupXMLGetFakeDomdisk(const char *dst)
+{
+    virDomainDiskDefPtr domdisk = NULL;
+
+    if (!(domdisk = virDomainDiskDefNew(NULL)))
+        abort();
+
+    domdisk->dst = g_strdup(dst);
+    domdisk->src->type = VIR_STORAGE_TYPE_FILE;
+    domdisk->src->format = VIR_STORAGE_FILE_QCOW2;
+    domdisk->src->path = g_strdup_printf("/fake/%s.qcow2", dst);
+
+    return domdisk;
+}
+
+
 static int
 testCompareBackupXML(const void *opaque)
 {
@@ -63,6 +80,8 @@ testCompareBackupXML(const void *opaque)
     g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
     g_autofree char *actual = NULL;
     unsigned int parseFlags = 0;
+    g_autoptr(virDomainDef) fakedef = NULL;
+    size_t i;

     if (data->internal)
         parseFlags |= VIR_DOMAIN_BACKUP_PARSE_INTERNAL;
@@ -80,6 +99,23 @@ testCompareBackupXML(const void *opaque)
         return -1;
     }

+    /* create a fake definition and fill it with disks */
+    if (!(fakedef = virDomainDefNew()))
+        return -1;
+
+    fakedef->ndisks = backup->ndisks + 1;
+    fakedef->disks = g_new0(virDomainDiskDefPtr, fakedef->ndisks);
+
+    for (i = 0; i < backup->ndisks; i++)
+        fakedef->disks[i] = testCompareBackupXMLGetFakeDomdisk(backup->disks[i].name);
+
+    fakedef->disks[fakedef->ndisks -1 ] = testCompareBackupXMLGetFakeDomdisk("vdextradisk");
+
+    if (virDomainBackupAlignDisks(backup, fakedef, "SUFFIX") < 0) {
+        VIR_TEST_VERBOSE("failed to align backup def '%s'", file_in);
+        return -1;
+    }
+
     if (virDomainBackupDefFormat(&buf, backup, data->internal) < 0) {
         VIR_TEST_VERBOSE("failed to format backup def '%s'", file_in);
         return -1;
-- 
2.26.2




More information about the libvir-list mailing list