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