Skip to content

Commit 10b17a4

Browse files
committed
csme: Test all binaries
Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent b57d3f4 commit 10b17a4

File tree

1 file changed

+62
-88
lines changed

1 file changed

+62
-88
lines changed

framework_lib/src/csme.rs

Lines changed: 62 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -753,9 +753,6 @@ mod tests {
753753

754754
/// Load SMBIOS data from a dmidecode binary dump file
755755
/// Created with: sudo dmidecode --dump-bin smbios.bin
756-
/// Default test SMBIOS dump filename
757-
const SMBIOS_DUMP_FILE: &str = "marigold-smbios.bin";
758-
759756
fn load_smbios_dump(filename: &str) -> Option<SMBiosData> {
760757
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
761758
path.push("test_bins");
@@ -855,101 +852,78 @@ mod tests {
855852
assert!(bg.fpf_soc_lock);
856853
}
857854

858-
#[test]
859-
fn test_me_fwsts_from_smbios_dump() {
860-
let smbios = match load_smbios_dump(SMBIOS_DUMP_FILE) {
861-
Some(s) => s,
862-
None => {
863-
println!("Skipping test - dump file not available");
864-
return;
865-
}
866-
};
855+
/// Generate tests for each SMBIOS dump file
856+
macro_rules! smbios_dump_tests {
857+
($($name:ident: $file:expr),+ $(,)?) => {
858+
$(
859+
mod $name {
860+
use super::*;
867861

868-
// Test ME FWSTS parsing
869-
let me_fwsts = me_fwsts_from_smbios(&smbios);
870-
assert!(me_fwsts.is_some(), "Should find ME FWSTS table");
871-
872-
let me_fwsts = me_fwsts.unwrap();
873-
let mei1 = me_fwsts.mei1();
874-
assert!(mei1.is_some(), "Should find MEI1 component");
862+
fn smbios() -> SMBiosData {
863+
load_smbios_dump($file)
864+
.unwrap_or_else(|| panic!("Dump file not found: {}", $file))
865+
}
875866

876-
let mei1 = mei1.unwrap();
877-
println!("Working State: {:?}", mei1.hfsts.working_state());
878-
println!("Operation Mode: {:?}", mei1.hfsts.operation_mode());
879-
println!("HFSTS1: 0x{:08X}", mei1.hfsts.hfsts1);
880-
println!("HFSTS2: 0x{:08X}", mei1.hfsts.hfsts2);
881-
println!("HFSTS3: 0x{:08X}", mei1.hfsts.hfsts3);
882-
println!("HFSTS4: 0x{:08X}", mei1.hfsts.hfsts4);
883-
println!("HFSTS5: 0x{:08X}", mei1.hfsts.hfsts5);
884-
println!("HFSTS6: 0x{:08X}", mei1.hfsts.hfsts6);
885-
}
867+
#[test]
868+
fn me_fwsts() {
869+
let smbios = smbios();
870+
let me_fwsts = me_fwsts_from_smbios(&smbios);
871+
assert!(me_fwsts.is_some(), "Should find ME FWSTS table");
886872

887-
#[test]
888-
fn test_me_version_from_smbios_dump() {
889-
let smbios = match load_smbios_dump(SMBIOS_DUMP_FILE) {
890-
Some(s) => s,
891-
None => {
892-
println!("Skipping test - dump file not available");
893-
return;
894-
}
895-
};
873+
let me_fwsts = me_fwsts.unwrap();
874+
let mei1 = me_fwsts.mei1();
875+
assert!(mei1.is_some(), "Should find MEI1 component");
896876

897-
let me_version = me_version_from_smbios(&smbios);
898-
if let Some(ver) = me_version {
899-
println!("ME Version: {}", ver);
900-
println!("ME Family: {}", MeFamily::from_version(ver.major as u32));
901-
} else {
902-
println!("No ME version found in SMBIOS 0xDD tables");
903-
}
904-
}
877+
let mei1 = mei1.unwrap();
878+
println!("Working State: {:?}", mei1.hfsts.working_state());
879+
println!("Operation Mode: {:?}", mei1.hfsts.operation_mode());
880+
}
905881

906-
#[test]
907-
fn test_type14_handles_from_smbios_dump() {
908-
let smbios = match load_smbios_dump(SMBIOS_DUMP_FILE) {
909-
Some(s) => s,
910-
None => {
911-
println!("Skipping test - dump file not available");
912-
return;
913-
}
914-
};
882+
#[test]
883+
fn me_version() {
884+
let smbios = smbios();
885+
let me_version = me_version_from_smbios(&smbios);
886+
assert!(me_version.is_some(), "Should find ME version");
887+
let ver = me_version.unwrap();
888+
println!("ME Version: {}", ver);
889+
println!("ME Family: {}", MeFamily::from_version(ver.major as u32));
890+
}
915891

916-
let handles = find_me_handles_from_type14(&smbios);
917-
println!("ME Handles from Type 14: {:?}", handles);
918-
for handle in &handles {
919-
println!(" Handle: 0x{:04X}", handle);
920-
}
921-
}
892+
#[test]
893+
fn type14_handles() {
894+
let smbios = smbios();
895+
let handles = find_me_handles_from_type14(&smbios);
896+
assert!(!handles.is_empty(), "Should find ME handles from Type 14");
897+
for handle in &handles {
898+
println!(" Handle: 0x{:04X}", handle);
899+
}
900+
}
922901

923-
#[test]
924-
fn test_bootguard_status_from_dump() {
925-
let smbios = match load_smbios_dump(SMBIOS_DUMP_FILE) {
926-
Some(s) => s,
927-
None => {
928-
println!("Skipping test - dump file not available");
929-
return;
930-
}
931-
};
902+
#[test]
903+
fn bootguard() {
904+
let smbios = smbios();
905+
let me_fwsts = me_fwsts_from_smbios(&smbios);
906+
assert!(me_fwsts.is_some());
932907

933-
let me_fwsts = me_fwsts_from_smbios(&smbios);
934-
assert!(me_fwsts.is_some());
908+
let family = me_version_from_smbios(&smbios)
909+
.map(|v| MeFamily::from_version(v.major as u32))
910+
.unwrap_or(MeFamily::Csme16);
935911

936-
let me_fwsts = me_fwsts.unwrap();
912+
let bootguard = me_fwsts.unwrap().bootguard_status(family);
913+
assert!(bootguard.is_some(), "Should have bootguard status");
914+
let bg = bootguard.unwrap();
915+
println!("Bootguard: enabled={}, acm_active={}", bg.enabled, bg.acm_active);
916+
}
917+
}
918+
)+
919+
};
920+
}
937921

938-
// Determine ME family from version if available
939-
let family = me_version_from_smbios(&smbios)
940-
.map(|v| MeFamily::from_version(v.major as u32))
941-
.unwrap_or(MeFamily::Csme16);
942-
943-
let bootguard = me_fwsts.bootguard_status(family);
944-
if let Some(bg) = bootguard {
945-
println!("Bootguard Status (family: {}):", family);
946-
println!(" Enabled: {}", bg.enabled);
947-
println!(" Verified Boot: {:?}", bg.verified_boot);
948-
println!(" ACM Active: {}", bg.acm_active);
949-
println!(" ACM Done: {:?}", bg.acm_done);
950-
println!(" Policy: {:?}", bg.policy);
951-
println!(" FPF SOC Lock: {}", bg.fpf_soc_lock);
952-
}
922+
smbios_dump_tests! {
923+
marigold: "marigold-smbios.bin",
924+
adl: "adl-smbios.bin",
925+
iris: "iris-smbios.bin",
926+
sunflower: "sunflower-smbios.bin",
953927
}
954928

955929
#[test]

0 commit comments

Comments
 (0)