blob: 74e14e378d356568b5d4030b95e0f40b305be48f [file] [log] [blame]
Vijayfcdadc52020-01-21 01:48:19 -06001*** Settings ***
2
3Documentation Test Save Area feature of Management Console on BMC.
4
5Resource ../../lib/rest_client.robot
6Resource ../../lib/openbmc_ffdc.robot
7Resource ../../lib/resource.robot
Vijay09839e22020-02-05 02:54:44 -06008Resource ../../lib/bmc_redfish_utils.robot
Vijayfcdadc52020-01-21 01:48:19 -06009Resource ../../lib/utils.robot
10
11Suite Setup Suite Setup Execution
12Test Teardown Test Teardown Execution
13
14
15*** Variables ***
16
Vijay09839e22020-02-05 02:54:44 -060017${MAX_SIZE_MSG} File size exceeds 200KB. Maximum allowed size is 200KB
18${UPLOADED_MSG} File Created
19${FORBIDDEN_MSG} Forbidden
20${FILE_CREATE_ERROR_MSG} Error while creating the file
Vijayfcdadc52020-01-21 01:48:19 -060021
Vijay09839e22020-02-05 02:54:44 -060022@{ADMIN} admin_user TestPwd123
23@{OPERATOR} operator_user TestPwd123
24&{USERS} Administrator=${ADMIN} Operator=${OPERATOR}
Vijayfcdadc52020-01-21 01:48:19 -060025
26*** Test Cases ***
27
28Verify Small Partition File Upload And Delete
29 [Documentation] Verify small partition file upload and delete.
30 [Tags] Verify_Small_Partition_File_Upload_And_Delete
31 [Template] Upload File To Create Partition Then Delete Partition
32
Vijay09839e22020-02-05 02:54:44 -060033 # partition delete
34 # file_name size_kb name expect_resp_code expected_msg partition username
35 201KB_file 201 201KB ${HTTP_BAD_REQUEST} ${MAX_SIZE_MSG} ${True} ${OPENBMC_USERNAME}
36 15KB_file 15 15KB ${HTTP_OK} ${UPLOADED_MSG} ${True} ${OPENBMC_USERNAME}
37 200KB_file 200 200KB ${HTTP_OK} ${UPLOADED_MSG} ${True} ${OPENBMC_USERNAME}
Vijayfcdadc52020-01-21 01:48:19 -060038
39
40Verify Multiple Files Upload
41 [Documentation] Verify multiple files upload.
42 [Tags] Verify_Multiple_Files_Upload
43 [Template] Upload File To Create Partition Then Delete Partition
44
Vijay09839e22020-02-05 02:54:44 -060045 # partition delete
46 # file_name size_kb name expect_resp_code expected_msg partition username
47 0KB_file 0 0KB ${HTTP_OK} ${UPLOADED_MSG} ${False} ${OPENBMC_USERNAME}
48 10KB_file 10 10KB ${HTTP_OK} ${UPLOADED_MSG} ${False} ${OPENBMC_USERNAME}
49 50KB_file 50 50KB ${HTTP_OK} ${UPLOADED_MSG} ${False} ${OPENBMC_USERNAME}
50 250KB_file 250 250KB ${HTTP_BAD_REQUEST} ${MAX_SIZE_MSG} ${False} ${OPENBMC_USERNAME}
51 19KB_file 19 19KB ${HTTP_OK} ${UPLOADED_MSG} ${False} ${OPENBMC_USERNAME}
52 199KB_file 199 199KB ${HTTP_OK} ${UPLOADED_MSG} ${False} ${OPENBMC_USERNAME}
Vijayfcdadc52020-01-21 01:48:19 -060053
54
55Verify Read Partition
56 [Documentation] Verify read partition.
57 [Tags] Verify_Read_Partition
58
59 Set Test Variable ${file_name} testfile
60 Set Test Variable ${partition_name} part_read
61 Set Test Variable ${content} Sample Content to test partition file upload
62
63 Run echo "${content}" > ${file_name}
64 OperatingSystem.File Should Exist ${file_name}
65
66 Upload File To Create Partition Then Delete Partition ${file_name} 1 ${partition_name}
67 ... delete_partition=${False}
68
69 Read Partition And Verify Content ${partition_name} ${content}
70
71
Vijay09839e22020-02-05 02:54:44 -060072Verify Non-Admin User Is Forbidden To Upload Partition File
73 [Documentation] Verify non-admin user is forbidden to upload partition file.
74 [Tags] Verify_Non-Admin_User_Is_Forbidden_To_Upload_Partition_File
75 [Template] Upload File To Create Partition Then Delete Partition
76
77 # partition delete
78 # file_name size_kb name expect_resp_code expected_msg partition username
79 12KB_file 12 12KB ${HTTP_FORBIDDEN} ${FORBIDDEN_MSG} ${False} operator_user
80
81
82Verify Partition Update On BMC
83 [Documentation] Verify partition update on BMC.
84 [Tags] Verify_Partition_Update_On_BMC
85
86 Set Test Variable ${file_name} testfile
87 Set Test Variable ${partition_name} part_read
88 Set Test Variable ${content1} Sample Content to test partition file upload
89 Set Test Variable ${content2} Sample Content to test partition file update
90
91 Upload Partition File With Some Known Contents ${file_name} ${partition_name} ${content1}
92 Read Partition And Verify Content ${partition_name} ${content1}
93
94 # Upload the same partition with modified contents to verify update partition feature.
95 Upload Partition File With Some Known Contents ${file_name} ${partition_name} ${content2}
96 Read Partition And Verify Content ${partition_name} ${content2}
97
98
99Verify Delete Partition When Partition Does Not Exist
100 [Documentation] Verify delete partition when partition does not exist.
101 [Tags] Verify_Delete_Partition_When_Partition_Does_Not_Exist
102 [Template] Delete Partition And Verify On BMC
103
104 # partition_name expect_resp_code username
105 Does_not_exist ${HTTP_NOT_FOUND} ${OPENBMC_USERNAME}
106 Does_not_exist ${HTTP_FORBIDDEN} operator_user
107
108
109Verify Partition Files Persistency And Re-upload After BMC Reboot
110 [Documentation] Verify partition files persistency and re-upload after BMC reboot.
111 [Tags] Verify_Partition_Files_Persistency_And_Re-upload_After_BMC_Reboot
112
113 Set Test Variable ${file_name} testfile
114 Set Test Variable ${partition_name} part_read
115 Set Test Variable ${content} Sample Content to test partition file upload
116
117 Upload Partition File With Some Known Contents
118 ... ${file_name}_1 ${partition_name}_1 ${content}_${file_name}_1
119 Upload Partition File With Some Known Contents
120 ... ${file_name}_2 ${partition_name}_2 ${content}_${file_name}_2
121
122 OBMC Reboot (off)
123
124 # Get REST session to BMC.
125 Initialize OpenBMC
126
127 # Checking for the content of uploaded partitions after BMC reboot.
128 Read Partition And Verify Content ${partition_name}_1 ${content}_${file_name}_1
129 Read Partition And Verify Content ${partition_name}_2 ${content}_${file_name}_2
130
131 # Upload same partition with different content to test partition update after BMC reboot.
132 Upload Partition File With Some Known Contents
133 ... ${file_name}_1 ${partition_name}_1 ${content}_${file_name}_2
134
135 # Upload different partition.
136 Upload Partition File With Some Known Contents ${file_name} ${partition_name} ${content}
137
138
139Verify One Thousand Partitions File Upload
140 [Documentation] Verify One Thousand Partitions File Upload.
141 [Tags] Verify_One_Thousand_Partitions_File_Upload
142
143 # Note: 1000 Partitions file upload would take 15-20 minutes.
144 FOR ${INDEX} IN RANGE 1 1000
145 ${status}= Run Keyword And Return Status Upload File To Create Partition Then Delete Partition
146 ... 200KB 200 p${INDEX} delete_partition=${False}
147 Run Keyword If ${status} == ${True} Continue For Loop
148
149 # Check if /var is full on BMC.
150 ${status} ${stderr} ${rc}= BMC Execute Command df -k | grep \' /var\' | grep -v /var/
151 ${var_size}= Set Variable ${status.split('%')[0].split()[1]}
152
153 # Should be a problem if partition file upload request has failed when /var is not full.
154 Exit For Loop If ${var_size} != ${100}
155
156 # Expect HTTP_INTERNAL_SERVER_ERROR and FILE_CREATE_ERROR_MSG when /var is full.
157 Upload File To Create Partition Then Delete Partition
158 ... 200KB 200 p${INDEX} ${HTTP_INTERNAL_SERVER_ERROR} ${FILE_CREATE_ERROR_MSG} ${False}
159 END
160
161
Vijayfcdadc52020-01-21 01:48:19 -0600162*** Keywords ***
163
164Create Partition File
165 [Documentation] Create partition file.
166 [Arguments] ${file_name}=dummyfile ${size_kb}=15
167
168 # Description of argument(s):
169 # file_name Name of the test file to be created. Examples: p1.log, part1.txt etc.
George Keishing879f0842020-02-05 11:00:47 -0600170 # size_kb Size of the test file to be created in KB, default is 15KB.
Vijayfcdadc52020-01-21 01:48:19 -0600171 # Example : 15, 200 etc.
172
173 ${file_exist}= Run Keyword And Return Status OperatingSystem.File Should Exist ${file_name}
174 Return From Keyword If ${file_exist} ${True}
175
176 # Create a partition file if it does not exist locally.
177 Run dd if=/dev/zero of=${file_name} bs=1 count=0 seek=${size_kb}KB
178 OperatingSystem.File Should Exist ${file_name}
179
180
Vijay09839e22020-02-05 02:54:44 -0600181Delete All Sessions And Login Using Given User
182 [Documentation] Delete all sessions and login using given user.
183 [Arguments] ${username}=${OPENBMC_USERNAME}
184
185 # Description of argument(s):
186 # username Username to login. Default is OPENBMC_USERNAME.
187 # Ex: root, operator_user, admin_user, readonly_user etc.
188
189 Delete All Sessions
190 ${password}= Set Variable If '${username}' == '${OPENBMC_USERNAME}' ${OPENBMC_PASSWORD} TestPwd123
191 Initialize OpenBMC rest_username=${username} rest_password=${password}
192
193
Vijayfcdadc52020-01-21 01:48:19 -0600194Upload File To Create Partition Then Delete Partition
195 [Documentation] Upload file to create partition the delete partition.
196 [Arguments] ${file_name}=dummyfile ${size_kb}=15 ${partition_name}=p1 ${expect_resp_code}=${HTTP_OK}
Vijay09839e22020-02-05 02:54:44 -0600197 ... ${expected_msg}=File Created ${delete_partition}=${True} ${username}=${OPENBMC_USERNAME}
Vijayfcdadc52020-01-21 01:48:19 -0600198
199 # Description of argument(s):
200 # file_name Name of the test file to be created.
201 # partition_name Name of the partition on BMC.
202 # expect_resp_code Expected REST response code, default is ${HTTP_OK}.
203 # expected_msg Expected message from file upload, default is 'File Created'.
204 # delete_partition Partition will be deleted if this is True.
Vijay09839e22020-02-05 02:54:44 -0600205 # username Login username
206
207 # Create a session with given user to test upload partition file.
208 Run Keyword If '${username}' != '${OPENBMC_USERNAME}'
209 ... Delete All Sessions And Login Using Given User ${username}
Vijayfcdadc52020-01-21 01:48:19 -0600210
211 # Create a partition file.
212 Create Partition File ${file_name} ${size_kb}
213
214 # Get the content of the file and upload to BMC.
215 ${image_data}= OperatingSystem.Get Binary File ${file_name}
216 ${data}= Create Dictionary data ${image_data}
217 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN}
218
219 Set To Dictionary ${data} headers ${headers}
220 ${resp}= Put Request openbmc /ibm/v1/Host/ConfigFiles/${partition_name} &{data}
221 Should Be Equal As Strings ${resp.status_code} ${expect_resp_code}
222
Vijay09839e22020-02-05 02:54:44 -0600223 ${description}= Run Keyword If ${expect_resp_code} != ${HTTP_FORBIDDEN}
224 ... Return Description Of REST Response ${resp.text}
225 ... ELSE Set Variable ${FORBIDDEN_MSG}
226
227 Should Be Equal As Strings ${description} ${expected_msg}
Vijayfcdadc52020-01-21 01:48:19 -0600228
229 # Cleanup local space after upload attempt.
230 Run Keyword And Ignore Error Delete Local File Created To Upload ${file_name}
231
232 ${upload_success}= Set Variable If ${expect_resp_code} != ${HTTP_OK} ${False} ${True}
Vijay09839e22020-02-05 02:54:44 -0600233 Verify Partition Available On BMC ${partition_name} ${upload_success} ${username}
Vijayfcdadc52020-01-21 01:48:19 -0600234
235 # Delete partition and verify on BMC.
Vijay09839e22020-02-05 02:54:44 -0600236 ${expect_resp_code}= Set Variable If ${expect_resp_code} != ${HTTP_OK} ${HTTP_NOT_FOUND} ${HTTP_OK}
237 Run Keyword If ${delete_partition} == ${True} Delete Partition And Verify On BMC
238 ... ${partition_name} ${expect_resp_code} ${username}
239
240
241Return Description Of REST Response
242 [Documentation] Return description of REST response.
243 [Arguments] ${resp_text}
244
245 # Description of argument(s):
246 # resp_text REST response body.
247
248 # resp_text after successful partition file upload looks like:
249 # {
250 # "Description": "File Created"
251 # }
252
253 ${message}= Evaluate json.loads('''${resp_text}''') json
254
255 [Return] ${message["Description"]}
256
257
258Delete Partition And Verify On BMC
259 [Documentation] Delete partition and verify on BMC.
260 [Arguments] ${partition_name} ${expect_resp_code}=${HTTP_OK} ${username}=${OPENBMC_USERNAME}
261
262 # Description of argument(s):
263 # partition_name Name of the partition on BMC.
264 # expect_resp_code Expected REST response code from DELETE request, default is ${HTTP_OK}.
265 # username Username to login, if other than OPENBMC_USERNAME user.
266
267 # Create a session with given user to test delete operation.
268 # If user is a non-admin user then DELETE request is forbidden for the user.
269 Run Keyword If '${username}' != '${OPENBMC_USERNAME}'
270 ... Delete All Sessions And Login Using Given User ${username}
271
272 Delete Partition ${partition_name} ${expect_resp_code}
273 Verify Partition Available On BMC ${partition_name} ${False} ${username}
Vijayfcdadc52020-01-21 01:48:19 -0600274
275
276Get List Of Partitions
277 [Documentation] Get list of partitions.
278 [Arguments] ${expect_resp_code}=${HTTP_OK}
279
280 # Description of argument(s):
281 # expect_resp_code Expected REST response code, default is ${HTTP_OK}.
282
283 ${resp}= Get Request openbmc /ibm/v1/Host/ConfigFiles
284 Should Be Equal As Strings ${resp.status_code} ${expect_resp_code}
285 Return From Keyword If ${expect_resp_code} != ${HTTP_OK}
286
287 ${resp_json}= To JSON ${resp.content}
288 ${partitions_cnt}= Get Length ${resp_json['Members']}
289
290 [Return] ${resp_json['Members']} ${partitions_cnt}
291
292
293Verify Partition Available On BMC
294 [Documentation] Verify partition available on BMC.
Vijay09839e22020-02-05 02:54:44 -0600295 [Arguments] ${partition_name}=${EMPTY} ${operation_status}=${True} ${username}=${OPENBMC_USERNAME}
Vijayfcdadc52020-01-21 01:48:19 -0600296
297 # Description of argument(s):
Vijay09839e22020-02-05 02:54:44 -0600298 # partition_name Name of the partition on BMC.
299 # operation_success Status of the previous operation like upload/delete success or failure.
300 # True if operation was a success else False.
301 # username Username used to upload/delete. Default is ${OPENBMC_USERNAME}.
Vijayfcdadc52020-01-21 01:48:19 -0600302
Vijay09839e22020-02-05 02:54:44 -0600303 # Non admin users will not have an access to do GET list
304 Run Keyword If '${username}' != '${OPENBMC_USERNAME}'
305 ... Delete All Sessions And Login Using Given User
Vijayfcdadc52020-01-21 01:48:19 -0600306
307 ${partitions} ${partitions_cnt}= Get List Of Partitions
308 ${rest_response}= Run Keyword And Return Status List Should Contain Value ${partitions}
309 ... /ibm/v1/Host/ConfigFiles/${partition_name}
310
311 ${status} ${stderr} ${rc}= BMC Execute Command
312 ... ls -l /var/lib/obmc/bmc-console-mgmt/save-area/${partition_name} | wc -l
313 ${bmc_response}= Run Keyword And Return Status Should Be True ${status} == ${1}
314
315 Run Keyword If '${partition_name}' == '${EMPTY}' Run Keywords
316 ... Should Be Equal ${rest_response} ${False} AND Should Be Equal ${bmc_response} ${False}
317
318 Run Keyword And Return If '${partition_name}' != '${EMPTY}' Run Keywords
319 ... Should Be True ${rest_response} == ${operation_status} AND
320 ... Should Be True ${bmc_response} == ${operation_status}
321
322
323Delete Partition
324 [Documentation] Delete partition.
325 [Arguments] ${partition_name}='${EMPTY}' ${expect_resp_code}=${HTTP_OK}
326
327 # Description of argument(s):
328 # partition_name Name of the partition on BMC.
329 # expect_resp_code Expected REST response code, default is ${HTTP_OK}.
330
331 ${data}= Create Dictionary
332 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN}
333 Set To Dictionary ${data} headers ${headers}
334
335 ${resp}= Delete Request openbmc /ibm/v1/Host/ConfigFiles/${partition_name} &{data}
336 ${expect_resp_code}= Set Variable If '${partition_name}' == '${EMPTY}'
337 ... ${HTTP_NOT_FOUND} ${expect_resp_code}
338 Should Be Equal As Strings ${resp.status_code} ${expect_resp_code}
339
340
341Delete And Verify All Partitions on BMC
342 [Documentation] Delete and verify all partitions on BMC.
343 [Arguments] ${expect_resp_code}=${HTTP_OK}
344
345 # Description of argument(s):
346 # expect_resp_code Expected REST response code, default is ${HTTP_OK}.
347
348 ${data}= Create Dictionary
349 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN}
350 Set To Dictionary ${data} headers ${headers}
351
352 ${resp}= Post Request openbmc /ibm/v1/Host/ConfigFiles/Actions/FileCollection.DeleteAll &{data}
353 Should Be Equal As Strings ${resp.status_code} ${expect_resp_code}
354
355 Return From Keyword If ${expect_resp_code} != ${HTTP_OK}
356 Verify Partition Available On BMC operation_status=${False}
357
358
359Read Partition And Verify Content
360 [Documentation] Read partition and verify content.
361 [Arguments] ${partition_name}=p1 ${content}=${EMPTY} ${expect_resp_code}=${HTTP_OK}
362
363 # Description of argument(s):
364 # partition_name Name of the partition on BMC.
365 # content Content of the partition file uploaded.
366 # expect_resp_code Expected REST response code, default is ${HTTP_OK}.
367
368 ${resp}= Get Request openbmc /ibm/v1/Host/ConfigFiles/${partition_name}
369 Should Be Equal As Strings ${resp.status_code} ${expect_resp_code}
370
371 ${partition_data}= Remove String ${resp.text} \\n
372 ${partition_data}= Evaluate json.loads('''${partition_data}''') json
373 Should Be Equal As Strings ${partition_data["Data"]} ${content}
374
375
376Delete Local File Created To Upload
377 [Documentation] Delete local file created to upload.
378 [Arguments] ${file_name}
379
380 # Description of argument(s):
381 # file_name Name of the local file to be deleted.
382
383 Run Keyword And Ignore Error Run rm -f ${file_name}
384
385
Vijay09839e22020-02-05 02:54:44 -0600386Upload Partition File With Some Known Contents
387 [Documentation] Upload partition file with some known contents.
388 [Arguments] ${file_name} ${partition_name} ${content}
389
390 # Description of argument(s):
391 # file_name Name of the partition file to be uploaded.
392 # partition_name Name of the partition on BMC.
393 # content Content of the partition file to be uploaded.
394
395 Run echo "${content}" > ${file_name}
396 OperatingSystem.File Should Exist ${file_name}
397
398 Upload File To Create Partition Then Delete Partition ${file_name} 1 ${partition_name}
399 ... delete_partition=${False}
400
401
Vijayfcdadc52020-01-21 01:48:19 -0600402Suite Setup Execution
403 [Documentation] Suite setup execution.
404
Vijay09839e22020-02-05 02:54:44 -0600405 # Create different user accounts.
406 Redfish.Login
407 Create Users With Different Roles users=${USERS} force=${True}
408 Redfish.Logout
409
Vijayfcdadc52020-01-21 01:48:19 -0600410 # Get REST session to BMC.
411 Initialize OpenBMC
412
413
414Test Teardown Execution
415 [Documentation] Test teardown execution.
416
417 Delete And Verify All Partitions on BMC
George Keishingbe27e922020-02-04 11:27:34 -0600418 FFDC On Test Case Fail
Vijayfcdadc52020-01-21 01:48:19 -0600419