1*** Settings ***
2Documentation    Test BMC Manager functionality.
3Resource         ../../lib/resource.robot
4Resource         ../../lib/bmc_redfish_resource.robot
5Resource         ../../lib/common_utils.robot
6Resource         ../../lib/openbmc_ffdc.robot
7Resource         ../../lib/boot_utils.robot
8Resource         ../../lib/open_power_utils.robot
9Resource         ../../lib/bmc_network_utils.robot
10Library          ../../lib/gen_robot_valid.py
11
12Test Setup       Test Setup Execution
13Test Teardown    Test Teardown Execution
14
15
16*** Variables ***
17
18${SYSTEM_SHUTDOWN_TIME}    ${5}
19
20# Strings to check from journald.
21${REBOOT_REGEX}    ^\-- Reboot --
22
23*** Test Cases ***
24
25Verify Redfish BMC Firmware Version
26    [Documentation]  Get firmware version from BMC manager.
27    [Tags]  Verify_Redfish_BMC_Firmware_Version
28
29    Redfish.Login
30    ${resp}=  Redfish.Get  /redfish/v1/Managers/bmc
31    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
32    ${bmc_version}=  Get BMC Version
33    Should Be Equal As Strings
34    ...  ${resp.dict["FirmwareVersion"]}  ${bmc_version.strip('"')}
35
36
37Verify Redfish BMC Manager Properties
38    [Documentation]  Verify BMC managers resource properties.
39    [Tags]  Verify_Redfish_BMC_Manager_Properties
40
41    Redfish.Login
42    ${resp}=  Redfish.Get  /redfish/v1/Managers/bmc
43    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
44    # Example:
45    #  "Description": "Baseboard Management Controller"
46    #  "Id": "bmc"
47    #  "Model": "OpenBmc",
48    #  "Name": "OpenBmc Manager",
49    #  "UUID": "xxxxxxxx-xxx-xxx-xxx-xxxxxxxxxxxx"
50    #  "PowerState": "On"
51
52    Should Be Equal As Strings
53    ...  ${resp.dict["Description"]}  Baseboard Management Controller
54    Should Be Equal As Strings  ${resp.dict["Id"]}  bmc
55    Should Be Equal As Strings  ${resp.dict["Model"]}  OpenBmc
56    Should Be Equal As Strings  ${resp.dict["Name"]}  OpenBmc Manager
57    Should Not Be Empty  ${resp.dict["UUID"]}
58    Should Be Equal As Strings  ${resp.dict["PowerState"]}  On
59
60
61Verify MAC Address Property Is Populated
62    [Documentation]  Verify BMC managers resource properties.
63    [Tags]  Verify_MAC_Address_Property_Is_Populated
64
65    ${redfish_mac_addr}=  Redfish.Get Attribute  /redfish/v1/Managers/bmc/EthernetInterfaces/eth0  MACAddress
66    Rprint Vars  redfish_mac_addr  fmt=terse
67    Rvalid Value  redfish_mac_addr
68
69    ${ipaddr_mac_addr}=  Get BMC MAC Address List
70    Rprint Vars  ipaddr_mac_addr  fmt=terse
71
72    List Should Contain Value  ${ipaddr_mac_addr}  ${redfish_mac_addr}
73
74
75Redfish BMC Manager GracefulRestart When Host Off
76    [Documentation]  BMC graceful restart when host is powered off.
77    [Tags]  Redfish_BMC_Manager_GracefulRestart_When_Host_Off
78
79    # "Actions": {
80    # "#Manager.Reset": {
81    #  "ResetType@Redfish.AllowableValues": [
82    #    "GracefulRestart"
83    #  ],
84    #  "target": "/redfish/v1/Managers/bmc/Actions/Manager.Reset"
85    # }
86
87    ${test_file_path}=  Set Variable  /tmp/before_bmcreboot
88    BMC Execute Command  touch ${test_file_path}
89
90    Redfish OBMC Reboot (off)
91
92    BMC Execute Command  if [ -f ${test_file_path} ] ; then false ; fi
93    Verify BMC RTC And UTC Time Drift
94
95    # Check for journald persistency post reboot.
96    Check For Regex In Journald  ${REBOOT_REGEX}  error_check=${1}
97
98
99Verify Boot Count After BMC Reboot
100    [Documentation]  Verify boot count increments on BMC reboot.
101    [Tags]  Verify_Boot_Count_After_BMC_Reboot
102
103    Set BMC Boot Count  ${0}
104    Redfish OBMC Reboot (off)
105    ${boot_count}=  Get BMC Boot Count
106    Should Be Equal  ${boot_count}  ${1}  msg=Boot count is not incremented.
107
108
109Redfish BMC Manager GracefulRestart When Host Booted
110    [Documentation]  BMC graceful restart when host is running.
111    [Tags]  Redfish_BMC_Manager_GracefulRestart_When_Host_Booted
112
113    Redfish OBMC Reboot (run)
114
115    # TODO: Replace OCC state check with redfish property when available.
116    Verify OCC State
117
118
119*** Keywords ***
120
121Test Setup Execution
122    [Documentation]  Do test case setup tasks.
123
124    redfish.Login
125
126
127Test Teardown Execution
128    [Documentation]  Do the post test teardown.
129
130    FFDC On Test Case Fail
131    redfish.Logout
132