1*** Settings ***
2Documentation       Getting the systems thermal records for temperature.
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
17Get Ambient Temperature Records
18    [Documentation]  Get the ambient temperature records.
19    [Tags]  Get_Ambient_Temperature_Records
20    [Template]  Get Thermal Records and Verify
21
22    # record_type   reading_type
23    Temperatures    ReadingCelsius
24
25
26*** Keywords ***
27
28Get Thermal Records and Verify
29    [Documentation]  Get the thermal records for temperatures.
30    [Arguments]  ${record_type}  ${reading_type}
31
32    # Description of Arguments(s):
33    # record_type    The thermal record type (e.g. "Temperatures")
34    # reading_type   The thermal temperature readings (e.g. "ReadingCelsius")
35
36    # A valid record will have "State" key "Enabled" and "Health" key "OK"
37    ${records}=  Redfish.Get Attribute
38    ...  ${REDFISH_CHASSIS_THERMAL_URI}  ${record_type}
39
40    ${num_records}=  Get Length  ${records}
41    Rprint Vars  num_records  records
42
43    ${invalid_records}=  Filter Struct  ${records}
44    ...  [('Health', '^OK$'), ('State', '^Enabled$'), ('${reading_type}', '')]  regex=1  invert=1
45    ${num_invalid_records}=  Get Length  ${invalid_records}
46
47    Run Keyword If  ${num_invalid_records} > ${0}
48    ...  Rprint Vars  num_invalid_records  invalid_records
49    Rvalid Value  num_invalid_records  valid_values=[0]
50
51    ${invalid_records}=  Evaluate
52    ...  [x for x in ${records} if not x['LowerThresholdNonCritical'] <= x['ReadingCelsius'] <= x['UpperThresholdNonCritical']]
53
54    ${num_invalid_records}=  Get Length  ${invalid_records}
55    Run Keyword If  ${num_invalid_records} > ${0}
56    ...  Rprint Vars  num_invalid_records  invalid_records
57    Rvalid Value   num_invalid_records  valid_values=[0]
58
59Suite Teardown Execution
60    [Documentation]  Do the post suite teardown.
61
62    Redfish.Logout
63
64Suite Setup Execution
65    [Documentation]  Do test case setup tasks.
66
67    Printn
68    Redfish.Login
69
70Test Teardown Execution
71    [Documentation]  Do the post test teardown.
72
73    FFDC On Test Case Fail
74