*** Settings ***
Documentation This suite tests Timed Power On(TPO) feature via busctl command
... and verify the power status of the system.
...
... System can be scheduled to Power ON at a specified time by using this feature.
Resource ../lib/boot_utils.robot
Resource ../lib/openbmc_ffdc.robot
Resource ../lib/bmc_redfish_resource.robot
Suite Setup Redfish.Login
Suite Teardown Redfish.Logout
Test Setup Test Setup Execution
Test Teardown Test Teardown Execution
*** Variables ****
${CMD_ENABLE_TPO} busctl set-property xyz.openbmc_project.State.ScheduledHostTransition
... /xyz/openbmc_project/scheduled/host0 xyz.openbmc_project.State.ScheduledHostTransition
... ScheduledTransition s "xyz.openbmc_project.State.Host.Transition.On"
${CMD_SET_TPO_TIME} busctl set-property xyz.openbmc_project.State.ScheduledHostTransition
... /xyz/openbmc_project/scheduled/host0 xyz.openbmc_project.State.ScheduledHostTransition ScheduledTime t
${CMD_GET_TPO_TIME} busctl get-property xyz.openbmc_project.State.ScheduledHostTransition
... /xyz/openbmc_project/scheduled/host0 xyz.openbmc_project.State.ScheduledHostTransition ScheduledTime
# Time in seconds.
${TIMER_POWER_ON} 100
# All current versions of the following distributions:
# - Red Hat Enterprise Linux
# - SUSE Linux Enterprise Server
# Tested on RHEL 8.4.
# Shut down the system and schedule it to restart in 1 hour.
# User can input -v HOST_TIMER_POWER_ON:h24 ( e.g. 24 hours )
${HOST_TIMER_POWER_ON} h1
${HOST_TIMED_POWER_ON_REQUEST} set_poweron_time -d ${HOST_TIMER_POWER_ON} -s
*** Test Cases ***
Test Timed Powered On Via BMC
[Documentation] Set time to power on host attribute ScheduledTime and expect
... the system to boot on scheduled time.
[Tags] Test_Timed_Powered_On_Via_BMC
# Make sure the host is powered off.
Redfish Power Off stack_mode=skip
# Set Host transition to ON to enable TPO.
BMC Execute Command ${CMD_ENABLE_TPO}
${tpo_set_value}= Set Timer For Power ON
${new_tpo_value}= Get Time Power ON Value
Should Be Equal ${new_tpo_value} ${tpo_set_value}
... msg=TPO time set mismatched.
# Check if the system BootProgress state changed. If changed, it implies the
# system is powering on. Though we have set system to power on in 100 seconds
# since, the system boot sometime to change.
Wait Until Keyword Succeeds 10 min 20 sec Is Boot Progress Changed
Log To Console BMC Scheduled Time Power on success.
Test Timed Powered On Via Host OS
[Documentation] Set time to power on host via service aids tool set_poweron_time
... and expect the system to boot on scheduled time.
[Tags] Test_Timed_Powered_On_Via_Host_OS
# Make sure the host is powered on and booted to host OS partition.
Redfish Power On
${stdout} ${stderr} ${rc}= OS Execute Command which set_poweron_time ignore_err=${0}
# Skip the test if the tool does not exist or error getting the tool.
Skip If ${rc} != ${0} INFO: ${stdout} Skip the test since the tool does not. Install and re-run.
# Set Host transition to ON to enable TPO.
${stdout} ${stderr} ${rc}= OS Execute Command ${HOST_TIMED_POWER_ON_REQUEST} ignore_err=${0}
# Wait for host to Power off.
Wait Until Keyword Succeeds 45 min 30 sec Is BMC Standby
Log To Console Power Off completed.
# Note: The verification could more precise by checking date and set time.
# Check if the system BootProgress state changed. If changed, it implies the
# system is powering on after user timer set and delta time to update BootProgress
# state by the state manager.
# ${HOST_TIMER_POWER_ON} is in