1*** Settings ***
2
3
4Documentation     Verify Redfish tool general functionality.
5
6Library           OperatingSystem
7Library           String
8Library           Collections
9
10Resource          ../../lib/resource.robot
11Resource          ../../lib/bmc_redfish_resource.robot
12Resource          ../../lib/openbmc_ffdc.robot
13
14
15Suite Setup       Suite Setup Execution
16
17
18*** Variables ***
19
20
21${root_cmd_args} =  SEPARATOR=
22...  redfishtool raw -r ${OPENBMC_HOST} -u ${OPENBMC_USERNAME} -p ${OPENBMC_PASSWORD} -S Always
23${min_number_sensors}  ${15}
24
25
26*** Test Cases ***
27
28Verify Redfishtool Sensor Commands
29    [Documentation]  Verify redfishtool's sensor commands.
30    [Tags]  Verify_Redfishtool_Sensor_Commands
31
32    ${sensor_status}=  Redfishtool Get  /redfish/v1/Chassis/chassis/Sensors
33    ${json_object}=  Evaluate  json.loads('''${sensor_status}''')  json
34    Should Be True  ${json_object["Members@odata.count"]} > ${min_number_sensors}
35    ...  msg=There should be at least ${min_number_sensors} sensors.
36
37
38Verify Redfishtool Health Check Commands
39    [Documentation]  Verify redfishtool's health check command.
40    [Tags]  Verify_Redfishtool_Health_Check_Commands
41
42    ${chassis_data}=  Redfishtool Get  /redfish/v1/Chassis/chassis/
43    ${json_object}=  Evaluate  json.loads('''${chassis_data}''')  json
44    ${status}=  Set Variable  ${json_object["Status"]}
45    Should Be Equal  OK  ${status["Health"]}
46    ...  msg=Health status should be OK.
47
48
49*** Keywords ***
50
51
52Is HTTP error Expected
53    [Documentation]  Check if the HTTP error is expected.
54    [Arguments]  ${cmd_output}  ${error_expected}
55
56    # Description of argument(s):
57    # cmd_output      Output of an HTTP operation.
58    # error_expected  Expected error.
59
60    @{words} =  Split String  ${error_expected}  ,
61    @{errorString}=  Split String  ${cmd_output}  ${SPACE}
62    Should Contain Any  ${errorString}  @{words}
63
64
65Redfishtool Get
66    [Documentation]  Execute redfishtool for GET operation.
67    [Arguments]  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=""
68
69    # Description of argument(s):
70    # uri             URI for GET operation (e.g. /redfish/v1/AccountService/Accounts/).
71    # cmd_args        Commandline arguments.
72    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
73    #                 authentication error, etc. ).
74
75    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd_args} GET ${uri}
76    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
77
78    [Return]  ${cmd_output}
79
80
81Suite Setup Execution
82    [Documentation]  Do suite setup execution.
83
84    ${tool_exist}=  Run  which redfishtool
85    Should Not Be Empty  ${tool_exist}
86