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 <muislam@microsoft.com>
This commit is contained in:
Muminul Islam
2026-03-21 16:17:55 -07:00
committed by Rob Bradford
parent c75504c833
commit 7802470906

View File

@@ -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);
}