cputestdata \
domaincapsdata \
domainbackupxml2xmlin \
+ domainbackupxml2xmlout \
domainconfdata \
domainschemadata \
fchostdata \
--- /dev/null
+<domainbackup mode='pull'>
+ <incremental>1525889631</incremental>
+ <server transport='tcp' name='localhost' port='10809'/>
+ <disks>
+ <disk name='vda' backup='yes' type='file'>
+ <driver type='qcow2'/>
+ <scratch file='/path/to/file'>
+ <seclabel model='dac' relabel='no'/>
+ </scratch>
+ </disk>
+ <disk name='vdb' backup='yes' type='block'>
+ <driver type='qcow2'/>
+ <scratch dev='/dev/block'>
+ <seclabel model='dac' relabel='no'/>
+ </scratch>
+ </disk>
+ </disks>
+</domainbackup>
--- /dev/null
+<domainbackup mode='pull'>
+ <incremental>1525889631</incremental>
+ <server transport='tcp' name='localhost' port='10809'/>
+ <disks>
+ <disk name='vda' backup='yes' type='file'>
+ <scratch file='/path/to/file'/>
+ </disk>
+ <disk name='hda' backup='no'/>
+ </disks>
+</domainbackup>
--- /dev/null
+<domainbackup mode='push'>
+ <incremental>1525889631</incremental>
+ <disks>
+ <disk name='vda' backup='yes' type='file'>
+ <driver type='raw'/>
+ <target file='/path/to/file'>
+ <seclabel model='dac' relabel='no'/>
+ </target>
+ </disk>
+ <disk name='vdb' backup='yes' type='block'>
+ <driver type='qcow2'/>
+ <target dev='/dev/block'>
+ <seclabel model='dac' relabel='no'/>
+ </target>
+ </disk>
+ </disks>
+</domainbackup>
--- /dev/null
+<domainbackup mode='push'>
+ <incremental>1525889631</incremental>
+ <disks>
+ <disk name='vda' backup='yes' type='file'>
+ <driver type='raw'/>
+ <target file='/path/to/file'/>
+ </disk>
+ <disk name='hda' backup='no'/>
+ </disks>
+</domainbackup>
--- /dev/null
+<domainbackup mode='push'/>
#include "testutils.h"
#include "internal.h"
#include "virstring.h"
+#include "conf/backup_conf.h"
#define VIR_FROM_THIS VIR_FROM_NONE
}
+static int
+testCompareBackupXML(const void *data)
+{
+ const char *testname = data;
+ g_autofree char *xml_in = NULL;
+ g_autofree char *file_in = NULL;
+ g_autofree char *file_out = NULL;
+ g_autoptr(virDomainBackupDef) backup = NULL;
+ g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
+ g_autofree char *actual = NULL;
+
+ file_in = g_strdup_printf("%s/domainbackupxml2xmlin/%s.xml",
+ abs_srcdir, testname);
+ file_out = g_strdup_printf("%s/domainbackupxml2xmlout/%s.xml",
+ abs_srcdir, testname);
+
+ if (virFileReadAll(file_in, 1024 * 64, &xml_in) < 0)
+ return -1;
+
+ if (!(backup = virDomainBackupDefParseString(xml_in, xmlopt, 0))) {
+ VIR_TEST_VERBOSE("failed to parse backup def '%s'", file_in);
+ return -1;
+ }
+
+ if (virDomainBackupDefFormat(&buf, backup, false) < 0) {
+ VIR_TEST_VERBOSE("failed to format backup def '%s'", file_in);
+ return -1;
+ }
+
+ actual = virBufferContentAndReset(&buf);
+
+ return virTestCompareToFile(actual, file_out);
+}
+
+
static int
mymain(void)
{
DO_TEST_DIFFERENT("cputune");
+#define DO_TEST_BACKUP(name) \
+ if (virTestRun("QEMU BACKUP XML-2-XML " name, testCompareBackupXML, name) < 0) \
+ ret = -1;
+
+ DO_TEST_BACKUP("empty");
+ DO_TEST_BACKUP("backup-pull");
+ DO_TEST_BACKUP("backup-pull-seclabel");
+ DO_TEST_BACKUP("backup-push");
+ DO_TEST_BACKUP("backup-push-seclabel");
+
virObjectUnref(caps);
virObjectUnref(xmlopt);
"genericxml2xmloutdata", "xlconfigdata", "libxlxml2domconfigdata",
"qemuhotplugtestdomains");
DO_TEST_DIR("domaincaps.rng", "domaincapsdata");
- DO_TEST_DIR("domainbackup.rng", "domainbackupxml2xmlin");
+ DO_TEST_DIR("domainbackup.rng", "domainbackupxml2xmlin",
+ "domainbackupxml2xmlout");
DO_TEST_DIR("domaincheckpoint.rng", "qemudomaincheckpointxml2xmlin",
"qemudomaincheckpointxml2xmlout");
DO_TEST_DIR("domainsnapshot.rng", "qemudomainsnapshotxml2xmlin",