1*** Settings ***
2Documentation      This module is for data collection on test case failure
3...                for openbmc systems. Collects data with default name
4...                ffdc_report.txt under directory logs/testSuite/testName/
5...                on failure.
6...                FFDC logging sample layout:
7...                logs
8...                ├── 20160909102538035251_TestWarmreset
9...                │   └── 20160909102538035251_TestWarmResetviaREST
10...                │       ├── 20160909102538035251_BMC_journalctl.txt
11...                │       ├── 20160909102538035251_BMC_proc_list.txt
12...                │       ├── 20160909102538035251_BMC_dmesg.txt
13...                │       ├── 20160909102538035251_BMC_inventory.txt
14...                │       ├── 20160909102538035251_BMC_led.txt
15...                │       ├── 20160909102538035251_BMC_record_log.txt
16...                │       ├── 20160909102538035251_BMC_sensor_list.txt
17...                │       ├── 20160909102538035251_BMC_general.txt
18...                │       ├── 20160909102538035251_OS_dmesg.txt
19...                │       ├── 20160909102538035251_OS_msglog.txt
20...                │       ├── 20160909102538035251_OS_cpufrequency.txt
21...                │       ├── 20160909102538035251_OS_boot.txt
22...                │       ├── 20160909102538035251_OS_isusb.txt
23...                │       ├── 20160909102538035251_OS_kern.txt
24...                │       ├── 20160909102538035251_OS_authlog.txt
25...                │       ├── 20160909102538035251_OS_syslog.txt
26...                │       ├── 20160909102538035251_OS_info.txt
27...                │       ├── 20160909102538035251_OS_rsct.txt
28...                │       └── 20160909102538035251_OS_secure.txt
29...                └── test_history.txt
30
31Resource           openbmc_ffdc_methods.robot
32Resource           openbmc_ffdc_utils.robot
33
34*** Keywords ***
35
36FFDC On Test Case Fail
37    [Documentation]   Generic FFDC entry point. Place holder to hook in
38    ...               other data collection methods
39    ...               1. Collect Logs if test fails
40    ...               2. Added Test execution history logging
41    ...                  By default this will log Test status PASS/FAIL format
42    ...                  EX: 20160822041250932049:Test:Test case 1:PASS
43    ...                      20160822041250969913:Test:Test case 2:FAIL
44
45    Run Keyword If  '${TEST_STATUS}' == 'FAIL'
46    ...    FFDC
47
48    Log Test Case Status
49
50
51FFDC
52    [Documentation]   Main entry point to gather logs on Test case failure
53    ...               1. Set global FFDC time reference for a failure
54    ...               2. Create FFDC work space directory
55    ...               3. Write test info details
56    ...               4. Calls BMC methods to write/collect FFDC data
57
58    ${cur_time}=      Get Current Time Stamp
59    Set Global Variable    ${FFDC_TIME}     ${cur_time}
60    Log To Console    ${\n}FFDC Collection Started \t: ${cur_time}
61
62    # Log directory setup
63    ${suitename}   ${testname}=    Get Test Dir and Name
64
65    Set Global Variable
66    ...   ${FFDC_DIR_PATH}  ${FFDC_LOG_PATH}${suitename}${/}${testname}
67
68    ${prefix}=   Catenate  SEPARATOR=   ${FFDC_DIR_PATH}${/}   ${FFDC_TIME}_
69    Set Global Variable    ${LOG_PREFIX}    ${prefix}
70
71    Create FFDC Directory
72    Header Message
73
74    # -- FFDC processing entry point --
75    Call FFDC Methods
76
77    ${cur_time}=       Get Current Time Stamp
78    Log To Console     FFDC Collection Completed \t: ${cur_time}
79    Log                ${\n}${FFDC_DIR_PATH}
80