|  | *** Settings *** | 
|  | Documentation    Test BMC Manager functionality. | 
|  | Resource         ../../lib/resource.robot | 
|  | Resource         ../../lib/bmc_redfish_resource.robot | 
|  | Resource         ../../lib/common_utils.robot | 
|  | Resource         ../../lib/openbmc_ffdc.robot | 
|  | Resource         ../../lib/boot_utils.robot | 
|  | Resource         ../../lib/open_power_utils.robot | 
|  | Resource         ../../lib/bmc_network_utils.robot | 
|  | Library          ../../lib/gen_robot_valid.py | 
|  |  | 
|  | Test Setup       Test Setup Execution | 
|  | Test Teardown    Test Teardown Execution | 
|  |  | 
|  |  | 
|  | *** Variables *** | 
|  |  | 
|  | ${SYSTEM_SHUTDOWN_TIME}    ${5} | 
|  |  | 
|  | # Strings to check from journald. | 
|  | ${REBOOT_REGEX}    ^\-- Reboot -- | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Verify Redfish BMC Firmware Version | 
|  | [Documentation]  Get firmware version from BMC manager. | 
|  | [Tags]  Verify_Redfish_BMC_Firmware_Version | 
|  |  | 
|  | Redfish.Login | 
|  | ${resp}=  Redfish.Get  /redfish/v1/Managers/bmc | 
|  | Should Be Equal As Strings  ${resp.status}  ${HTTP_OK} | 
|  | ${bmc_version}=  Get BMC Version | 
|  | Should Be Equal As Strings | 
|  | ...  ${resp.dict["FirmwareVersion"]}  ${bmc_version.strip('"')} | 
|  |  | 
|  |  | 
|  | Verify Redfish BMC Manager Properties | 
|  | [Documentation]  Verify BMC managers resource properties. | 
|  | [Tags]  Verify_Redfish_BMC_Manager_Properties | 
|  |  | 
|  | Redfish.Login | 
|  | ${resp}=  Redfish.Get  /redfish/v1/Managers/bmc | 
|  | Should Be Equal As Strings  ${resp.status}  ${HTTP_OK} | 
|  | # Example: | 
|  | #  "Description": "Baseboard Management Controller" | 
|  | #  "Id": "bmc" | 
|  | #  "Model": "OpenBmc", | 
|  | #  "Name": "OpenBmc Manager", | 
|  | #  "UUID": "xxxxxxxx-xxx-xxx-xxx-xxxxxxxxxxxx" | 
|  | #  "PowerState": "On" | 
|  |  | 
|  | Should Be Equal As Strings | 
|  | ...  ${resp.dict["Description"]}  Baseboard Management Controller | 
|  | Should Be Equal As Strings  ${resp.dict["Id"]}  bmc | 
|  | Should Be Equal As Strings  ${resp.dict["Model"]}  OpenBmc | 
|  | Should Be Equal As Strings  ${resp.dict["Name"]}  OpenBmc Manager | 
|  | Should Not Be Empty  ${resp.dict["UUID"]} | 
|  | Should Be Equal As Strings  ${resp.dict["PowerState"]}  On | 
|  |  | 
|  |  | 
|  | Verify MAC Address Property Is Populated | 
|  | [Documentation]  Verify BMC managers resource properties. | 
|  | [Tags]  Verify_MAC_Address_Property_Is_Populated | 
|  |  | 
|  | ${redfish_mac_addr}=  Redfish.Get Attribute  /redfish/v1/Managers/bmc/EthernetInterfaces/eth0  MACAddress | 
|  | Rprint Vars  redfish_mac_addr  fmt=terse | 
|  | Rvalid Value  redfish_mac_addr | 
|  |  | 
|  | ${ipaddr_mac_addr}=  Get BMC MAC Address List | 
|  | Rprint Vars  ipaddr_mac_addr  fmt=terse | 
|  |  | 
|  | List Should Contain Value  ${ipaddr_mac_addr}  ${redfish_mac_addr} | 
|  |  | 
|  |  | 
|  | Redfish BMC Manager GracefulRestart When Host Off | 
|  | [Documentation]  BMC graceful restart when host is powered off. | 
|  | [Tags]  Redfish_BMC_Manager_GracefulRestart_When_Host_Off | 
|  |  | 
|  | # "Actions": { | 
|  | # "#Manager.Reset": { | 
|  | #  "ResetType@Redfish.AllowableValues": [ | 
|  | #    "GracefulRestart" | 
|  | #  ], | 
|  | #  "target": "/redfish/v1/Managers/bmc/Actions/Manager.Reset" | 
|  | # } | 
|  |  | 
|  | ${test_file_path}=  Set Variable  /tmp/before_bmcreboot | 
|  | BMC Execute Command  touch ${test_file_path} | 
|  |  | 
|  | Redfish OBMC Reboot (off) | 
|  |  | 
|  | BMC Execute Command  if [ -f ${test_file_path} ] ; then false ; fi | 
|  | Verify BMC RTC And UTC Time Drift | 
|  |  | 
|  | # Check for journald persistency post reboot. | 
|  | Check For Regex In Journald  ${REBOOT_REGEX}  error_check=${1} | 
|  |  | 
|  |  | 
|  | Verify Boot Count After BMC Reboot | 
|  | [Documentation]  Verify boot count increments on BMC reboot. | 
|  | [Tags]  Verify_Boot_Count_After_BMC_Reboot | 
|  |  | 
|  | Set BMC Boot Count  ${0} | 
|  | Redfish OBMC Reboot (off) | 
|  | ${boot_count}=  Get BMC Boot Count | 
|  | Should Be Equal  ${boot_count}  ${1}  msg=Boot count is not incremented. | 
|  |  | 
|  |  | 
|  | Redfish BMC Manager GracefulRestart When Host Booted | 
|  | [Documentation]  BMC graceful restart when host is running. | 
|  | [Tags]  Redfish_BMC_Manager_GracefulRestart_When_Host_Booted | 
|  |  | 
|  | Redfish OBMC Reboot (run) | 
|  |  | 
|  | # TODO: Replace OCC state check with redfish property when available. | 
|  | Verify OCC State | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Test Setup Execution | 
|  | [Documentation]  Do test case setup tasks. | 
|  |  | 
|  | redfish.Login | 
|  |  | 
|  |  | 
|  | Test Teardown Execution | 
|  | [Documentation]  Do the post test teardown. | 
|  |  | 
|  | FFDC On Test Case Fail | 
|  | redfish.Logout |