mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
tests: cover new SMBIOS platform fields
The structured SMBIOS platform config introduced six new keys (system_manufacturer, system_product_name, system_version, system_family, system_sku_number, chassis_asset_tag), but integration coverage only existed for serial_number, uuid, and oem_strings. Add _test_dmi_system_and_chassis, which boots a guest with all six keys set and checks each value via `dmidecode -s` using the same leaf name as the CLI key. Execute it in both the regular and SEV-SNP integration suites. On-behalf-of: SAP leander.kohler@sap.com Signed-off-by: Leander Kohler <leander.kohler@cyberus-technology.de>
This commit is contained in:
committed by
Rob Bradford
parent
b3f79e3a2f
commit
3b79503e2f
@@ -2325,6 +2325,54 @@ pub(crate) fn _test_dmi_oem_strings(guest: &Guest) {
|
|||||||
handle_child_output(r, &output);
|
handle_child_output(r, &output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
pub(crate) fn _test_dmi_system_and_chassis(guest: &Guest) {
|
||||||
|
let fields = [
|
||||||
|
("system_manufacturer", "system-manufacturer", "Manufacturer"),
|
||||||
|
("system_product_name", "system-product-name", "ProductName"),
|
||||||
|
("system_version", "system-version", "Version"),
|
||||||
|
("system_family", "system-family", "Family"),
|
||||||
|
("system_sku_number", "system-sku-number", "SkuNumber"),
|
||||||
|
("chassis_asset_tag", "chassis-asset-tag", "AssetTag"),
|
||||||
|
];
|
||||||
|
|
||||||
|
let platform = fields
|
||||||
|
.iter()
|
||||||
|
.map(|(key, _, value)| format!("{key}={value}"))
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join(",");
|
||||||
|
|
||||||
|
let mut child = GuestCommand::new(guest)
|
||||||
|
.default_cpus()
|
||||||
|
.default_memory()
|
||||||
|
.default_kernel_cmdline_with_platform(Some(&platform))
|
||||||
|
.default_disks()
|
||||||
|
.default_net()
|
||||||
|
.capture_output()
|
||||||
|
.spawn()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let r = std::panic::catch_unwind(|| {
|
||||||
|
guest.wait_vm_boot().unwrap();
|
||||||
|
|
||||||
|
for (_, dmidecode_field, expected) in fields {
|
||||||
|
assert_eq!(
|
||||||
|
guest
|
||||||
|
.ssh_command(&format!("sudo dmidecode -s {dmidecode_field}"))
|
||||||
|
.unwrap()
|
||||||
|
.trim(),
|
||||||
|
expected,
|
||||||
|
"DMI field {dmidecode_field} mismatch"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
kill_child(&mut child);
|
||||||
|
let output = child.wait_with_output().unwrap();
|
||||||
|
|
||||||
|
handle_child_output(r, &output);
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn _test_serial_off(guest: &Guest) {
|
pub(crate) fn _test_serial_off(guest: &Guest) {
|
||||||
let mut child = GuestCommand::new(guest)
|
let mut child = GuestCommand::new(guest)
|
||||||
.default_cpus()
|
.default_cpus()
|
||||||
|
|||||||
@@ -2051,6 +2051,13 @@ mod common_parallel {
|
|||||||
_test_dmi_oem_strings(&guest);
|
_test_dmi_oem_strings(&guest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
fn test_dmi_system_and_chassis() {
|
||||||
|
let guest = basic_regular_guest!(JAMMY_IMAGE_NAME);
|
||||||
|
_test_dmi_system_and_chassis(&guest);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_virtio_fs() {
|
fn test_virtio_fs() {
|
||||||
_test_virtio_fs(&prepare_virtiofsd, false, false, None);
|
_test_virtio_fs(&prepare_virtiofsd, false, false, None);
|
||||||
|
|||||||
@@ -219,6 +219,12 @@ mod common_cvm {
|
|||||||
_test_dmi_oem_strings(&guest);
|
_test_dmi_oem_strings(&guest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dmi_system_and_chassis() {
|
||||||
|
let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME);
|
||||||
|
_test_dmi_system_and_chassis(&guest);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_multiple_network_interfaces() {
|
fn test_multiple_network_interfaces() {
|
||||||
let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME);
|
let guest = basic_cvm_guest!(JAMMY_IMAGE_NAME);
|
||||||
|
|||||||
Reference in New Issue
Block a user