1*** Settings ***
2Documentation       Get the system 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
35Verify Power Supplies Efficiency Percentage
36    [Documentation]  Verify the efficiency percentage is set to correct value.
37    [Tags]  Verify_Power_Supplies_Efficiency_Percentage
38
39    # Example output:
40    # records:
41    #   [0]:
42    #     [@odata.id]:                /redfish/v1/Chassis/chassis/Power#/PowerSupplies/0
43    #     [EfficiencyPercent]:        90
44    #     [IndicatorLED]:             Off
45    #     [Manufacturer]:
46    #     [MemberId]:                 powersupply0
47    #     [Model]:                    2B1D
48    #     [Name]:                     powersupply0
49    #     [PartNumber]:               01KL779
50    #     [PowerInputWatts]:          106.0
51    #     [SerialNumber]:             75B1C2
52    #     [Status]:
53    #       [Health]:                 OK
54    #       [State]:                  Enabled
55
56    ${records}=  Verify Valid Records  PowerSupplies  ${REDFISH_CHASSIS_POWER_URI}  EfficiencyPercent
57    ${efficiency_percentages}=  Nested Get  EfficiencyPercent  ${records}
58    Valid List  efficiency_percentages  [90]
59
60
61*** Keywords ***
62
63Verify Watts Record
64    [Documentation]  Verify the power watt records.
65    [Arguments]  ${record_type}  ${redfish_uri}  ${reading_type}
66
67    # Description of Arguments(s):
68    # record_type    The sensor record type (e.g. "PowerSupplies")
69    # redfish_uri    The power supply URI (e.g. /redfish/v1/Chassis/chassis/Power)
70    # reading_type   The power watt readings (e.g. "PowerInputWatts")
71
72    Verify Valid Records  ${record_type}  ${redfish_uri}  ${reading_type}
73
74
75Verify Voltage Records
76    [Documentation]  Verify the power voltage records.
77    [Arguments]  ${record_type}  ${redfish_uri}  ${reading_type}
78
79    # Description of Arguments(s):
80    # record_type    The sensor record type (e.g. "Voltages")
81    # redfish_uri    The power supply URI (e.g. /redfish/v1/Chassis/chassis/Power)
82    # reading_type   The power voltage readings (e.g. "ReadingVolts")
83
84    Verify Valid Records  ${record_type}  ${redfish_uri}  ${reading_type}
85
86    ${records}=  Redfish.Get Attribute  ${redfish_uri}  ${record_type}
87
88    ${cmd}  Catenate  [x for x in ${records}
89    ...  if not x['LowerThresholdNonCritical'] <= x['${reading_type}'] <= x['UpperThresholdNonCritical']]
90    ${invalid_records}=  Evaluate  ${cmd}
91
92    Valid Length  invalid_records  max_length=0
93
94
95Suite Teardown Execution
96    [Documentation]  Do the post suite teardown.
97
98    Redfish.Logout
99
100
101Suite Setup Execution
102    [Documentation]  Do test case setup tasks.
103
104    Printn
105    Redfish Power On  stack_mode=skip
106    Redfish.Login
107
108
109Test Teardown Execution
110    [Documentation]  Do the post test teardown.
111
112    FFDC On Test Case Fail
113