blob: 41ac82f15d167845512e8db3d02ccebd2dd2c165 [file] [log] [blame]
Rahul Maheshwari2568f872020-09-23 01:03:39 -05001*** Settings ***
2
3Documentation Test BMC dump functionality of OpenBMC.
4
5Resource ../../lib/openbmc_ffdc.robot
6Resource ../../lib/dump_utils.robot
7
8Test Setup Redfish Delete All BMC Dumps
9Test Teardown Test Teardown Execution
10
11
12*** Test Cases ***
13
14Verify User Initiated BMC Dump When Host Powered Off
15 [Documentation] Create user initiated BMC dump at host off state and
16 ... verify dump entry for it.
17 [Tags] Verify_User_Initiated_BMC_Dump_When_Host_Powered_Off
18
19 Redfish Power Off stack_mode=skip
20 ${dump_id}= Create User Initiated BMC Dump
Rahul Maheshwaribcefdf22020-10-16 07:51:34 -050021 ${dump_entries}= Get BMC Dump Entries
Rahul Maheshwari2568f872020-09-23 01:03:39 -050022 Length Should Be ${dump_entries} 1
23 List Should Contain Value ${dump_entries} ${dump_id}
24
Rahul Maheshwari2568f872020-09-23 01:03:39 -050025Verify User Initiated BMC Dump When Host Booted
26 [Documentation] Create user initiated BMC dump at host booted state and
27 ... verify dump entry for it.
28 [Tags] Verify_User_Initiated_BMC_Dump_When_Host_Booted
29
30 Redfish Power On stack_mode=skip
31 ${dump_id}= Create User Initiated BMC Dump
Rahul Maheshwaribcefdf22020-10-16 07:51:34 -050032 ${dump_entries}= Get BMC Dump Entries
Rahul Maheshwari2568f872020-09-23 01:03:39 -050033 Length Should Be ${dump_entries} 1
34 List Should Contain Value ${dump_entries} ${dump_id}
35
36
37Verify Dump Persistency On Dump Service Restart
38 [Documentation] Create user dump, restart dump manager service and verify dump
39 ... persistency.
40 [Tags] Verify_Dump_Persistency_On_Dump_Service_Restart
41
42 Create User Initiated BMC Dump
43 ${dump_entries_before}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
44
45 # Restart dump service.
46 BMC Execute Command systemctl restart xyz.openbmc_project.Dump.Manager.service
47 Sleep 10s reason=Wait for BMC dump service to restart properly
48
49 ${dump_entries_after}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
50 Lists Should Be Equal ${dump_entries_before} ${dump_entries_after}
51
52
53Verify Dump Persistency On BMC Reset
54 [Documentation] Create user dump, reset BMC and verify dump persistency.
55 [Tags] Verify_Dump_Persistency_On_BMC_Reset
56
57 Create User Initiated BMC Dump
58 ${dump_entries_before}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
59
60 # Reset BMC.
61 OBMC Reboot (off)
62
63 ${dump_entries_after}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
64 Lists Should Be Equal ${dump_entries_before} ${dump_entries_after}
65
66
Rahul Maheshwari95cbceb2020-10-21 23:25:08 -050067Delete User Initiated BMC Dump And Verify
68 [Documentation] Delete user initiated BMC dump and verify.
69 [Tags] Delete_User_Initiated_BMC_Dump_And_Verify
70
71 ${dump_id}= Create User Initiated BMC Dump
72 Redfish Delete BMC Dump ${dump_id}
73
74 ${dump_entries}= Get BMC Dump Entries
75 Should Be Empty ${dump_entries}
76
77
78Delete All User Initiated BMC Dumps And Verify
79 [Documentation] Delete all user initiated BMC dumps and verify.
80 [Tags] Delete_All_User_Initiated_BMC_Dumps_And_Verify
81
82 # Create some BMC dump.
83 Create User Initiated BMC Dump
84 Create User Initiated BMC Dump
85
86 Redfish Delete All BMC Dumps
87 ${dump_entries}= Get BMC Dump Entries
88 Should Be Empty ${dump_entries}
89
90
Rahul Maheshwari4f338ab2020-10-21 23:28:40 -050091Create Two User Initiated BMC Dumps
92 [Documentation] Create two user initiated BMC dumps.
93 [Tags] Create_Two_User_Initiated_BMC_Dumps
94
95 ${dump_id1}= Create User Initiated BMC Dump
96 ${dump_id2}= Create User Initiated BMC Dump
97
98 ${dump_entries}= Get BMC Dump Entries
99 Length Should Be ${dump_entries} 2
100 Should Contain ${dump_entries} ${dump_id1}
101 Should Contain ${dump_entries} ${dump_id2}
102
103
104Create Two User Initiated BMC Dumps And Delete One
105 [Documentation] Create two dumps and delete the first.
106 [Tags] Create_Two_User_Initiated_BMC_Dumps_And_Delete_One
107
108 ${dump_id1}= Create User Initiated BMC Dump
109 ${dump_id2}= Create User Initiated BMC Dump
110
111 Redfish Delete BMC Dump ${dump_id1}
112
113 ${dump_entries}= Get BMC Dump Entries
114 Length Should Be ${dump_entries} 1
115 List Should Contain Value ${dump_entries} ${dump_id2}
116
117
118Create And Delete User Initiated BMC Dump Multiple Times
119 [Documentation] Create and delete user initiated BMC dump multiple times.
120 [Tags] Create_And_Delete_User_Initiated_BMC_Dump_Multiple_Times
121
122 FOR ${INDEX} IN 1 10
123 ${dump_id}= Create User Initiated BMC Dump
124 Redfish Delete BMC Dump ${dump_id}
125 END
126
127
Rahul Maheshwarid709c8d2020-11-01 23:03:51 -0600128Verify Maximum BMC Dump Creation
129 [Documentation] Create maximum BMC dump and verify error when dump runs out of space.
130 [Tags] Verify_Maximum_BMC_Dump_Creation
131 [Teardown] Redfish Delete All BMC Dumps
132
133 # Maximum allowed space for dump is 1024 KB. BMC typically hold 8-14 dumps
134 # before running out of this dump space. So trying to create dumps in 20
135 # iterations to run out of space.
136
137 FOR ${n} IN RANGE 0 20
138 Create User Initiated BMC Dump
139 ${dump_space}= Get Disk Usage For Dumps
140 Exit For Loop If ${dump_space} >= 1024
141 END
142
143 # Check error while creating dump when dump size is full.
144 ${payload}= Create Dictionary DiagnosticDataType=Manager
145 Redfish.Post /redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData
146 ... body=${payload} valid_status_codes=[${HTTP_INTERNAL_SERVER_ERROR}]
147
148
Rahul Maheshwari2568f872020-09-23 01:03:39 -0500149*** Keywords ***
150
151Create User Initiated BMC Dump
152 [Documentation] Generate user initiated BMC dump and return the dump id number (e.g., "5").
153
154 ${payload}= Create Dictionary DiagnosticDataType=Manager
155 ${resp}= Redfish.Post /redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData
156 ... body=${payload} valid_status_codes=[${HTTP_ACCEPTED}]
157
158 # Example of response from above Redfish POST request.
159 # "@odata.id": "/redfish/v1/TaskService/Tasks/0",
160 # "@odata.type": "#Task.v1_4_3.Task",
161 # "Id": "0",
162 # "TaskState": "Running",
163 # "TaskStatus": "OK"
164
165 Wait Until Keyword Succeeds 5 min 15 sec Is Task Completed ${resp.dict['Id']}
166 ${task_id}= Set Variable ${resp.dict['Id']}
167
168 ${task_dict}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id}
169
170 # Example of HttpHeaders field of task details.
171 # "Payload": {
172 # "HttpHeaders": [
173 # "Host: <BMC_IP>",
174 # "Accept-Encoding: identity",
175 # "Connection: Keep-Alive",
176 # "Accept: */*",
177 # "Content-Length: 33",
178 # "Location: /redfish/v1/Managers/bmc/LogServices/Dump/Entries/2"]
179 # ],
180 # "HttpOperation": "POST",
181 # "JsonBody": "{\"DiagnosticDataType\":\"Manager\"}",
182 # "TargetUri": "/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData"
183 # }
184
185 [Return] ${task_dict["Payload"]["HttpHeaders"][-1].split("/")[-1]}
186
187
Rahul Maheshwaribcefdf22020-10-16 07:51:34 -0500188Get BMC Dump Entries
189 [Documentation] Return BMC dump ids list.
190
191 ${dump_uris}= redfish_utils.get_member_list /redfish/v1/Managers/bmc/LogServices/Dump/Entries
192 ${dump_ids}= Create List
193
194 FOR ${dump_uri} IN @{dump_uris}
195 ${dump_id}= Fetch From Right ${dump_uri} /
196 Append To List ${dump_ids} ${dump_id}
197 END
198
199 [Return] ${dump_ids}
200
201
Rahul Maheshwarid709c8d2020-11-01 23:03:51 -0600202Get Disk Usage For Dumps
203 [Documentation] Return disk usage in kilobyte for BMC dumps.
204
205 ${usage_output} ${stderr} ${rc}= BMC Execute Command du -s /var/lib/phosphor-debug-collector/dumps
206
207 # Example of output from above BMC cli command.
208 # $ du -s /var/lib/phosphor-debug-collector/dumps
209 # 516 /var/lib/phosphor-debug-collector/dumps
210
211 ${usage_output}= Fetch From Left ${usage_output} /
212 ${usage_output}= Convert To Integer ${usage_output}
213
214 [return] ${usage_output}
215
216
Rahul Maheshwari2568f872020-09-23 01:03:39 -0500217Is Task Completed
218 [Documentation] Verify if the given task is completed.
219 [Arguments] ${task_id}
220
221 # Description of argument(s):
222 # task_id Id of task which needs to be checked.
223
224 ${task_dict}= Redfish.Get Properties /redfish/v1/TaskService/Tasks/${task_id}
225 Should Be Equal As Strings ${task_dict['TaskState']} Completed
226
227
228Test Teardown Execution
229 [Documentation] Do test teardown operation.
230
231 FFDC On Test Case Fail
232 Close All Connections