@@ -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