1*** Settings *** 2Documentation Test IPMI FRU data. 3 4Resource ../lib/ipmi_client.robot 5Resource ../lib/openbmc_ffdc.robot 6Library ../lib/ipmi_utils.py 7 8 9Suite Setup Suite Setup Execution 10Suite Teardown Suite Teardown Execution 11Test Teardown Test Teardown Execution 12 13Test Tags IPMI_FRU 14 15*** Variables *** 16 17&{ipmi_redfish_fru_field_map} product_serial=SerialNumber product_part_number=PartNumber 18 19*** Test Cases *** 20 21Test FRU Info Of Power Supplies 22 [Documentation] Verify FRU info of power supply via IPMI and Redfish. 23 [Tags] Test_FRU_Info_Of_Power_Supplies 24 25 # IPMI FRU info. 26 ${ipmi_fru_component_info}= Get Component FRU Info ${COMPONENT_NAME_OF_POWER_SUPPLY} 27 ... ${fru_objs} 28 29 # Redfish FRU info. 30 ${redfish_power_details}= Redfish.Get Members List 31 ... /redfish/v1/Chassis/${CHASSIS_ID}/PowerSubsystem/PowerSupplies 32 ${redfish_power_dict}= Create List 33 FOR ${power_supply} IN @{redfish_power_details} 34 ${redfish_power_supply_reading}= Redfish.Get Properties ${power_supply} 35 Append To List ${redfish_power_dict} ${redfish_power_supply_reading} 36 END 37 Verify IPMI and Redfish subcomponents ${redfish_power_dict} 38 ... ${ipmi_fru_component_info} 39 40*** Keywords *** 41 42Verify IPMI and Redfish subcomponents 43 [Documentation] Get IPMI And Redfish subcomponents of FRU and verify. 44 [Arguments] ${redfish_fru_info} ${ipmi_fru_info} 45 46 # Description of argument(s): 47 # ${ipmi_fru_info} IPMI FRU component values. 48 # ${redfish_fru_info} Redfish FRU component values. 49 50 ${sub_component_count}= Get Length ${redfish_fru_info} 51 52 # Fetch each subcomponent value of IPMI and Redfish and compare. 53 FOR ${sub_component_index} IN RANGE 0 ${sub_component_count} 54 ${ipmi_fru_sub_component}= 55 ... Get From List ${ipmi_fru_info} ${sub_component_index} 56 ${redfish_fru_sub_component}= 57 ... Get From List ${redfish_fru_info} ${sub_component_index} 58 Compare IPMI And Redfish FRU Component ${ipmi_fru_sub_component} 59 ... ${redfish_fru_sub_component} 60 END 61 62 63Compare IPMI And Redfish FRU Component 64 [Documentation] Compare IPMI And Redfish FRU Component data objects. 65 [Arguments] ${ipmi_fru_component_obj} ${redfish_fru_component_obj} 66 67 # Description of argument(s): 68 # ${ipmi_fru_component_obj} IPMI FRU component data in dictionary. 69 # Example: 70 # FRU Device Description : powersupply0 (ID 75) 71 # Board Mfg Date : Sun Dec 31 18:00:00 1995 72 # Board Product : powersupply0 73 # Board Serial : 71G303 74 # Board Part Number : 01KL471 75 # ${redfish_fru_component_obj} Redfish FRU component data in dictionary. 76 # Example: 77 # "Name": "powersupply0", 78 # "PartNumber": "01KL471", 79 # "PowerInputWatts": 114.0, 80 # "SerialNumber": "71G303", 81 82 # Get key_map from ipmi_redfish_fru_field_map. 83 ${key_map}= Get Dictionary Items ${ipmi_redfish_fru_field_map} 84 85 FOR ${key} ${value} IN @{key_map} 86 Exit For Loop IF "${value}" == "${EMPTY}" 87 FOR ${ipmi_fru_component} IN ${ipmi_fru_component_obj} 88 FOR ${redfish_fru_component} IN ${redfish_fru_component_obj} 89 Run Keyword If '${ipmi_fru_component['product_name']}' == '${redfish_fru_component['Name']}' 90 ... Should Contain ${redfish_fru_component_obj['${value}']} 91 ... ${ipmi_fru_component_obj['${key}']} 92 ... msg=Comparison failed. 93 END 94 END 95 END 96 97 98Suite Setup Execution 99 [Documentation] Do test setup initialization. 100 101 ${status} ${fru_objs}= Run Keyword And Ignore Error Get Fru Info 102 Log To Console FRU: ${fru_objs} 103 Set Suite Variable ${fru_objs} 104 Redfish.Login 105 106 107Suite Teardown Execution 108 [Documentation] Do the post suite teardown. 109 110 Redfish.Logout 111 112 113Test Teardown Execution 114 [Documentation] Do the post test teardown. 115 116 FFDC On Test Case Fail 117