block: qcow: add integration tests for qcow2 compression

Add tests:
- zlib: test_virtio_block_qcow2_zlib()
- zstd: test_virtio_block_qcow2_zstd()
Both these tests use zlib- and zstd-compressed images as OS image.

Modify test_virtio_block_qcow2_backing_file() test: it is practical
to test qcow2 file-backing with compression, so use zlib-compressed
image as a backing file.

Signed-off-by: Eugene Korenevsky <ekorenevsky@aliyun.com>
This commit is contained in:
Eugene Korenevsky 2025-11-18 01:43:17 +03:00 committed by Rob Bradford
parent aa67250049
commit 94ed7c1745
3 changed files with 58 additions and 2 deletions

View file

@ -46,11 +46,29 @@ update_workloads() {
popd || exit popd || exit
fi fi
FOCAL_OS_QCOW2_ZLIB_FILE_IMAGE_NAME="focal-server-cloudimg-arm64-custom-20210929-0-zlib.qcow2"
FOCAL_OS_QCOW2_ZLIB_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW2_ZLIB_FILE_IMAGE_NAME"
if [ ! -f "$FOCAL_OS_QCOW2_ZLIB_FILE_IMAGE" ]; then
pushd "$WORKLOADS_DIR" || exit
time qemu-img convert -c -f raw -O qcow2 -o compression_type=zlib \
"$FOCAL_OS_RAW_IMAGE" $FOCAL_OS_QCOW2_ZLIB_FILE_IMAGE_NAME
popd || exit
fi
FOCAL_OS_QCOW2_ZSTD_FILE_IMAGE_NAME="focal-server-cloudimg-arm64-custom-20210929-0-zstd.qcow2"
FOCAL_OS_QCOW2_ZSTD_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW2_ZSTD_FILE_IMAGE_NAME"
if [ ! -f "$FOCAL_OS_QCOW2_ZSTD_FILE_IMAGE" ]; then
pushd "$WORKLOADS_DIR" || exit
time qemu-img convert -c -f raw -O qcow2 -o compression_type=zstd \
"$FOCAL_OS_RAW_IMAGE" $FOCAL_OS_QCOW2_ZSTD_FILE_IMAGE_NAME
popd || exit
fi
FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME="focal-server-cloudimg-arm64-custom-20210929-0-backing.qcow2" 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" FOCAL_OS_QCOW2_BACKING_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME"
if [ ! -f "$FOCAL_OS_QCOW2_BACKING_FILE_IMAGE" ]; then if [ ! -f "$FOCAL_OS_QCOW2_BACKING_FILE_IMAGE" ]; then
pushd "$WORKLOADS_DIR" || exit pushd "$WORKLOADS_DIR" || exit
time qemu-img create -f qcow2 -b "$FOCAL_OS_QCOW2_UNCOMPRESSED_IMAGE" -F qcow2 $FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME time qemu-img create -f qcow2 -b "$FOCAL_OS_QCOW2_ZSTD_FILE_IMAGE" -F qcow2 $FOCAL_OS_QCOW2_IMAGE_BACKING_FILE_NAME
popd || exit popd || exit
fi fi

View file

@ -45,11 +45,31 @@ if [ ! -f "$FOCAL_OS_RAW_IMAGE" ]; then
popd || exit popd || exit
fi fi
FOCAL_OS_QCOW_ZLIB_FILE_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0-zlib.qcow2"
FOCAL_OS_QCOW_ZLIB_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW_ZLIB_FILE_IMAGE_NAME"
if [ ! -f "$FOCAL_OS_QCOW_ZLIB_FILE_IMAGE" ]; then
pushd "$WORKLOADS_DIR" || exit
time qemu-img convert -c -f raw -O qcow2 -o compression_type=zlib \
"$FOCAL_OS_RAW_IMAGE" $FOCAL_OS_QCOW_ZLIB_FILE_IMAGE_NAME
popd || exit
fi
FOCAL_OS_QCOW_ZSTD_FILE_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0-zstd.qcow2"
FOCAL_OS_QCOW_ZSTD_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW_ZSTD_FILE_IMAGE_NAME"
if [ ! -f "$FOCAL_OS_QCOW_ZSTD_FILE_IMAGE" ]; then
pushd "$WORKLOADS_DIR" || exit
time qemu-img convert -c -f raw -O qcow2 -o compression_type=zstd \
"$FOCAL_OS_RAW_IMAGE" $FOCAL_OS_QCOW_ZSTD_FILE_IMAGE_NAME
popd || exit
fi
FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0-backing.qcow2" 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" FOCAL_OS_QCOW_BACKING_FILE_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME"
if [ ! -f "$FOCAL_OS_QCOW_BACKING_FILE_IMAGE" ]; then if [ ! -f "$FOCAL_OS_QCOW_BACKING_FILE_IMAGE" ]; then
pushd "$WORKLOADS_DIR" || exit pushd "$WORKLOADS_DIR" || exit
time qemu-img create -f qcow2 -b "$FOCAL_OS_IMAGE" -F qcow2 $FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME time qemu-img create -f qcow2 \
-b "$FOCAL_OS_QCOW_ZSTD_FILE_IMAGE" \
-F qcow2 $FOCAL_OS_QCOW_BACKING_FILE_IMAGE_NAME
popd || exit popd || exit
fi fi

View file

@ -40,6 +40,10 @@ mod x86_64 {
pub const JAMMY_VFIO_IMAGE_NAME: &str = pub const JAMMY_VFIO_IMAGE_NAME: &str =
"jammy-server-cloudimg-amd64-custom-vfio-20241012-0.raw"; "jammy-server-cloudimg-amd64-custom-vfio-20241012-0.raw";
pub const FOCAL_IMAGE_NAME_QCOW2: &str = "focal-server-cloudimg-amd64-custom-20210609-0.qcow2"; pub const FOCAL_IMAGE_NAME_QCOW2: &str = "focal-server-cloudimg-amd64-custom-20210609-0.qcow2";
pub const FOCAL_IMAGE_NAME_QCOW2_ZLIB: &str =
"focal-server-cloudimg-amd64-custom-20210609-0-zlib.qcow2";
pub const FOCAL_IMAGE_NAME_QCOW2_ZSTD: &str =
"focal-server-cloudimg-amd64-custom-20210609-0-zstd.qcow2";
pub const FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE: &str = pub const FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE: &str =
"focal-server-cloudimg-amd64-custom-20210609-0-backing.qcow2"; "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_VHD: &str = "focal-server-cloudimg-amd64-custom-20210609-0.vhd";
@ -59,6 +63,10 @@ mod aarch64 {
pub const FOCAL_IMAGE_UPDATE_KERNEL_NAME: &str = pub const FOCAL_IMAGE_UPDATE_KERNEL_NAME: &str =
"focal-server-cloudimg-arm64-custom-20210929-0-update-kernel.raw"; "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: &str = "focal-server-cloudimg-arm64-custom-20210929-0.qcow2";
pub const FOCAL_IMAGE_NAME_QCOW2_ZLIB: &str =
"focal-server-cloudimg-arm64-custom-20210929-0-zlib.qcow2";
pub const FOCAL_IMAGE_NAME_QCOW2_ZSTD: &str =
"focal-server-cloudimg-arm64-custom-20210929-0-zstd.qcow2";
pub const FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE: &str = pub const FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE: &str =
"focal-server-cloudimg-arm64-custom-20210929-0-backing.qcow2"; "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_VHD: &str = "focal-server-cloudimg-arm64-custom-20210929-0.vhd";
@ -3488,6 +3496,16 @@ mod common_parallel {
_test_virtio_block(FOCAL_IMAGE_NAME_QCOW2, false, false); _test_virtio_block(FOCAL_IMAGE_NAME_QCOW2, false, false);
} }
#[test]
fn test_virtio_block_qcow2_zlib() {
_test_virtio_block(FOCAL_IMAGE_NAME_QCOW2_ZLIB, false, false);
}
#[test]
fn test_virtio_block_qcow2_zstd() {
_test_virtio_block(FOCAL_IMAGE_NAME_QCOW2_ZSTD, false, false);
}
#[test] #[test]
fn test_virtio_block_qcow2_backing_file() { fn test_virtio_block_qcow2_backing_file() {
_test_virtio_block(FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE, false, false); _test_virtio_block(FOCAL_IMAGE_NAME_QCOW2_BACKING_FILE, false, false);