diff --git a/libvirt/tests/cfg/incremental_backup/incremental_backup_pull_mode.cfg b/libvirt/tests/cfg/incremental_backup/incremental_backup_pull_mode.cfg index 314f04ecb0..40c2f168b7 100644 --- a/libvirt/tests/cfg/incremental_backup/incremental_backup_pull_mode.cfg +++ b/libvirt/tests/cfg/incremental_backup/incremental_backup_pull_mode.cfg @@ -7,6 +7,14 @@ local_ip = "ENTER.YOUR.IPV4ADDR" local_user_name = "ENTER.YOUR.USER.NAME" local_user_password = "ENTER.YOUR.USER.PASSWORD" + only original_disk_local + variants: + - without_datastore: + - with_datastore: + only default_exportbitmap.default_exportname + with_data_file = "yes" + func_supported_since_libvirt_ver = (10, 10, 0) + data_file_option = " -o data_file=%s" variants: - scratch_luks_encrypted: only custom_exportname..custom_exportbitmap..hotplug_disk..original_disk_local diff --git a/libvirt/tests/cfg/incremental_backup/incremental_backup_push_mode.cfg b/libvirt/tests/cfg/incremental_backup/incremental_backup_push_mode.cfg index df50fe6440..93c29585d5 100644 --- a/libvirt/tests/cfg/incremental_backup/incremental_backup_push_mode.cfg +++ b/libvirt/tests/cfg/incremental_backup/incremental_backup_push_mode.cfg @@ -3,6 +3,13 @@ start_vm = "no" original_disk_size = "100M" backup_data_size = "1M" + variants: + - without_datastore: + - with_datastore: + only original_disk_local + with_data_file = "yes" + func_supported_since_libvirt_ver = (10, 10, 0) + data_file_option = " -o data_file=%s" variants: - backup_to_file: target_type = "file" diff --git a/libvirt/tests/src/incremental_backup/incremental_backup_pull_mode.py b/libvirt/tests/src/incremental_backup/incremental_backup_pull_mode.py index 888e3dab3e..a60d75d409 100644 --- a/libvirt/tests/src/incremental_backup/incremental_backup_pull_mode.py +++ b/libvirt/tests/src/incremental_backup/incremental_backup_pull_mode.py @@ -50,6 +50,8 @@ def run(test, params, env): local_user_name = params.get("local_user_name", "root") local_user_password = params.get("local_user_password", "redhat") tmp_dir = data_dir.get_tmp_dir() + with_data_file = "yes" == params.get("with_data_file", "no") + libvirt_version.is_libvirt_feature_supported(params) # Backup config scratch_type = params.get("scratch_type", "file") reuse_scratch_file = "yes" == params.get("reuse_scratch_file") @@ -150,8 +152,15 @@ def run(test, params, env): if original_disk_type == "local": image_name = "{}_image.qcow2".format(original_disk_target) disk_path = os.path.join(tmp_dir, image_name) + data_file = os.path.join(tmp_dir, "datastore") + for file in [disk_path, data_file]: + if os.path.exists(file): + os.remove(file) + if with_data_file: + data_file_option = params.get("data_file_option", "") % data_file + extra_cmd = "" if not with_data_file else data_file_option libvirt.create_local_disk("file", disk_path, original_disk_size, - "qcow2") + "qcow2", extra=extra_cmd) disk_params = {"device_type": "disk", "type_name": "file", "driver_type": "qcow2", @@ -213,6 +222,11 @@ def run(test, params, env): virsh.attach_device(vm.name, disk_xml, flagstr="--config", debug=True) vm.start() + guest_xml = virsh.dumpxml(vm_name).stdout_text + logging.debug("The current guest xml is:%s" % guest_xml) + if with_data_file: + if data_file not in guest_xml: + test.fail("The datastore file xml can't be generated automatically in guest!") session = vm.wait_for_login() new_disks_in_vm = list(utils_disk.get_linux_disks(session).keys()) session.close() diff --git a/libvirt/tests/src/incremental_backup/incremental_backup_push_mode.py b/libvirt/tests/src/incremental_backup/incremental_backup_push_mode.py index c92d5e3f0c..9e0c181dcf 100644 --- a/libvirt/tests/src/incremental_backup/incremental_backup_push_mode.py +++ b/libvirt/tests/src/incremental_backup/incremental_backup_push_mode.py @@ -67,6 +67,8 @@ def backup_job_done(vm_name, vm_disk): backup_error = "yes" == params.get("backup_error") expect_backup_canceled = "yes" == params.get("expect_backup_canceled") tmp_dir = data_dir.get_data_dir() + with_data_file = "yes" == params.get("with_data_file", "no") + libvirt_version.is_libvirt_feature_supported(params) virsh_dargs = {'debug': True, 'ignore_status': True} try: @@ -87,10 +89,15 @@ def backup_job_done(vm_name, vm_disk): if original_disk_type == "local": image_name = "{}_image.qcow2".format(original_disk_target) disk_path = os.path.join(tmp_dir, image_name) - if os.path.exists(disk_path): - os.remove(disk_path) + data_file = os.path.join(tmp_dir, "datastore") + for file in [disk_path, data_file]: + if os.path.exists(file): + os.remove(file) + if with_data_file: + data_file_option = params.get("data_file_option", "") % data_file + extra_cmd = "" if not with_data_file else data_file_option libvirt.create_local_disk("file", disk_path, original_disk_size, - "qcow2") + "qcow2", extra=extra_cmd) disk_params = {"device_type": "disk", "type_name": "file", "driver_type": "qcow2", @@ -167,6 +174,11 @@ def backup_job_done(vm_name, vm_disk): virsh.attach_device(vm.name, disk_xml, flagstr="--config", debug=True) vm.start() + guest_xml = virsh.dumpxml(vm_name).stdout_text + logging.debug("The current guest xml is:%s" % guest_xml) + if with_data_file: + if data_file not in guest_xml: + test.fail("The datastore file xml can't be generated automatically in guest!") session = vm.wait_for_login() new_disks_in_vm = list(utils_disk.get_linux_disks(session).keys()) session.close()