|  | *** Settings *** | 
|  | Documentation   Power cycle loop. This is to test where network service | 
|  | ...             becomes unavailable during AC-Cycle stress test. | 
|  |  | 
|  | Resource        ../lib/rest_client.robot | 
|  | Resource        ../lib/pdu/pdu.robot | 
|  | Resource        ../lib/utils.robot | 
|  | Resource        ../lib/openbmc_ffdc.robot | 
|  | Resource        ../lib/state_manager.robot | 
|  | Resource        ../lib/boot_utils.robot | 
|  | Resource        ../lib/code_update_utils.robot | 
|  | Library         ../lib/bmc_ssh_utils.py | 
|  |  | 
|  | Test Teardown   Test Teardown Execution | 
|  | Suite Setup     Suite Setup Execution | 
|  |  | 
|  | *** Variables *** | 
|  | ${LOOP_COUNT}    ${50} | 
|  |  | 
|  | # Error strings to check from journald. | 
|  | ${ERROR_REGEX}     SEGV|core-dump|FAILURE|Failed to start | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Run Multiple Power Cycle | 
|  | [Documentation]  Execute multiple power cycles. | 
|  | [Setup]  Validate Parameters | 
|  | [Tags]  Run_Multiple_Power_Cycle | 
|  |  | 
|  | # By default run test for 50 loops, else user input iteration. | 
|  | # Fails immediately if any of the execution rounds fail and | 
|  | # check if BMC is still pinging and FFDC is collected. | 
|  | Repeat Keyword  ${LOOP_COUNT} times  Power Cycle System Via PDU | 
|  |  | 
|  |  | 
|  | Run Multiple BMC Reset Via REST | 
|  | [Documentation]  Execute multiple reboots via REST. | 
|  | [Tags]  Run_Multiple_BMC_Reset_Via_REST | 
|  |  | 
|  | # By default run test for 50 loops, else user input iteration. | 
|  | # Fails immediately if any of the execution rounds fail and | 
|  | # check if BMC is still pinging and FFDC is collected. | 
|  | Repeat Keyword  ${LOOP_COUNT} times  BMC REST Reset Cycle | 
|  |  | 
|  |  | 
|  | Run Multiple BMC Reset Via Reboot | 
|  | [Documentation]  Execute multiple reboots via "reboot" command. | 
|  | [Tags]  Run_Multiple_BMC_Reset_Via_Reboot | 
|  |  | 
|  | # By default run test for 50 loops, else user input iteration. | 
|  | # Fails immediately if any of the execution rounds fail and | 
|  | # check if BMC is still pinging and FFDC is collected. | 
|  | Repeat Keyword  ${LOOP_COUNT} times  BMC Reboot Cycle | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Power Cycle System Via PDU | 
|  | [Documentation]  Power cycle system and wait for BMC to reach Ready state. | 
|  | Log  "Doing power cycle" | 
|  | PDU Power Cycle | 
|  | Check If BMC Is Up  5 min  10 sec | 
|  |  | 
|  | Wait Until Keyword Succeeds  10 min  10 sec  Is BMC Ready | 
|  | Verify BMC RTC And UTC Time Drift | 
|  | Field Mode Should Be Enabled | 
|  |  | 
|  |  | 
|  | BMC REST Reset Cycle | 
|  | [Documentation]  Reset BMC via REST and wait for ready state. | 
|  | Log  "Doing Reboot cycle" | 
|  | ${bmc_version_before}=  Get BMC Version | 
|  | Initiate BMC Reboot | 
|  | Wait Until Keyword Succeeds  10 min  10 sec  Is BMC Ready | 
|  | ${bmc_version_after}=  Get BMC Version | 
|  | Should Be Equal  ${bmc_version_before}  ${bmc_version_after} | 
|  | Check For Regex In Journald  ${ERROR_REGEX}  error_check=${0}  boot=-b | 
|  | Verify BMC RTC And UTC Time Drift | 
|  | Field Mode Should Be Enabled | 
|  |  | 
|  |  | 
|  | BMC Reboot Cycle | 
|  | [Documentation]  Reboot BMC and wait for ready state. | 
|  | Log  "Doing Reboot cycle" | 
|  | ${bmc_version_before}=  Get BMC Version | 
|  | OBMC Reboot (off)  stack_mode=normal | 
|  | ${bmc_version_after}=  Get BMC Version | 
|  | Should Be Equal  ${bmc_version_before}  ${bmc_version_after} | 
|  | Verify BMC RTC And UTC Time Drift | 
|  | Check For Regex In Journald  ${ERROR_REGEX}  error_check=${0} | 
|  | Field Mode Should Be Enabled | 
|  |  | 
|  |  | 
|  | Test Teardown Execution | 
|  | [Documentation]  Do test case tear-down. | 
|  | Ping Host  ${OPENBMC_HOST} | 
|  | FFDC On Test Case Fail | 
|  |  | 
|  | # Example of the u-boot-env o/p: | 
|  | # root@witherspoon:~# grep fieldmode /dev/mtd/u-boot-env | 
|  | # fieldmode=true | 
|  | # fieldmode=true | 
|  | ${field_mode}= | 
|  | ...  BMC Execute Command  grep fieldmode /dev/mtd/u-boot-env | 
|  | Should Contain  "${field_mode[0]}"  fieldmode=true | 
|  | ...  msg=u-boot-env shows "fieldmode" is not set to true. | 
|  |  | 
|  |  | 
|  | Validate Parameters | 
|  | [Documentation]  Validate PDU parameters. | 
|  | Should Not Be Empty   ${PDU_IP} | 
|  | Should Not Be Empty   ${PDU_TYPE} | 
|  | Should Not Be Empty   ${PDU_SLOT_NO} | 
|  | Should Not Be Empty   ${PDU_USERNAME} | 
|  | Should Not Be Empty   ${PDU_PASSWORD} | 
|  |  | 
|  |  | 
|  | Suite Setup Execution | 
|  | [Documentation]  Enable field mode. | 
|  | Enable Field Mode And Verify Unmount | 
|  | Field Mode Should Be Enabled |