1*** Settings *** 2 3Documentation Test dump functionality of OpenBMC. 4 5Resource ../../lib/openbmc_ffdc.robot 6Resource ../../lib/rest_client.robot 7Resource ../../lib/dump_utils.robot 8Resource ../../lib/boot_utils.robot 9Resource ../../lib/utils.robot 10Resource ../../lib/state_manager.robot 11Library ../../lib/bmc_ssh_utils.py 12 13Suite Setup Suite Setup Execution 14Test Setup Open Connection And Log In 15Test Teardown Test Teardown Execution 16 17*** Test Cases *** 18 19Verify Core Dump Size 20 [Documentation] Verify BMC core dump size is under 200k. 21 [Tags] Verify_Core_Dump_Size 22 23 Delete All Dumps 24 Trigger Core Dump 25 Wait Until Keyword Succeeds 2 min 10 sec Get Dump Entries 26 27 ${dump_entries}= Get URL List ${DUMP_ENTRY_URI} 28 ${dump_size}= Read Attribute ${dump_entries[0]} Size 29 30 # Max size for dump is 200k = 200x1024 31 Should Be True 0 < ${dump_size} < 204800 msg=Size of dump is incorrect. 32 33 34Verify Dump After Host Watchdog Error Injection 35 [Documentation] Inject host watchdog error and verify whether dump is generated. 36 [Tags] Verify_Dump_After_Host_Watchdog_Error_Injection 37 38 Redfish Power On 39 40 Run Keyword And Ignore Error Delete All Dumps 41 42 # Enable auto reboot 43 Set Auto Reboot ${1} 44 45 Trigger Host Watchdog Error 2000 30 46 47 Wait Until Keyword Succeeds 300 sec 20 sec Is Host Rebooted 48 49 #Get dump details 50 @{dump_entry_list}= Read Properties ${DUMP_ENTRY_URI} 51 52 # Verifying that there is only one dump 53 ${length}= Get length ${dump_entry_list} 54 Should Be Equal As Integers ${length} ${1} 55 56 # Get dump id 57 ${value}= Get From List ${dump_entry_list} 0 58 @{split_value}= Split String ${value} / 59 ${dump_id}= Get From List ${split_value} -1 60 61 # Max size for dump is 200k = 200x1024 62 ${dump_size}= Read Attribute ${DUMP_ENTRY_URI}${dump_id} Size 63 Should Be True 0 < ${dump_size} < 204800 64 65 66Verify Download BMC Dump 67 [Documentation] Verify that a BMC dump can be downloaded to the local machine. 68 [Tags] Verify_Download_BMC_Dump 69 70 ${dump_id}= Create User Initiated Dump 71 ${dump_dict}= Get Dump Dict 72 ${bmc_dump_name}= Fetch From Right ${dump_dict['${dump_id}']} / 73 ${bmc_dump_checksum} ${stderr} ${rc}= BMC Execute Command 74 ... md5sum ${dump_dict['${dump_id}']}|awk '{print$1}' 75 ${bmc_dump_size} ${stderr} ${rc}= BMC Execute Command 76 ... stat -c "%s" ${dump_dict['${dump_id}']} 77 78 ${response}= OpenBMC Get Request ${DUMP_DOWNLOAD_URI}${dump_id} 79 ... quiet=${1} 80 Should Be Equal As Strings ${response.status_code} ${HTTP_OK} 81 Create Binary File ${EXECDIR}${/}dumps ${response.content} 82 Run tar -xvf ${EXECDIR}${/}dumps 83 ${download_dump_name}= Fetch From Left ${bmc_dump_name} . 84 ${download_dump_checksum}= Run md5sum ${EXECDIR}/dumps|awk '{print$1}' 85 ${download_dump_size}= Run stat -c "%s" ${EXECDIR}${/}dumps 86 87 OperatingSystem.Directory Should Exist ${EXECDIR}/${download_dump_name} 88 ... msg=Created dump name and downloaded dump name don't match. 89 Should Be Equal As Strings ${bmc_dump_checksum} ${download_dump_checksum} 90 Should Be Equal As Strings ${bmc_dump_size} ${download_dump_size} 91 92 Run rm -rf ${EXECDIR}${/}${download_dump_name};rm ${EXECDIR}${/}dumps 93 94 95*** Keywords *** 96 97Suite Setup Execution 98 [Documentation] Do initial suite setup tasks. 99 100 ${resp}= OpenBMC Get Request ${DUMP_URI} 101 Run Keyword If '${resp.status_code}' == '${HTTP_NOT_FOUND}' 102 ... Run Keywords Set Suite Variable ${DUMP_URI} /xyz/openbmc_project/dump/ AND 103 ... Set Suite Variable ${DUMP_ENTRY_URI} /xyz/openbmc_project/dump/entry/ 104 105 106Test Teardown Execution 107 [Documentation] Do the post test teardown. 108 109 Wait Until Keyword Succeeds 3 min 15 sec Verify No Dump In Progress 110 FFDC On Test Case Fail 111 Delete All BMC Dump 112 Close All Connections 113