From 6f33e441e236dd738fd7776bf062cc546835226c Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 7 Jul 2020 16:38:00 +0200 Subject: [PATCH] backupxml2xmltest: Call 'virDomainBackupAlignDisks' before formatting output 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 Reviewed-by: Eric Blake --- .../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 @@ + 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 @@ + 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 @@ + 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 @@ + 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 @@ + 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 @@ + 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 @@ + 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 @@ - + + + + + + + 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;