1*** Settings ***
2Documentation       Get the systems' power supply voltage readings.
3
4Resource            ../../lib/bmc_redfish_resource.robot
5Resource            ../../lib/bmc_redfish_utils.robot
6Resource            ../../lib/openbmc_ffdc.robot
7Library             ../../lib/gen_robot_valid.py
8
9Suite Setup         Suite Setup Execution
10Suite Teardown      Suite Teardown Execution
11Test Setup          Printn
12Test Teardown       Test Teardown Execution
13
14
15*** Test Cases ***
16
17Verify Power Supplies Input Watts
18    [Documentation]  Verify there are no invalid power supply input watt records.
19    [Tags]  Verify_Power_Supplies_Input_Watts
20    [Template]  Verify Watts Record
21
22    # record_type   redfish_uri                       reading_type
23    PowerSupplies   ${REDFISH_CHASSIS_PSUPPLY0_URI}   PowerInputWatts
24    PowerSupplies   ${REDFISH_CHASSIS_PSUPPLY1_URI}   PowerInputWatts
25
26
27Verify Power Supplies Input Output Voltages
28    [Documentation]  Verify there are no invalid power supply voltage records.
29    [Tags]  Verify_Power_Supplies_Input_Output_Voltages
30    [Template]  Verify Voltage Records
31
32    # record_type   redfish_uri                        reading_type
33    Voltages        ${REDFISH_CHASSIS_PSUPPLY0_URI}    ReadingVolts
34    Voltages        ${REDFISH_CHASSIS_PSUPPLY1_URI}    ReadingVolts
35
36
37*** Keywords ***
38
39Verify Watts Record
40    [Documentation]  Verify the power watt records.
41    [Arguments]  ${record_type}  ${redfish_uri}  ${reading_type}
42
43    # Description of Arguments(s):
44    # record_type    The sensor record type (e.g. "PowerSupplies")
45    # redfish_uri    The power supply URI (e.g. /redfish/v1/Chassis/powersupply0/Power)
46    # reading_type   The power watt readings (e.g. "PowerInputWatts")
47
48    Verify Valid Records  ${record_type}  ${redfish_uri}  ${reading_type}
49
50
51Verify Voltage Records
52    [Documentation]  Verify the power voltage records.
53    [Arguments]  ${record_type}  ${redfish_uri}  ${reading_type}
54
55    # Description of Arguments(s):
56    # record_type    The sensor record type (e.g. "Voltages")
57    # redfish_uri    The power supply URI (e.g. /redfish/v1/Chassis/powersupply0/Power)
58    # reading_type   The power voltage readings (e.g. "ReadingVolts")
59
60    Verify Valid Records  ${record_type}  ${redfish_uri}  ${reading_type}
61
62    ${records}=  Redfish.Get Attribute
63    ...  ${redfish_uri}  ${record_type}
64
65    ${invalid_records}=  Evaluate
66    ...  [x for x in ${records} if not x['LowerThresholdNonCritical'] <= x['${reading_type}'] <= x['UpperThresholdNonCritical']]
67
68    ${num_invalid_records}=  Get Length  ${invalid_records}
69    Run Keyword If  ${num_invalid_records} > ${0}
70    ...  Rprint Vars  num_invalid_records  invalid_records
71    Rvalid Value  num_invalid_records  valid_values=[0]
72
73
74Verify Valid Records
75    [Documentation]  Verify all the valid records.
76    [Arguments]  ${record_type}  ${redfish_uri}  ${reading_type}
77
78    # Description of Arguments(s):
79    # record_type    The sensor record type (e.g. "PowerSupplies")
80    # redfish_uri    The power supply URI (e.g. /redfish/v1/Chassis/powersupply0/Power)
81    # reading_type   The power watt readings (e.g. "PowerInputWatts")
82
83    # A valid record will have "State" key "Enabled" and "Health" key "OK".
84    ${records}=  Redfish.Get Attribute
85    ...  ${redfish_uri}  ${record_type}
86
87    ${num_records}=  Get Length  ${records}
88    Rprint Vars  num_records  records
89
90    ${invalid_records}=  Filter Struct  ${records}
91    ...  [('Health', '^OK$'), ('State', '^Enabled$'), ('${reading_type}', '')]  regex=1  invert=1
92    ${num_invalid_records}=  Get Length  ${invalid_records}
93
94    Run Keyword If  ${num_invalid_records} > ${0}
95    ...  Rprint Vars  num_invalid_records  invalid_records
96    Rvalid Value  num_invalid_records  valid_values=[0]
97
98
99Suite Teardown Execution
100    [Documentation]  Do the post suite teardown.
101
102    Redfish.Logout
103
104
105Suite Setup Execution
106    [Documentation]  Do test case setup tasks.
107
108    Printn
109    Redfish Power On
110    Redfish.Login
111
112
113Test Teardown Execution
114    [Documentation]  Do the post test teardown.
115
116    FFDC On Test Case Fail
117