| *** Settings *** |
| Documentation Test SBE side switching with watchdog errors. |
| |
| Library ../lib/state.py |
| Library ../lib/utils.py |
| Variables ../data/variables.py |
| Resource ../lib/boot_utils.robot |
| Resource ../lib/state_manager.robot |
| |
| Test Setup Test Setup Execution |
| Test Teardown Test Teardown Execution |
| |
| *** Variables *** |
| |
| ${sbe_side_bit_mask} ${0x00004000} |
| |
| *** Test Cases *** |
| |
| Test SBE Side Switch |
| [Documentation] Trigger watchdog errors on the host until it side |
| ... switches. |
| [Tags] Test_SBE_Side_Switch |
| |
| REST Power On |
| |
| ${attempts_left}= Read Attribute /xyz/openbmc_project/state/host0 |
| ... AttemptsLeft |
| Should Be Equal As Strings ${attempts_left} 3 |
| ... msg=Expects boot attempts left 3, but got ${attempts_left}. |
| |
| # Get which side the SBE is booted with. By default 0. |
| ${sbe_val} = Get SBE |
| ${sbe_cur_side} = Evaluate ${sbe_side_bit_mask} & ${sbe_val} |
| |
| Trigger Watchdog Error To Switch SBE Boot Side |
| |
| # Next Power on check if host booting is in progress. |
| Wait Until Keyword Succeeds 2 min 30 sec Watchdog Object Should Exist |
| |
| # Verify that the side has switched. |
| ${sbe_val} = Get SBE |
| ${sbe_orig_side} = Evaluate ${sbe_side_bit_mask} & ${sbe_val} |
| |
| Run Keyword If ${sbe_orig_side} == ${0} |
| ... Should Be True ${sbe_cur_side} == ${sbe_side_bit_mask} |
| ... msg=SBE seeprom side is 1. |
| ... ELSE |
| ... Should Be True ${sbe_cur_side} == ${0} |
| ... msg=SBE seeprom side is 0. |
| |
| # Verify that host booted on the current SBE side. |
| Wait Until Keyword Succeeds 10 min 10 sec Is Host Running |
| |
| |
| *** Keywords *** |
| |
| Test Setup Execution |
| [Documentation] Do the test setup execution. |
| |
| Delete All Error Logs |
| Set Auto Reboot ${1} |
| Smart Power Off |
| |
| |
| Test Teardown Execution |
| [Documentation] Do the test teardown execution. |
| FFDC On Test Case Fail |
| Smart Power Off |
| |
| |
| Watchdog Object Should Exist |
| [Documentation] Watchdog object should exist. |
| |
| ${resp}= OpenBMC Get Request ${WATCHDOG_URI} quiet=${1} |
| Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} |
| ... msg=Failed to get ${WATCHDOG_URI}, response = ${resp.status_code}. |
| |
| |
| Trigger Watchdog Error To Switch SBE Boot Side |
| [Documentation] Trigger watchdog error to force SBE boot side switch. |
| |
| # 20 second wait is introduced to ensure host boot progress at least |
| # crossed the initial istep booting sequence. |
| |
| Trigger Host Watchdog Error |
| ${attempts_left}= Read Attribute /xyz/openbmc_project/state/host0 |
| ... AttemptsLeft |
| Should Be Equal As Strings ${attempts_left} 2 |
| ... msg=Expects boot attempts left 2, but got ${attempts_left}. |
| |
| Wait Until Keyword Succeeds 2 min 30 sec Watchdog Object Should Exist |
| Sleep 20 s |
| Trigger Host Watchdog Error |
| ${attempts_left}= Read Attribute /xyz/openbmc_project/state/host0 |
| ... AttemptsLeft |
| Should Be Equal As Strings ${attempts_left} 1 |
| ... msg=Expects boot attempts left 1, but got ${attempts_left}. |
| |
| Wait Until Keyword Succeeds 2 min 30 sec Watchdog Object Should Exist |
| Sleep 20 s |
| Trigger Host Watchdog Error |
| ${attempts_left}= Read Attribute /xyz/openbmc_project/state/host0 |
| ... AttemptsLeft |
| Should Be Equal As Strings ${attempts_left} 0 |
| ... msg=Expects boot attempts left 0, but got ${attempts_left}. |