From 7802470906cc1cf7c034345116f1cf5ea26cb88e Mon Sep 17 00:00:00 2001 From: Muminul Islam Date: Sat, 21 Mar 2026 16:17:55 -0700 Subject: [PATCH] tests: add basic_cvm_guest macro for CVM tests Introduce a basic_cvm_guest! macro in integration_cvm.rs to reduce boilerplate when creating confidential VM guest instances. This replaces repetitive UbuntuDiskConfig and GuestFactory::new_confidential_guest_factory() calls across multiple CVM test functions. Signed-off-by: Muminul Islam --- cloud-hypervisor/tests/integration_cvm.rs | 64 +++++++---------------- 1 file changed, 19 insertions(+), 45 deletions(-) diff --git a/cloud-hypervisor/tests/integration_cvm.rs b/cloud-hypervisor/tests/integration_cvm.rs index ed848c8f1..e2b7b08ad 100644 --- a/cloud-hypervisor/tests/integration_cvm.rs +++ b/cloud-hypervisor/tests/integration_cvm.rs @@ -18,32 +18,30 @@ mod common_cvm { use test_infra::*; use super::*; + macro_rules! basic_cvm_guest { + ($image_name:expr) => {{ + let disk_config = UbuntuDiskConfig::new($image_name.to_string()); + GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)) + }}; + } #[test] fn test_focal_simple_launch() { - let disk_config = UbuntuDiskConfig::new(FOCAL_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(FOCAL_IMAGE_NAME); _test_simple_launch(&guest); } #[test] fn test_api_http_create_boot() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = GuestFactory::new_confidential_guest_factory() - .create_guest(Box::new(disk_config)) - .with_cpu(4); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME).with_cpu(4); let target_api = TargetApi::new_http_api(&guest.tmp_dir); _test_api_create_boot(&target_api, &guest); } #[test] fn test_api_http_shutdown() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = GuestFactory::new_confidential_guest_factory() - .create_guest(Box::new(disk_config)) - .with_cpu(4); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME).with_cpu(4); let target_api = TargetApi::new_http_api(&guest.tmp_dir); _test_api_shutdown(&target_api, &guest); @@ -51,70 +49,50 @@ mod common_cvm { #[test] fn test_api_http_delete() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = GuestFactory::new_confidential_guest_factory() - .create_guest(Box::new(disk_config)) - .with_cpu(4); - + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); let target_api = TargetApi::new_http_api(&guest.tmp_dir); _test_api_delete(&target_api, &guest); } #[test] fn test_power_button() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_power_button(&guest); } #[test] fn test_virtio_vsock() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_virtio_vsock(&guest, false); } #[test] fn test_multi_cpu() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_multi_cpu(&guest); } #[test] fn test_cpu_affinity() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = GuestFactory::new_confidential_guest_factory() - .create_guest(Box::new(disk_config)) - .with_cpu(2); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME).with_cpu(2); _test_cpu_affinity(&guest); } #[test] fn test_virtio_queue_affinity() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = GuestFactory::new_confidential_guest_factory() - .create_guest(Box::new(disk_config)) - .with_cpu(4); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME).with_cpu(4); _test_virtio_queue_affinity(&guest); } #[test] fn test_pci_msi() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_pci_msi(&guest); } #[test] fn test_virtio_net_ctrl_queue() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_virtio_net_ctrl_queue(&guest); } @@ -124,17 +102,13 @@ mod common_cvm { // supported by Linux // IGVM file used by Sev-Snp Guest now support up to 8 segments, so we can use 8 segments for testing. let num_pci_segments: u16 = 8; - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_pci_multiple_segments(&guest, num_pci_segments, 5); } #[test] fn test_direct_kernel_boot() { - let disk_config = UbuntuDiskConfig::new(JAMMY_IMAGE_NAME.to_string()); - let guest = - GuestFactory::new_confidential_guest_factory().create_guest(Box::new(disk_config)); + let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME); _test_direct_kernel_boot(&guest); }