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...                │       └── 20160909102538035251_OS_esel
30...                └── test_history.txt
31
32Resource           openbmc_ffdc_methods.robot
33Resource           openbmc_ffdc_utils.robot
34Resource           dump_utils.robot
35Library            openbmc_ffdc.py
36
37*** Keywords ***
38
39FFDC On Test Case Fail
40    [Documentation]   Generic FFDC entry point. Place holder to hook in
41    ...               other data collection methods
42    ...               1. Collect Logs if test fails or host reaches quiesced
43    ...                  state.
44    ...               2. Added test execution history logging.
45    ...                  By default this will log Test status PASS/FAIL format
46    ...                  EX: 20160822041250932049:Test:Test case 1:PASS
47    ...                      20160822041250969913:Test:Test case 2:FAIL
48    ...               3. Delete error logs and BMC dumps post FFDC collection.
49    [Arguments]  ${clean_up}=${TRUE}
50    # Description of argument(s):
51    # clean_up:    Boolean value indicating whether error logs and dumps should be deleted on test failure after
52    #              FFDC collection.
53
54    ${OVERRIDE_FFDC_ON_TEST_CASE_FAIL}=  Get Environment Variable  OVERRIDE_FFDC_ON_TEST_CASE_FAIL  0
55    ${OVERRIDE_FFDC_ON_TEST_CASE_FAIL}=  Convert To Integer  ${OVERRIDE_FFDC_ON_TEST_CASE_FAIL}
56    Return From Keyword If  ${OVERRIDE_FFDC_ON_TEST_CASE_FAIL}
57
58    Run Keyword If  '${TEST_STATUS}' == 'FAIL'  FFDC
59
60    Log Test Case Status
61
62    # Clean up error logs and BMC dumps.
63    Run Keyword If  '${TEST_STATUS}' == 'FAIL' and ${clean_up}
64    ...  Run Keywords  Delete All Error Logs  AND  Delete All Dumps
65