1*** Settings *** 2Documentation Utility keywords for FFDC 3 4Library String 5Library DateTime 6Library openbmc_ffdc_list.py 7Resource resource.robot 8Resource connection_client.robot 9Resource utils.robot 10 11*** Variables *** 12 13${PRINT_LINE} ------------------------------------------------------------------------ 14 15${MSG_INTRO} This report contains the following information: 16${MSG_DETAIL} ${\n}\t\t[ Detailed Logs Captured Section ] 17${HEADER_MSG} ${\n}\t\t--------------------------- 18... ${\n}\t\t FIRST FAILURE DATA CAPTURE 19... ${\n}\t\t--------------------------- 20${FOOTER_MSG} ${\n}${PRINT_LINE} ${\n} 21 22${FFDC_LOG_PATH} ${EXECDIR}${/}logs${/} 23${TEST_HISTORY} ${FFDC_LOG_PATH}${/}test_history.txt 24 25*** Keywords *** 26 27Get Test Dir and Name 28 [Documentation] SUITE_NAME and TEST_NAME are automatic variables 29 ... and is populated dynamically by the robot framework 30 ... during execution 31 ${suite_name}= Get strip string ${SUITE_NAME} 32 ${suite_name}= Catenate SEPARATOR= ${FFDC_TIME}_ ${suite_name} 33 ${test_name}= Get strip string ${TEST_NAME} 34 ${test_name}= Catenate SEPARATOR= ${FFDC_TIME}_ ${test_name} 35 [Return] ${suite_name} ${test_name} 36 37 38Create FFDC Directory 39 [Documentation] Creates directory and report file 40 Create Directory ${FFDC_DIR_PATH} 41 Create FFDC Report File 42 43 44Create FFDC Report File 45 [Documentation] Create a generic file name for ffdc 46 Set Suite Variable 47 ... ${FFDC_FILE_PATH} ${FFDC_DIR_PATH}${/}${FFDC_TIME}_BMC_general.txt 48 Create File ${FFDC_FILE_PATH} 49 50 51Write Data To File 52 [Documentation] Write data to the ffdc report document 53 [Arguments] ${data}= ${filepath}=${FFDC_FILE_PATH} 54 Append To File ${filepath} ${data} 55 56 57Get Current Time Stamp 58 [Documentation] Get the current time stamp data 59 ${cur_time}= Get Current Date result_format=%Y-%m-%d %H:%M:%S:%f 60 ${cur_time}= Get strip string ${cur_time} 61 [Return] ${cur_time} 62 63 64Header Message 65 [Documentation] Write header message to the report document manifest 66 ... and return a list of generated files. 67 ... TEST_NAME, TEST_MESSAGE,SUITE_SOURCE, TEST_DOCUMENTATION 68 ... are auto variables and are populated dynamically by the 69 ... robot framework during execution. 70 ... 1. Write opening statement headers message. 71 ... 2. Add test setup and config information. 72 ... 3. Print types of data collection. 73 74 75 ${ffdc_file_list}= Create List ${FFDC_FILE_PATH} 76 Return From Keyword If '${TEST_MODE}' ${ffdc_file_list} 77 78 ${TEST_NAME}= Get Variable Value ${TEST_NAME} 79 ${TEST_MESSAGE}= Get Variable Value ${TEST_MESSAGE} 80 ${TEST_DOCUMENTATION}= Get Variable Value ${TEST_DOCUMENTATION} 81 Write Data To File ${HEADER_MSG} 82 Write Data To File ${FOOTER_MSG} 83 Write Data To File Test Suite File\t\t: ${SUITE_NAME} ${\n} 84 Write Data To File Test Case Name\t\t: ${TEST_NAME}${\n} 85 Write Data To File Test Source File\t: ${SUITE_SOURCE}${\n} 86 Write Data To File Failure Time Stamp\t: ${FFDC_TIME}${\n} 87 Write Data To File Test Error Message\t: ${TEST_MESSAGE}${\n} 88 Write Data To File Test Documentation\t:${\n}${TEST_DOCUMENTATION}${\n} 89 Write Data To File ${FOOTER_MSG} 90 91 Test Setup Info 92 93 Write Data To File ${\n}${MSG_INTRO}${\n} 94 95 # --- FFDC header notes --- 96 @{entries}= Get ffdc cmd index 97 FOR ${index} IN @{entries} 98 Write Data To File * ${index.upper()} 99 Write Data To File ${\n} 100 END 101 102 Write Data To File ${MSG_DETAIL} 103 [Return] ${ffdc_file_list} 104 105 106Write Cmd Output to FFDC File 107 [Documentation] Write cmd output data to the report document 108 [Arguments] ${name_str} ${cmd} 109 110 Write Data To File ${FOOTER_MSG} 111 Write Data To File ${ENTRY_INDEX.upper()} : ${name_str}\t 112 Write Data To File Executed : ${cmd} 113 Write Data To File ${FOOTER_MSG} 114 115 116Test Setup Info 117 [Documentation] BMC IP, Model and other information 118 119 Write Data To File ${\n}-----------------------${\n} 120 Write Data To File Test Setup Information: 121 Write Data To File ${\n}-----------------------${\n} 122 Write Data To File OPENBMC HOST \t: ${OPENBMC_HOST}${\n} 123 ${model_name}= Get BMC System Model 124 Write Data To File SYSTEM TYPE \t: ${model_name} 125 126 127Error Logs Should Not Exist 128 [Documentation] Verify that error logs do not exist. 129 130 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}list quiet=${1} 131 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND} 132 ... msg=Unexpected BMC error log(s) present. 133 134 135Error Logs Should Exist 136 [Documentation] Verify that error logs exist. 137 138 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}list quiet=${1} 139 Run Keyword If ${resp.status_code} != ${HTTP_OK} Fail 140 ... msg=Expected BMC error log(s) are not present. 141