From 558cf3ccfe3537fb977f08e4805f8c707fdcc819 Mon Sep 17 00:00:00 2001 From: Sibo Wang Date: Thu, 13 Jul 2023 11:20:57 +0800 Subject: [PATCH] Update the indirect_image_blacklist dynamically Need to update the indirect_image_blacklist dynamically according to the host environments when create disk by scsi_debug. Signed-off-by: Sibo Wang --- qemu/tests/cfg/multi_disk.cfg | 2 ++ qemu/tests/multi_disk.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/qemu/tests/cfg/multi_disk.cfg b/qemu/tests/cfg/multi_disk.cfg index b8f5afe79f..c7d9730f01 100644 --- a/qemu/tests/cfg/multi_disk.cfg +++ b/qemu/tests/cfg/multi_disk.cfg @@ -108,6 +108,8 @@ force_create_image = no pre_command = "modprobe -r scsi_debug; modprobe sg; modprobe scsi_debug add_host=9 dev_size_mb=50" post_command = "rmmod scsi_debug" + disk_check_cmd = "ls -1d /dev/nvme* || ls -1d /dev/sda*" + image_stg_blacklist = "/dev/sda[\d]* /dev/sg0" stg_params += "image_raw_device:yes " stg_params += "image_format:raw " stg_params += "indirect_image_select:range(-9,0) " diff --git a/qemu/tests/multi_disk.py b/qemu/tests/multi_disk.py index 88fc676b4a..b502c08e71 100644 --- a/qemu/tests/multi_disk.py +++ b/qemu/tests/multi_disk.py @@ -8,6 +8,7 @@ import string from avocado.utils import astring +from avocado.utils import process from virttest import env_process from virttest import error_context @@ -249,6 +250,18 @@ def _get_data_disks(): astring.tabular_output(param_table, param_table_header)) return + disk_check_cmd = params.get('disk_check_cmd') + indirect_image_blacklist = params.get('indirect_image_blacklist').split() + + if disk_check_cmd: + image_stg_blacklist = params.get('image_stg_blacklist').split() + matching_images = process.run(disk_check_cmd, ignore_status=True, + shell=True).stdout_text + for disk in image_stg_blacklist: + if not re.search(disk, matching_images): + indirect_image_blacklist.remove(disk) + params["indirect_image_blacklist"] = " ".join(indirect_image_blacklist) + # Always recreate VMs and disks error_context.context("Start the guest with new disks", test.log.info) for vm_name in params.objects("vms"):