1*** Settings ***
2Documentation      Utility keywords for FFDC
3
4Library            String
5Library            DateTime
6Library            openbmc_ffdc_list.py
7Resource           resource.txt
8Resource           connection_client.robot
9
10*** Variables ***
11
12${PRINT_LINE}      ------------------------------------------------------------------------
13
14${MSG_INTRO}       This report contains the following information:
15${MSG_DETAIL}      ${\n}\t\t[ Detailed Logs Captured Section ]
16${HEADER_MSG}      ${\n}\t\t---------------------------
17...                ${\n}\t\t FIRST FAILURE DATA CAPTURE
18...                ${\n}\t\t---------------------------
19${FOOTER_MSG}      ${\n}${PRINT_LINE} ${\n}
20
21${FFDC_LOG_PATH}   ${EXECDIR}${/}logs${/}
22${TEST_HISTORY}    ${FFDC_LOG_PATH}${/}test_history.txt
23
24*** Keywords ***
25
26Get Test Dir and Name
27    [Documentation]    SUITE_NAME and TEST_NAME are automatic variables
28    ...                and is populated dynamically by the robot framework
29    ...                during execution
30    ${suite_name}=     Get strip string   ${SUITE_NAME}
31    ${suite_name}=     Catenate  SEPARATOR=    ${FFDC_TIME}_   ${suite_name}
32    ${test_name}=      Get strip string   ${TEST_NAME}
33    ${test_name}=   Catenate  SEPARATOR=  ${FFDC_TIME}_   ${test_name}
34    [Return]  ${suite_name}   ${test_name}
35
36
37Create FFDC Directory
38    [Documentation]    Creates directory and report file
39    Create Directory   ${FFDC_DIR_PATH}
40    Create FFDC Report File
41
42
43Create FFDC Report File
44    [Documentation]     Create a generic file name for ffdc
45    Set Suite Variable
46    ...  ${FFDC_FILE_PATH}   ${FFDC_DIR_PATH}${/}${FFDC_TIME}_BMC_general.txt
47    Create File         ${FFDC_FILE_PATH}
48
49
50Write Data to File
51    [Documentation]     Write data to the ffdc report document
52    [Arguments]         ${data}=      ${filepath}=${FFDC_FILE_PATH}
53    Append To File      ${filepath}   ${data}
54
55
56Get Current Time Stamp
57    [Documentation]     Get the current time stamp data
58    ${cur_time}=    Get Current Date   result_format=%Y-%m-%d %H:%M:%S:%f
59    ${cur_time}=    Get strip string   ${cur_time}
60    [Return]   ${cur_time}
61
62
63Header Message
64    [Documentation]     Write header message to the report document manifest.
65    ...                 TEST_NAME, TEST_MESSAGE,SUITE_SOURCE,TEST_DOCUMENTATION
66    ...                 are auto variables and are populated dynamically by the
67    ...                 robot framework during execution
68    ...                 1. Writes opening statement headers msg
69    ...                 2. Add Test setup and config information
70    ...                 3. Types of data collection
71
72    Write Data to File    ${HEADER_MSG}
73    Write Data to File    ${FOOTER_MSG}
74    Write Data to File    Test Suite File\t\t: ${SUITE_NAME} ${\n}
75    Write Data to File    Test Case Name\t\t: ${TEST_NAME}${\n}
76    Write Data to File    Test Source File\t: ${SUITE_SOURCE}${\n}
77    Write Data to File    Failure Time Stamp\t: ${FFDC_TIME}${\n}
78    Write Data to File    Test Error Message\t: ${TEST_MESSAGE}${\n}
79    Write Data to File    Test Documentation\t:${\n}${TEST_DOCUMENTATION}${\n}
80    Write Data to File    ${FOOTER_MSG}
81
82    Test Setup Info
83
84    Write Data to File    ${\n}${MSG_INTRO}${\n}
85
86    # --- FFDC header notes ---
87    @{entries}=     Get ffdc cmd index
88    :FOR  ${index}  IN   @{entries}
89    \   Write Data to File   * ${index.upper()}
90    \   Write Data to File   ${\n}
91
92    Write Data to File    ${MSG_DETAIL}
93
94
95Write Cmd Output to FFDC File
96    [Documentation]      Write cmd output data to the report document
97    [Arguments]          ${name_str}   ${cmd}
98
99    Write Data to File   ${FOOTER_MSG}
100    Write Data to File   ${ENTRY_INDEX.upper()} : ${name_str}\t
101    Write Data to File   Executed : ${cmd}
102    Write Data to File   ${FOOTER_MSG}
103
104
105Test Setup Info
106    [Documentation]      BMC IP, Model and other information
107
108    Write Data to File   ${\n}-----------------------${\n}
109    Write Data to File   Test Setup Information:
110    Write Data to File   ${\n}-----------------------${\n}
111    Write Data to File   OPENBMC HOST \t: ${OPENBMC_HOST}${\n}
112    Write Data to File
113    ...   SYSTEM TYPE \t: ${OPENBMC_MODEL.replace('./data/','').replace('.py','')}${\n}${\n}
114