From 4ef388b67cda9fe7bcb5f55c93ca89b28ee82c1d Mon Sep 17 00:00:00 2001 From: Yu Li Date: Wed, 5 Jul 2023 15:14:38 +0800 Subject: [PATCH] tests: add integration for qcow backing file This test case creates a new qcow2 file using the image of ubuntu as its backing file, and boot a virtual machine with this image file. Signed-off-by: Yu Li --- scripts/run_integration_tests_aarch64.sh | 8 ++++++++ scripts/run_integration_tests_x86_64.sh | 8 ++++++++ tests/integration.rs | 9 +++++++++ 3 files changed, 25 insertions(+) diff --git a/scripts/run_integration_tests_aarch64.sh b/scripts/run_integration_tests_aarch64.sh index 2348ef881..8b6ab12b1 100755 --- a/scripts/run_integration_tests_aarch64.sh +++ b/scripts/run_integration_tests_aarch64.sh @@ -95,6 +95,14 @@ update_workloads() { popd fi + FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME="focal-server-cloudimg-arm64-custom-20210929-0-backing.qcow2" + FOCAL_OS_QCOW2_BACKING_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME" + if [ ! -f "$FOCAL_OS_QCOW2_BACKING_FILE_IMAGE" ]; then + pushd $WORKLOADS_DIR + time qemu-img create -f qcow2 -b $FOCAL_OS_QCOW2_UNCOMPRESSED_IMAGE -F qcow2 $FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME + popd + fi + JAMMY_OS_RAW_IMAGE_NAME="jammy-server-cloudimg-arm64-custom-20220329-0.raw" JAMMY_OS_RAW_IMAGE_DOWNLOAD_URL="https://cloud-hypervisor.azureedge.net/$JAMMY_OS_RAW_IMAGE_NAME" JAMMY_OS_RAW_IMAGE="$WORKLOADS_DIR/$JAMMY_OS_RAW_IMAGE_NAME" diff --git a/scripts/run_integration_tests_x86_64.sh b/scripts/run_integration_tests_x86_64.sh index a62afa77b..b6dc9ddfd 100755 --- a/scripts/run_integration_tests_x86_64.sh +++ b/scripts/run_integration_tests_x86_64.sh @@ -53,6 +53,14 @@ if [ ! -f "$FOCAL_OS_RAW_IMAGE" ]; then popd fi +FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0-backing.qcow2" +FOCAL_OS_QCOW_BACKING_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME" +if [ ! -f "$FOCAL_OS_QCOW_BACKING_FILE_IMAGE" ]; then + pushd $WORKLOADS_DIR + time qemu-img create -f qcow2 -b $FOCAL_OS_IMAGE -F qcow2 $FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME + popd +fi + JAMMY_OS_IMAGE_NAME="jammy-server-cloudimg-amd64-custom-20230119-0.qcow2" JAMMY_OS_IMAGE_URL="https://cloud-hypervisor.azureedge.net/$JAMMY_OS_IMAGE_NAME" JAMMY_OS_IMAGE="$WORKLOADS_DIR/$JAMMY_OS_IMAGE_NAME" diff --git a/tests/integration.rs b/tests/integration.rs index d637786e2..321fa3500 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -38,6 +38,8 @@ mod x86_64 { pub const FOCAL_IMAGE_NAME: &str = "focal-server-cloudimg-amd64-custom-20210609-0.raw"; pub const JAMMY_NVIDIA_IMAGE_NAME: &str = "jammy-server-cloudimg-amd64-nvidia.raw"; pub const FOCAL_IMAGE_NAME_QCOW2: &str = "focal-server-cloudimg-amd64-custom-20210609-0.qcow2"; + pub const FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE: &str = + "focal-server-cloudimg-amd64-custom-20210609-0-backing.qcow2"; pub const FOCAL_IMAGE_NAME_VHD: &str = "focal-server-cloudimg-amd64-custom-20210609-0.vhd"; pub const FOCAL_IMAGE_NAME_VHDX: &str = "focal-server-cloudimg-amd64-custom-20210609-0.vhdx"; pub const JAMMY_IMAGE_NAME: &str = "jammy-server-cloudimg-amd64-custom-20230119-0.raw"; @@ -56,6 +58,8 @@ mod aarch64 { pub const FOCAL_IMAGE_UPDATE_KERNEL_NAME: &str = "focal-server-cloudimg-arm64-custom-20210929-0-update-kernel.raw"; pub const FOCAL_IMAGE_NAME_QCOW2: &str = "focal-server-cloudimg-arm64-custom-20210929-0.qcow2"; + pub const FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE: &str = + "focal-server-cloudimg-arm64-custom-20210929-0-backing.qcow2"; pub const FOCAL_IMAGE_NAME_VHD: &str = "focal-server-cloudimg-arm64-custom-20210929-0.vhd"; pub const FOCAL_IMAGE_NAME_VHDX: &str = "focal-server-cloudimg-arm64-custom-20210929-0.vhdx"; pub const JAMMY_IMAGE_NAME: &str = "jammy-server-cloudimg-arm64-custom-20220329-0.raw"; @@ -3035,6 +3039,11 @@ mod common_parallel { _test_virtio_block(FOCAL_IMAGE_NAME_QCOW2, false) } + #[test] + fn test_virtio_block_qcow2_backing_file() { + _test_virtio_block(FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE, false) + } + #[test] fn test_virtio_block_vhd() { let mut workload_path = dirs::home_dir().unwrap();