blob: 30503491ac84a762e02cfa36560ee227f2e0da9e [file] [log] [blame]
*** Settings ***
Documentation This suite tests HOST watchdog timer in Open BMC.
Resource ../lib/rest_client.robot
Resource ../lib/openbmc_ffdc.robot
Resource ../lib/utils.robot
Resource ../lib/resource.robot
Resource ../lib/boot_utils.robot
Resource ../lib/state_manager.robot
Suite Setup Suite Setup Execution
Suite Teardown Suite Teardown Execution
Test Teardown FFDC On Test Case Fail
*** Variables ***
# "skip" boots that aren't needed to get to desired state.
${stack_mode} skip
*** Test Cases ***
Verify Watchdog Setting With Watchdog Disabled
[Documentation] Disable watchdog timer and verify watchdog settings
... i.e Enabled, Interval, TimeRemaining.
[Tags] Verify_Watchdog_Setting_With_Watchdog_Disabled
${initial_interval}= Read Attribute ${HOST_WATCH_DOG_URI} Interval
Set Watchdog Setting Using REST Enabled ${False}
# Check if watchdog has default settings.
${properties}= Read Properties /xyz/openbmc_project/watchdog/host0
Should Be Equal As Strings ${properties["Enabled"]} ${False}
Should Be Equal As Strings ${properties["Interval"]} ${initial_interval}
Should Be Equal As Strings ${properties["TimeRemaining"]} 0
Verify Watchdog Setting With Watchdog Enabled
[Documentation] Enable watchdog timer and check if host OS is rebooted
... and verify hostdog settings are reset to default when
... host OS is up.
[Tags] Verify_Watchdog_Setting_With_Watchdog_Enabled
${initial_interval}= Read Attribute ${HOST_WATCHDOG_URI} Interval
Trigger Host Watchdog Error 2000 30
Wait Until Keyword Succeeds 3 min 10 sec Watchdog Object Should Exist
# Verify if watchdog settings are enabled and timeremaining is reduced.
Wait Until Keyword Succeeds 3 min 10 sec Verify Watchdog Enabled
Wait Until Keyword Succeeds 120 sec 20 sec Is Host Rebooted
Wait For Host To Ping ${OS_HOST} 5min 10
Wait for OS
# Check if watchdog settings are reset when host OS is up.
${properties}= Read Properties /xyz/openbmc_project/watchdog/host0
Should Be Equal As Strings ${properties["Enabled"]} ${False}
Should Be Equal As Strings ${properties["Interval"]} ${initial_interval}
Should Be Equal As Strings ${properties["TimeRemaining"]} 0
Modify And Verify Watchdog Timer Interval
[Documentation] Modify and verify watchdog timer interval.
[Tags] Modify_And_Verify_Watchdog_Timer_Interval
[Teardown] Set Watchdog Setting Using REST Interval ${initial_interval}
${initial_interval}= Read Attribute ${HOST_WATCHDOG_URI} Interval
${random_int}= Evaluate random.randint(10000, 20000) modules=random
Set Watchdog Setting Using REST Interval ${random_int}
${modified_time_interval}= Read Attribute ${HOST_WATCHDOG_URI} Interval
Should Be Equal As Strings ${modified_time_interval} ${random_int}
Modify and verify Watchdog TimeRemaining
[Documentation] Modify and verify watchdog 'TimeRemaining'.
[Tags] Modify_And_Verify_Watchdog_TimeRemaining
${random_int}= Evaluate random.randint(10000, 20000) modules=random
Set Watchdog Setting Using REST TimeRemaining ${random_int}
${modified_timeremain}=
... Read Attribute ${HOST_WATCHDOG_URI} TimeRemaining
Should Not Be Equal As Strings ${random_int} ${modified_timeremain}
Verify Watchdog URL When Host Is On And Off
[Documentation] Verify watchdog URL when host is running
... and when host is off.
[Tags] Verify_Watchdog_URL_When_Host_Is_On_And_Off
${resp}= OpenBMC Get Request ${HOST_WATCHDOG_URI}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
REST Power Off
${resp}= OpenBMC Get Request ${HOST_WATCHDOG_URI}
Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
*** Keywords ***
Suite Setup Execution
[Documentation] Do test initialization setup.
# Check input parameters & check if host OS is up.
Should Not Be Empty
... ${OS_HOST} msg=You must provide the host name/host IP address.
Should Not Be Empty
... ${OS_USERNAME} msg=You must provide OS host user name.
Should Not Be Empty
... ${OS_PASSWORD} msg=You must provide OS host user password.
# Boot to OS.
REST Power On
Suite Teardown Execution
[Documentation] Restore watchdog Default setting.
# Boot to OS.
REST Power On
Set Watchdog Setting Using REST Enabled ${False}
Close All Connections
Set Watchdog Setting Using REST
[Documentation] Set watchdog setting using REST with a given input
... attribute values.
[Arguments] ${setting_name} ${value}
# Description of argument(s):
# setting_name The name of the watchdog setting
# (e.g. "Enabled", "Interval", etc.).
# value Watchdog setting value(e.g. "Enabled":boolean,
# "Interval":Integer, "TimeRemaining":Integer)
${valueDict}= Create Dictionary data=${value}
${resp}= OpenBMC Put Request ${HOST_WATCHDOG_URI}attr/${setting_name}
... data=${valueDict}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
Watchdog Object Should Exist
[Documentation] Check if watchdog object exist.
${resp}= OpenBMC Get Request ${WATCHDOG_URI}host0
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
Verify Watchdog Enabled
[Documentation] Check that watchdog settings are enabled.
${properties}= Read Properties /xyz/openbmc_project/watchdog/host0
Should Be Equal As Strings ${properties["Enabled"]} ${True}
Should Not Be Equal As Strings ${properties["TimeRemaining"]} 0