Automation: Enable / Disable Watchdog
Added following testcases
- Disable Watchdog Timer And Verify Attributes
- Enable Watchdog Timer And Verify Attributes
- Modify And Verify Watchdog Timer Interval
- Modify And Verify Watchdog TimeRemaining
- Verify Watchdog URL When Host Is On And Off
Resolves openbmc/openbmc-test-automation#691
Change-Id: Ia074b4a149a96f84b11a0e78e764c38cae9e0812
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
diff --git a/extended/test_watchdog.robot b/extended/test_watchdog.robot
new file mode 100644
index 0000000..31381af
--- /dev/null
+++ b/extended/test_watchdog.robot
@@ -0,0 +1,130 @@
+*** 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.txt
+Resource ../lib/boot_utils.robot
+
+Suite Setup Watchdog Timer Test Setup
+Suite Teardown Restore Watchdog Default Setting
+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"]} 0
+ 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 60
+
+ # Verify if watchdog settings are enabled and timeremaining is reduced.
+ ${properties}= Read Properties /xyz/openbmc_project/watchdog/host0
+ Should Be Equal As Strings ${properties["Enabled"]} 1
+ Should Not Be Equal As Strings ${properties["TimeRemaining"]} 0
+
+ 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"]} 0
+ 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 ***
+
+Watchdog Timer Test Setup
+ [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
+
+Restore Watchdog Default Setting
+ [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}