blob: 39d2796a937e0eae2b2cdbea44392b794a97d755 [file] [log] [blame]
George Keishing69e6f712016-09-12 06:30:09 -05001*** Settings ***
2Documentation Methods to execute commands on BMC and collect
3... data to a list of FFDC files
4
5Resource openbmc_ffdc_utils.robot
6
7*** Keywords ***
8
9################################################################
10# Method : Call FFDC Methods #
11# Execute the user define keywords from the FFDC List #
12# Unlike any other keywords this will call into the #
13# list of keywords defined in the FFDC list at one go #
14################################################################
15
16Call FFDC Methods
17 [Documentation] Calls into FFDC Keyword index list
18
19 @{entries}= Get ffdc method index
20 :FOR ${index} IN @{entries}
21 \ Method Call Keyword List ${index}
22
23
24Method Call Keyword List
25 [Documentation] Iterate the list through keyword index
26 [Arguments] ${index}
27
28 @{method_list}= Get ffdc method call ${index}
29 :FOR ${method} IN @{method_list}
30 \ Execute Keyword Method ${method[1]}
31
32
33Execute Keyword Method
34 [Documentation] Calls into BMC method keywords. Don't let one
35 ... failure skips the remaining. Get whatever data
36 ... it could gather at worse case scenario.
37 [Arguments] ${keyword_name}
38
39 Run Keyword And Continue On Failure ${keyword_name}
40
41
42################################################################
43# Method : BMC FFDC Manifest #
44# Execute command on BMC and write to ffdc_report.txt #
45################################################################
46
47BMC FFDC Manifest
48 [Documentation] Get the commands index for the FFDC_BMC_CMD,
49 ... login to BMC and execute commands.
50 Open Connection And Log In
51
52 @{entries}= Get ffdc cmd index
53 :FOR ${index} IN @{entries}
54 \ Iterate BMC Command List Pairs ${index}
55
56
57Iterate BMC Command List Pairs
58 [Documentation] Feed in key pair list from dictionary to execute
59 [Arguments] ${key_index}
60
61 @{cmd_list}= Get ffdc bmc cmd ${key_index}
62 Set Suite Variable ${ENTRY_INDEX} ${key_index}
63 :FOR ${cmd} IN @{cmd_list}
64 \ Execute Command and Write FFDC ${cmd[0]} ${cmd[1]}
65
66
67Execute Command and Write FFDC
68 [Documentation] Execute command on BMC and write to ffdc
69 ... By default to ffdc_report.txt file else to
70 ... specified file path.
71 [Arguments] ${key_index}
72 ... ${cmd}
73 ... ${logpath}=${FFDC_FILE_PATH}
74
75 Run Keyword If '${logpath}' == '${FFDC_FILE_PATH}'
76 ... Write Cmd Output to FFDC File ${key_index} ${cmd}
77
78 ${stdout} ${stderr}=
79 ... Execute Command ${cmd} return_stderr=True
80
81 # Write stdout data on success and error msg to the file on failure
82 Run Keyword If '${stderr}' == '${EMPTY}'
83 ... Write Data to File ${stdout}${\n} ${logpath}
84 ... ELSE Run Keyword Write Data to File ${stderr}${\n} ${logpath}
85
86
87################################################################
88# Method : BMC FFDC Files #
89# Execute command on BMC and write to individual file #
90# based on the file name pre-defined in the list #
91################################################################
92
93BMC FFDC Files
94 [Documentation] Get the command list and iterate
95 Open Connection And Log In
96 @{entries}= Get ffdc file index
97 :FOR ${index} IN @{entries}
98 \ Create File and Write Data ${index}
99
100
101Create File and Write Data
102 [Documentation] Create files to current FFDC log directory,
103 ... executes command and write to corresponding
104 ... file name in the current FFDC directory.
105 [Arguments] ${key_index}
106
107 @{cmd_list}= Get ffdc bmc file ${key_index}
108 :FOR ${cmd} IN @{cmd_list}
109 \ ${logpath}= Catenate SEPARATOR= ${LOG_PREFIX} ${cmd[0]}
110 \ Execute Command and Write FFDC ${cmd[0]} ${cmd[1]} ${logpath}
111
112
113################################################################
114# Method : Log Test Case Status #
115# Creates test result history footprint for reference #
116################################################################
117
118Log Test Case Status
119 [Documentation] Test case execution result history.
120 ... Create once and append to this file
121 ... logs/test_history.txt
122 ... Format Date:Test suite:Test case:Status
123 ... 20160909214053719992:Test Warmreset:Test WarmReset via REST:FAIL
124 Create Directory ${FFDC_LOG_PATH}
125
126 ${exist}= Run Keyword and Return Status
127 ... OperatingSystem.File Should Exist ${TEST_HISTORY}
128
129 Run Keyword If '${exist}' == '${False}'
130 ... Create File ${TEST_HISTORY}
131
132 ${cur_time}= Get Current Time Stamp
133
134 Append To File ${TEST_HISTORY}
135 ... ${cur_time}:${SUITE_NAME}:${TEST_NAME}:${TEST_STATUS}${\n}
136
Gunnar Millsa812e0f2016-09-29 20:30:03 -0500137
138Log FFDC Get Requests
139 [Documentation] Create file in current FFDC log directory.
140 ... Do openbmc get request and write to
141 ... corresponding file name.
142 [Arguments] ${key_index}
143
144 @{cmd_list}= Get ffdc get request ${key_index}
145 :FOR ${cmd} IN @{cmd_list}
146 \ ${logpath}= Catenate SEPARATOR= ${LOG_PREFIX} ${cmd[0]}
147 \ ${resp}= OpenBMC Get Request ${cmd[1]}
148 \ ${jsondata}= to json ${resp.content}
149 \ Write Data to File ${jsondata["data"]}${\n} ${logpath}
150
151
152BMC FFDC Get Requests
153 [Documentation] Get the command list and iterate
154 Open Connection And Log In
155 @{entries}= Get ffdc get request index
156 :FOR ${index} IN @{entries}
157 \ Log FFDC Get Requests ${index}