blob: ff4f7bd10057f21fa07efef7bc4b93dc6fc46848 [file] [log] [blame]
*** Settings ***
Documentation This suite tests Redfish Host power operations.
Resource ../../lib/boot_utils.robot
Resource ../../lib/common_utils.robot
Resource ../../lib/open_power_utils.robot
Test Setup Test Setup Execution
Test Teardown Test Teardown Execution
*** Variables ***
# Extended code to check OCC state, power metric and others.
${additional_power_check} ${1}
*** Test Cases ***
Verify Redfish Host GracefulShutdown
[Documentation] Verify Redfish host graceful shutdown operation.
[Tags] Verify_Redfish_Host_GracefulShutdown
Redfish Power Off
Verify Redfish BMC PowerOn With OCC State
[Documentation] Verify Redfish host power on operation.
[Tags] Verify_Redfish_BMC_PowerOn_With_OCC_State
Redfish Power On
# TODO: Replace OCC state check with redfish property when available.
Verify OCC State
Verify Redfish BMC PowerOn
[Documentation] Verify Redfish host power on operation.
[Tags] Verify_Redfish_Host_PowerOn
Redfish Power On
Run Keyword If ${additional_power_check} == ${1}
... Wait Until Keyword Succeeds 3 mins 30 secs Match OCC And CPU State Count
Run Keyword If ${additional_power_check} == ${1} Power Check
Verify Redfish BMC GracefulRestart
[Documentation] Verify Redfish host graceful restart operation.
[Tags] Verify_Redfish_Host_GracefulRestart
RF SYS GracefulRestart
Verify Redfish BMC PowerOff
[Documentation] Verify Redfish host power off operation.
[Tags] Verify_Redfish_Host_PowerOff
Redfish Hard Power Off
*** Keywords ***
Test Setup Execution
[Documentation] Do test case setup tasks.
Printn
Start SOL Console Logging
Redfish.Login
Test Teardown Execution
[Documentation] Collect FFDC and SOL log.
FFDC On Test Case Fail
${sol_log}= Stop SOL Console Logging
Log ${sol_log}
Run Keyword If ${REDFISH_SUPPORTED}
... Redfish Set Auto Reboot RetryAttempts
... ELSE
... Set Auto Reboot ${1}
Redfish.Logout
Power Check
[Documentation] Verify PowerConsumedWatts property.
${power_uri_list}= redfish_utils.Get Members URI /redfish/v1/Chassis/ PowerControl
Log List ${power_uri_list}
# Power entries could be seen across different redfish path, remove the URI
# where the attribute is non-existent.
# Example:
# ['/redfish/v1/Chassis/chassis/Power',
# '/redfish/v1/Chassis/motherboard/Power']
FOR ${idx} IN @{power_uri_list}
${power_control}= redfish_utils.Get Attribute ${idx} PowerControl
Log Dictionary ${power_control[0]}
# Ensure the path does have the attribute else set to EMPTY as default to skip.
${value}= Get Variable Value ${power_control[0]['PowerConsumedWatts']} ${EMPTY}
Run Keyword If "${value}" == "${EMPTY}"
... Remove Values From List ${power_uri_list} ${idx}
# Check the next available element in the list.
Continue For Loop If "${value}" == "${EMPTY}"
Valid Dict power_control[${0}] ['PowerConsumedWatts']
END
# Double check, the validation has at least one valid path.
Should Not Be Empty ${power_uri_list}
... msg=Should contain at least one element in the list.