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