|  | *** Settings *** | 
|  |  | 
|  | Documentation       Test auto reboot functionality of host. | 
|  |  | 
|  | Resource            ../lib/openbmc_ffdc.robot | 
|  | Resource            ../lib/rest_client.robot | 
|  | Resource            ../lib/state_manager.robot | 
|  | Resource            ../lib/boot_utils.robot | 
|  |  | 
|  | Test Teardown       Test Teardown Execution | 
|  | Suite Teardown      Suite Teardown Execution | 
|  |  | 
|  | *** Variables *** | 
|  |  | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Verify Host Quiesce State Without Auto Reboot During Boot | 
|  | [Documentation]  Validate "Quiesce" state during boot. | 
|  | [Tags]  Verify_Host_Quiesce_State_Without_Auto_Reboot_During_Boot | 
|  | [Template]  Verify Host Quiesce State | 
|  |  | 
|  | # Auto Reboot   Initial Host State     Expected Host Action | 
|  | ${0}               Booting                No Reboot | 
|  |  | 
|  |  | 
|  | Verify Host Quiesce State With Auto Reboot During Boot | 
|  | [Documentation]  Validate "Quiesce" state during boot. | 
|  | [Tags]  Verify_Host_Quiesce_State_With_Auto_Reboot_During_Boot | 
|  | [Template]  Verify Host Quiesce State | 
|  |  | 
|  | # Auto Reboot   Initial Host State     Expected Host Action | 
|  | ${1}               Booting                Reboot | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Verify Host Quiesce State | 
|  | [Documentation]  Inject watchdog error on host to reach "Quiesce" state. | 
|  | ...  Later recover host from this state. | 
|  | [Arguments]  ${auto_reboot}  ${initial_host_state}  ${action} | 
|  | # Description of argument(s): | 
|  | # auto_reboot          Auto reboot setting | 
|  | #                      i.e 1 for enabling and 0 for disabling. | 
|  | # initial_host_state   State of host before injecting error. | 
|  | # action               Action of host due to error ("No Reboot" or | 
|  | #                      "Reboot"). | 
|  |  | 
|  | Set Auto Reboot  ${auto_reboot} | 
|  |  | 
|  | Run Keyword If  '${initial_host_state}' == 'Booting' | 
|  | # Booting refers to host OS starting in progress. | 
|  | ...  Run Keywords  Get Boot Progress To OS Starting State | 
|  |  | 
|  | Trigger Host Watchdog Error | 
|  | ${resp}=  Run Keyword And Return Status  Is Host Rebooted | 
|  |  | 
|  | Run Keyword If  '${action}' == 'No Reboot' | 
|  | ...  Run Keywords  Should Be Equal  ${resp}  ${False}  AND | 
|  | ...  Wait Until Keyword Succeeds  3 min  5 sec  Is Host Quiesced  AND | 
|  | ...  Recover Quiesced Host | 
|  | ...  ELSE IF  '${action}' == 'Reboot' | 
|  | ...  Wait Until Keyword Succeeds  3 min  5 sec  Is Host Rebooted | 
|  |  | 
|  |  | 
|  | Test Teardown Execution | 
|  | [Documentation]  Do the post test teardown. | 
|  | ...  1. Capture FFDC on test failure. | 
|  | ...  2. Set default value for auto reboot. | 
|  | ...  3. Close all open SSH connections. | 
|  |  | 
|  | FFDC On Test Case Fail | 
|  | Set Auto Reboot  ${1} | 
|  | Close All Connections | 
|  |  | 
|  | Suite Teardown Execution | 
|  | [Documentation]  Do the suite test teardown. | 
|  |  | 
|  | ${status}=  Is Host Quiesced | 
|  | Run Keyword If  ${status} == ${True}  Smart Power Off |