blob: 027cd2661589ac4179de0da5c3f6df9785096551 [file] [log] [blame]
Vijaybc331e22020-02-27 04:17:37 -06001*** Settings ***
2
Sushil Singhd03f2ce2020-09-17 08:54:41 -05003Documentation Test lock management feature of management console on BMC.
Vijaybc331e22020-02-27 04:17:37 -06004
Sushil Singhd03f2ce2020-09-17 08:54:41 -05005Resource ../../lib/resource.robot
6Resource ../../lib/openbmc_ffdc.robot
7Resource ../../lib/bmc_redfish_utils.robot
8Resource ../../lib/external_intf/management_console_utils.robot
Sushil Singh977f8f52020-11-20 06:32:50 -06009Resource ../../lib/rest_response_code.robot
Sushil Singh728ef9c2020-10-28 04:25:39 -050010Library ../../lib/bmc_network_utils.py
Vijaybc331e22020-02-27 04:17:37 -060011
Sushil Singhd03f2ce2020-09-17 08:54:41 -050012Suite Setup Run Keyword And Ignore Error Delete All Redfish Sessions
13Suite Teardown Redfish.Logout
14Test Setup Printn
15Test Teardown FFDC On Test Case Fail
Vijaybc331e22020-02-27 04:17:37 -060016
17*** Variables ***
18
Sushil Singhd03f2ce2020-09-17 08:54:41 -050019${BAD_REQUEST} Bad Request
Vijaybc331e22020-02-27 04:17:37 -060020
21*** Test Cases ***
22
Sushil Singhd03f2ce2020-09-17 08:54:41 -050023Acquire Read Write Lock
Vijaybc331e22020-02-27 04:17:37 -060024 [Documentation] Acquire and release different read locks.
Sushil Singhd03f2ce2020-09-17 08:54:41 -050025 [Tags] Acquire_Read_Write_Lock
26 [Template] Acquire Lock On Resource
Vijaybc331e22020-02-27 04:17:37 -060027
Sushil Singhd03f2ce2020-09-17 08:54:41 -050028 # client_id lock_type reboot_flag
29 HMCID-01 ReadCase1 False
30 HMCID-01 ReadCase2 False
31 HMCID-01 ReadCase3 False
32 HMCID-01 WriteCase1 False
33 HMCID-01 WriteCase2 False
34 HMCID-01 WriteCase3 False
Vijaybc331e22020-02-27 04:17:37 -060035
36
Sushil Singhd03f2ce2020-09-17 08:54:41 -050037Check Lock Persistency On BMC Reboot
38 [Documentation] Acquire lock and check after reboot it remain same.
39 [Tags] Check_Lock_Persistency_On_BMC_Reboot
40 [Template] Acquire Lock On Resource
Vijaybc331e22020-02-27 04:17:37 -060041
Sushil Singhd03f2ce2020-09-17 08:54:41 -050042 # client_id lock_type reboot_flag
43 HMCID-01 ReadCase1 True
44 HMCID-01 ReadCase2 True
45 HMCID-01 ReadCase3 True
46 HMCID-01 WriteCase1 True
47 HMCID-01 WriteCase2 True
48 HMCID-01 WriteCase3 True
Vijaybc331e22020-02-27 04:17:37 -060049
50
Sushil Singhd03f2ce2020-09-17 08:54:41 -050051Acquire Read Lock On Read Lock
52 [Documentation] Acquire read lock on another read lock.
53 [Tags] Acquire_Read_Lock_On_Read_Lock
54 [Template] Acquire Lock On Another Lock
Vijaybc331e22020-02-27 04:17:37 -060055
Sushil Singhd03f2ce2020-09-17 08:54:41 -050056 # client_id
57 HMCID-01
Vijaybc331e22020-02-27 04:17:37 -060058
59
Sushil Singhd03f2ce2020-09-17 08:54:41 -050060Fail To Acquire Lock On Another Lock
61 [Documentation] Fail to acquire another lock.
62 [Tags] Fail_To_Acquire_Lock_On_Another_Lock
63 [Template] Verify Acquire Lock Fails On Another Lock
Vijay85610ee2020-04-03 05:30:28 -050064
Sushil Singhd03f2ce2020-09-17 08:54:41 -050065 # client_id lock_type
66 HMCID-01 ReadCase2,WriteCase2
67 HMCID-01 WriteCase2,WriteCase2
68 HMCID-01 WriteCase2,ReadCase2
George Keishing566daaf2020-07-02 06:18:50 -050069
70
Sushil Singhe33c6e62020-09-29 06:34:35 -050071Acquire Lock After Reboot
72 [Documentation] Acquire and release read and write locks after reboot.
73 [Tags] Acquire_Lock_After_Reboot
74 [Template] Verify Acquire Lock After Reboot
75
76 # client_id lock_type
77 HMCID-01 ReadCase1
78 HMCID-01 ReadCase2
79 HMCID-01 ReadCase3
80 HMCID-01 WriteCase1
81 HMCID-01 WriteCase2
82 HMCID-01 WriteCase3
83
84
Sushil Singhd03f2ce2020-09-17 08:54:41 -050085Acquire And Release Lock In Loop
86 [Documentation] Acquire and release read, write locks in loop.
87 [Tags] Acquire_And_Release_Lock_In_Loop
88 [Template] Verify Acquire And Release Lock In Loop
George Keishing566daaf2020-07-02 06:18:50 -050089
Sushil Singhd03f2ce2020-09-17 08:54:41 -050090 # client_id lock_type
91 HMCID-01 ReadCase1
92 HMCID-01 ReadCase2
93 HMCID-01 ReadCase3
94 HMCID-01 WriteCase1
95 HMCID-01 WriteCase2
96 HMCID-01 WriteCase3
Vijay85610ee2020-04-03 05:30:28 -050097
98
Sushil Singh977f8f52020-11-20 06:32:50 -060099Fail To Acquire Read And Write In Single Request
100 [Documentation] Fail to acquire read and write lock in single request.
101 [Tags] Fail_To_Acquire_Read_And_Write_In_Single_Request
102 [Template] Verify Fail To Acquire Read And Write In Single Request
103
104 # client_id lock_type
105 HMCID-01 ReadCase1,WriteCase1
106 HMCID-01 WriteCase1,ReadCase1
107
108
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500109Verify Release Of Valid Locks
110 [Documentation] Release all valid locks.
111 [Tags] Verify_Release_Of_Valid_Locks
112 [Template] Acquire And Release Multiple Locks
Vijayafdd2a12020-04-09 02:03:20 -0500113
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500114 # client_id lock_type release_lock_type
115 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction
116 HMCID-02 ReadCase1,ReadCase1,ReadCase1 Session
Vijayafdd2a12020-04-09 02:03:20 -0500117
118
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500119Invalid Locks Fail To Release
120 [Documentation] Release in-valid lock result in fail.
121 [Tags] Invalid_Locks_Fail_To_Release
122 [Template] Verify Invalid Locks Fail To Release
Vijayafdd2a12020-04-09 02:03:20 -0500123
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500124 # client_id lock_type release_lock_type
125 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction
126 12345 ReadCase2,ReadCase2,ReadCase2 Transaction
127 HMCID ReadCase3,ReadCase3,ReadCase3 Transaction
Vijayafdd2a12020-04-09 02:03:20 -0500128
129
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500130Fail To Release Lock For Another Session
131 [Documentation] Failed to release locks from another session.
132 [Tags] Fail_To_Release_Lock_For_Another_Session
133 [Template] Verify Fail To Release Lock For Another Session
Vijayafdd2a12020-04-09 02:03:20 -0500134
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500135 # client_id lock_type
136 HMCID-01,HMCID-02 ReadCase1,ReadCase1
Vijayafdd2a12020-04-09 02:03:20 -0500137
138
Sushil Singhe33c6e62020-09-29 06:34:35 -0500139Test Invalid Resource ID Data Type Locking
140 [Documentation] Failed to acquire lock for invalid resource id data type.
141 [Tags] Test_Invalid_Resource_ID_Data_Type_Locking
142 [Template] Verify Fail To Acquire Lock For Invalid Resource ID Data Type
143
144 # client_id lock_type
145 HMCID-01 ReadCase1
146 HMCID-01 ReadCase2
147 HMCID-01 ReadCase3
148 HMCID-01 WriteCase1
149 HMCID-01 WriteCase2
150 HMCID-01 WriteCase3
151
152
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500153Fail To Acquire Lock For Invalid Lock Type
154 [Documentation] Failed to acquire read, write lock for invalid lock data passed.
155 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Type
156 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500157
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500158 # client_id lock_type message
159 HMCID-01 ReadCase1 ${BAD_REQUEST}
160 HMCID-01 ReadCase2 ${BAD_REQUEST}
161 HMCID-01 ReadCase3 ${BAD_REQUEST}
162 HMCID-01 ReadCase4 ${BAD_REQUEST}
163 HMCID-01 ReadCase5 ${BAD_REQUEST}
164 HMCID-01 WriteCase1 ${BAD_REQUEST}
165 HMCID-01 WriteCase2 ${BAD_REQUEST}
166 HMCID-01 WriteCase3 ${BAD_REQUEST}
167 HMCID-01 WriteCase4 ${BAD_REQUEST}
168 HMCID-01 WriteCase5 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500169
Vijayafdd2a12020-04-09 02:03:20 -0500170
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500171Fail To Acquire Lock For Invalid Lock Flag
172 [Documentation] Failed to acquire read write lock for invalid lock flag passed.
173 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Flag
174 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500175
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500176 # client_id lock_type message
177 HMCID-01 ReadCase6 ${BAD_REQUEST}
178 HMCID-01 ReadCase7 ${BAD_REQUEST}
179 HMCID-01 ReadCase8 ${BAD_REQUEST}
180 HMCID-01 ReadCase9 ${BAD_REQUEST}
181 HMCID-01 ReadCase10 ${BAD_REQUEST}
182 HMCID-01 ReadCase11 ${BAD_REQUEST}
183 HMCID-01 WriteCase6 ${BAD_REQUEST}
184 HMCID-01 WriteCase7 ${BAD_REQUEST}
185 HMCID-01 WriteCase8 ${BAD_REQUEST}
186 HMCID-01 WriteCase9 ${BAD_REQUEST}
187 HMCID-01 WriteCase10 ${BAD_REQUEST}
188 HMCID-01 WriteCase11 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500189
Vijayafdd2a12020-04-09 02:03:20 -0500190
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500191Fail To Acquire Lock For Invalid Segment Flag
192 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
193 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Flag
194 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
195
196 # client_id lock_type message
197 HMCID-01 ReadCase12 ${BAD_REQUEST}
198 HMCID-01 ReadCase13 ${BAD_REQUEST}
199 HMCID-01 ReadCase14 ${BAD_REQUEST}
200 HMCID-01 WriteCase12 ${BAD_REQUEST}
201 HMCID-01 WriteCase13 ${BAD_REQUEST}
202 HMCID-01 WriteCase14 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500203
Sushil Singhbace3002020-10-08 08:12:58 -0500204
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600205Fail To Acquire Lock For Invalid Segment Data Type Flag
206 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
207 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Data_Type_Flag
208 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
209
210 # client_id lock_type message
211 HMCID-01 ReadCase15 ${EMPTY}
212 HMCID-01 ReadCase16 ${EMPTY}
213 HMCID-01 ReadCase17 ${EMPTY}
214 HMCID-01 ReadCase18 ${EMPTY}
215 HMCID-01 WriteCase15 ${EMPTY}
216 HMCID-01 WriteCase16 ${EMPTY}
217 HMCID-01 WriteCase17 ${EMPTY}
218 HMCID-01 WriteCase18 ${EMPTY}
219
220
Sushil Singhbace3002020-10-08 08:12:58 -0500221Get Empty Lock Records For Session Where No Locks Acquired
222 [Documentation] If session does not acquire locks then get lock should return
223 ... empty lock records.
224 [Tags] Get_Empty_Lock_Records_For_Session_Where_No_Locks_Acquired
225 [Template] Verify No Locks Records For Session With No Acquired Lock
226
227 # client_id
228 HMCID-01
229
Sushil Singh728ef9c2020-10-28 04:25:39 -0500230
Sushil Singhf9a536c2020-11-09 07:33:17 -0600231Get Lock Records Empty For Invalid Session
232 [Documentation] Record of lock list is empty for invalid session.
233 [Tags] Get_Lock_Records_Empty_For_Invalid_Session
234 [Template] Verify Empty Lock Records For Invalid Session
235
236 # client_id
237 HMCID-01
238
239
Sushil Singh728ef9c2020-10-28 04:25:39 -0500240Get Lock Records For Multiple Session
241 [Documentation] Get lock records of multiple session.
242 [Tags] Get_Lock_Records_For_Multiple_Session
243 [Template] Verify Lock Records Of Multiple Session
244
245 # client_ids lock_type
246 HMCID-01,HMCID-02 ReadCase1,ReadCase1
247
248
Sushil Singhf9a536c2020-11-09 07:33:17 -0600249Get Lock Records For Multiple Invalid Session
250 [Documentation] Record of lock list is empty for list of invalid session.
251 [Tags] Get_Lock_Records_For_Multiple_Invalid_Session
252 [Template] Verify Lock Records For Multiple Invalid Session
253
254 # client_id
255 HMCID-01
256
Sushil Singh11949a22020-11-13 06:12:16 -0600257
258Get Lock Records For Multiple Invalid And Valid Session
259 [Documentation] Get record of lock from invalid and valid session.
260 [Tags] Get_Lock_Records_For_Multiple_Invalid_And_Valid_Session
261 [Template] Verify Lock Records For Multiple Invalid And Valid Session
262
263 # client_id lock_type
264 HMCID-01,HMCID-02 ReadCase1
265
Vijaybc331e22020-02-27 04:17:37 -0600266*** Keywords ***
267
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500268Create Redfish Session With ClientID
269 [Documentation] Create redifish session with client id.
270 [Arguments] ${client_id}
Vijay85610ee2020-04-03 05:30:28 -0500271
272 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500273 # client_id This client id can contain string value
274 # (e.g. 12345, "HMCID").
Vijay85610ee2020-04-03 05:30:28 -0500275
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500276 ${session_info}= Create Dictionary
277 ${session}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
Vijay85610ee2020-04-03 05:30:28 -0500278
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500279 Set To Dictionary ${session_info} SessionIDs ${session['Id']}
280 Set To Dictionary ${session_info} ClientID ${session["Oem"]["OpenBMC"]["ClientID"]}
Vijay85610ee2020-04-03 05:30:28 -0500281
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500282 [Return] ${session_info}
Vijay85610ee2020-04-03 05:30:28 -0500283
284
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500285RW General Dictionary
286 [Documentation] Create dictionay of lock request.
287 [Arguments] ${read_case} ${res_id}
Vijaybc331e22020-02-27 04:17:37 -0600288
289 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500290 # read_case Read or Write lock type.
291 # res_id Resource id.
Vijaybc331e22020-02-27 04:17:37 -0600292
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500293 ${request_dict}= Create Dictionary
George Keishing566daaf2020-07-02 06:18:50 -0500294
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500295 FOR ${key} IN @{read_case.keys()}
296 Set To Dictionary ${request_dict} LockType ${key}
297 Set To Dictionary ${request_dict} SegmentFlags ${read_case["${key}"]}
298 END
Vijaybc331e22020-02-27 04:17:37 -0600299
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500300 Set To Dictionary ${request_dict} ResourceID ${res_id}
301
302 [Return] ${request_dict}
Vijaybc331e22020-02-27 04:17:37 -0600303
304
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500305Return Description Of Response
306 [Documentation] Return description of REST response.
Vijaybc331e22020-02-27 04:17:37 -0600307 [Arguments] ${resp_text}
308
309 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500310 # resp_text REST response body.
Vijaybc331e22020-02-27 04:17:37 -0600311
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500312 # resp_text after successful partition file upload looks like:
313 # {
314 # "Description": "File Created"
315 # }
Vijaybc331e22020-02-27 04:17:37 -0600316
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500317 ${message}= Evaluate json.loads('''${resp_text}''') json
318
319 [Return] ${message}
Vijaybc331e22020-02-27 04:17:37 -0600320
321
Sushil Singha7d71f02020-11-02 05:24:22 -0600322Verify Redfish Session Deleted
323 [Documentation] Verify the redfish session is deleted.
324 [Arguments] ${session_info}
325
326 # Description of argument(s):
327 # session_info Session information are stored in dictionary.
328
329 # ${session_info} = {
330 # 'SessionIDs': 'XXXXXXXXX',
331 # 'ClientID': 'XXXXXX',
332 # 'SessionToken': 'XXXXXXXXX',
333 # 'SessionResp': session response from redfish login
334 # }
335
336 # SessionIDs : Session IDs
337 # ClientID : Client ID
338 # SessionToken : Session token
339 # SessionResp : Response of creating an redfish login session
340
341 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions
342
343 FOR ${session} IN @{sessions['Members']}
344 Should Not Be Equal As Strings session ['/redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]}']
345 END
346
347
348Verify Redfish List Of Session Deleted
349 [Documentation] Verify all the list of redfish session is deleted.
350 [Arguments] ${session_info_list}
351
352 # Description of argument(s):
353 # session_info_list List contains individual session record are stored in dictionary.
354
355 # ${session_info_list} = [{
356 # 'SessionIDs': 'XXXXXXXXX',
357 # 'ClientID': 'XXXXXX',
358 # 'SessionToken': 'XXXXXXXXX',
359 # 'SessionResp': session response from redfish login
360 # }]
361
362 # SessionIDs : Session IDs
363 # ClientID : Client ID
364 # SessionToken : Session token
365 # SessionResp : Response of creating an redfish login session
366
367 FOR ${session_record} IN @{session_info_list}
368 Verify Redfish Session Deleted ${session_record}
369 END
370
371
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500372Redfish Post Acquire Lock
373 [Documentation] Acquire and release lock.
374 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600375
376 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500377 # lock_type Read lock or Write lock.
378 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600379
Sushil Singhe33c6e62020-09-29 06:34:35 -0500380 ${lock_dict_param}= Form Data To Acquire Lock ${lock_type}
381 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500382 Should Be Equal As Strings ${resp.status_code} ${status_code}
383 ${resp}= Return Description Of Response ${resp.content}
Vijaybc331e22020-02-27 04:17:37 -0600384
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500385 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600386
387
Sushil Singh977f8f52020-11-20 06:32:50 -0600388Redfish Post Acquire List Lock
389 [Documentation] Acquire and release lock.
390 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
391
392 # Description of argument(s):
393 # lock_type Read lock or Write lock.
394 # status_code HTTP status code.
395
396 ${lock_dict_param}= Create Data To Acquire List Of Lock ${lock_type}
397 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
398 Should Be Equal As Strings ${resp.status_code} ${status_code}
399
400 [Return] ${resp}
401
402
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500403Redfish Post Acquire Invalid Lock
404 [Documentation] Redfish to post request to acquire in-valid lock.
405 [Arguments] ${lock_type} ${message} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600406
407 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500408 # lock_type Read lock or Write lock.
409 # message Return message from URI.
410 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600411
Sushil Singhe33c6e62020-09-29 06:34:35 -0500412 ${lock_dict_param}= Form Data To Acquire Invalid Lock ${lock_type}
413 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500414 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600415 Run Keyword If '${message}' != '${EMPTY}'
416 ... Valid Value message ['${resp.content}']
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500417
418 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600419
420
Sushil Singhe33c6e62020-09-29 06:34:35 -0500421Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
422 [Documentation] Redfish to post request to acquire in-valid lock with invalid data type of resource id.
423 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
424
425 # Description of argument(s):
426 # lock_type Read lock or Write lock.
427 # status_code HTTP status code.
428
429 ${lock_dict_param}= Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID ${lock_type}
430 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
431 Should Be Equal As Strings ${resp.status_code} ${status_code}
432
433 [Return] ${resp}
434
435
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500436Form Data To Acquire Lock
437 [Documentation] Create a dictionay for lock request.
438 [Arguments] ${lock_type}
439
440 # Description of argument(s):
441 # lock_type Read lock or Write lock.
442
443 ${lock_res_info}= Get Lock Resource Information
444 ${resp}= RW General Dictionary
445 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
446 ... ${lock_res_info["Valid Case"]["ResourceID"]}
447 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500448 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500449
Sushil Singhe33c6e62020-09-29 06:34:35 -0500450 [Return] ${lock_request_dict}
451
452
Sushil Singh977f8f52020-11-20 06:32:50 -0600453Create Data To Acquire List Of Lock
454 [Documentation] Create a dictionay for list of lock request.
455 [Arguments] ${lock_type_list}
456
457 # Description of argument(s):
458 # lock_type Read lock or Write lock.
459
460 ${temp_list}= Create List
461 ${lock_res_info}= Get Lock Resource Information
462
463 FOR ${lock_type} IN @{lock_type_list}
464 ${resp}= RW General Dictionary
465 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
466 ... ${lock_res_info["Valid Case"]["ResourceID"]}
467 Append To List ${temp_list} ${resp}
468 END
469
470 ${lock_request_dict}= Create Dictionary Request=${temp_list}
471
472 [Return] ${lock_request_dict}
473
474
Sushil Singhe33c6e62020-09-29 06:34:35 -0500475Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID
476 [Documentation] Create a dictionay for in-valid lock request.
477 [Arguments] ${lock_type}
478
479 # Description of argument(s):
480 # lock_type Read lock or Write lock.
481
482 ${lock_res_info}= Get Lock Resource Information
483 ${resp}= RW General Dictionary
484 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
485 ... ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]}
486 ${temp_list}= Create List ${resp}
487 ${lock_request_dict}= Create Dictionary Request=${temp_list}
488
489 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500490
491
492Form Data To Acquire Invalid Lock
493 [Documentation] Create a dictionay for in-valid lock request.
494 [Arguments] ${lock_type}
495
496 # Description of argument(s):
497 # lock_type Read lock or Write lock.
498
499 ${lock_res_info}= Get Lock Resource Information
500 ${resp}= RW General Dictionary
501 ... ${lock_res_info["Invalid Case"]["${lock_type}"]}
502 ... ${lock_res_info["Valid Case"]["ResourceID"]}
503 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500504 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500505
Sushil Singhe33c6e62020-09-29 06:34:35 -0500506 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500507
508
509Get Locks List On Resource
Vijaybc331e22020-02-27 04:17:37 -0600510 [Documentation] Get locks list.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500511 [Arguments] ${session_info} ${exp_status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600512
513 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500514 # session_info Session information in dict.
515 # exp_status_code Expected HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600516
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500517 ${data}= Set Variable {"SessionIDs": ["${session_info['SessionIDs']}"]}
George Keishing566daaf2020-07-02 06:18:50 -0500518 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
519 ... data=${data}
Vijaybc331e22020-02-27 04:17:37 -0600520 ${locks}= Evaluate json.loads('''${resp.text}''') json
521
522 [Return] ${locks["Records"]}
523
524
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500525Verify Lock On Resource
526 [Documentation] Verify lock on resource.
527 [Arguments] ${session_info} ${transaction_id}
Vijaybc331e22020-02-27 04:17:37 -0600528
529 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500530 # session_info Session information in dict.
531 # transaction_id Transaction id in list stored in dict.
Vijaybc331e22020-02-27 04:17:37 -0600532
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500533 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']}
534 Rprint Vars sessions
535 ${lock_list}= Get Locks List On Resource ${session_info}
536 ${lock_length}= Get Length ${lock_list}
537 ${tran_id_length}= Get Length ${transaction_id}
538 Should Be Equal As Integers ${tran_id_length} ${lock_length}
Vijayafdd2a12020-04-09 02:03:20 -0500539
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500540 FOR ${tran_id} ${lock} IN ZIP ${transaction_id} ${lock_list}
541 Valid Value session_info['ClientID'] ['${lock['HMCID']}']
542 Valid Value session_info['SessionIDs'] ['${lock['SessionID']}']
543 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock['TransactionID']}
Vijaybc331e22020-02-27 04:17:37 -0600544 END
545
Vijaybc331e22020-02-27 04:17:37 -0600546
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500547Acquire Lock On Resource
548 [Documentation] Acquire lock on resource.
549 [Arguments] ${client_id} ${lock_type} ${reboot_flag}=False
Vijaybc331e22020-02-27 04:17:37 -0600550
551 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500552 # client_id This client id can contain string value
553 # (e.g. 12345, "HMCID").
554 # lock_type Read lock or Write lock.
555 # reboot_flag Flag is used to run reboot the BMC code.
556 # (e.g. True or False).
Vijaybc331e22020-02-27 04:17:37 -0600557
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500558 ${trans_id_list}= Create List
559 ${session_info}= Create Redfish Session With ClientID ${client_id}
560 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
561 Append To List ${trans_id_list} ${trans_id}
562 Verify Lock On Resource ${session_info} ${trans_id_list}
George Keishing566daaf2020-07-02 06:18:50 -0500563
Sushil Singhe33c6e62020-09-29 06:34:35 -0500564 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
Vijaybc331e22020-02-27 04:17:37 -0600565
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500566 Run Keyword If '${reboot_flag}' == 'True'
567 ... Run Keywords Redfish OBMC Reboot (off) AND
568 ... Redfish Login AND
Sushil Singhe33c6e62020-09-29 06:34:35 -0500569 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500570 ... Verify Lock On Resource ${session_info} ${trans_id_list} AND
571 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600572
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500573 Run Keyword If '${reboot_flag}' == 'False'
574 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600575
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500576 ${trans_id_emptylist}= Create List
577 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
578 Redfish Delete Session ${session_info}
Vijaybc331e22020-02-27 04:17:37 -0600579
Vijaybc331e22020-02-27 04:17:37 -0600580
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500581Form Data To Release Lock
582 [Documentation] Create a dictonay to release lock.
583 [Arguments] ${trans_id_list}
Vijay355daac2020-03-26 12:06:08 -0500584
585 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500586 # trans_id_list
Vijay355daac2020-03-26 12:06:08 -0500587
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500588 @{tran_ids}= Create List
Vijay355daac2020-03-26 12:06:08 -0500589
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500590 FOR ${item} IN @{trans_id_list}
591 Append To List ${tran_ids} ${item['TransactionID']}
592 END
593
594 [Return] ${tran_ids}
595
596
597Release Locks On Resource
598 [Documentation] Redfish request to release a lock.
599 [Arguments] ${session_info} ${trans_id_list} ${release_lock_type}=Transaction ${status_code}=${HTTP_OK}
600
601 # Description of argument(s):
602 # session_info Session information in dict.
603 # trans_id_list Transaction id list.
604 # release_lock_type Release lock by Transaction, Session.
605 # status_code HTTP status code.
606
607 ${tran_ids}= Form Data To Release Lock ${trans_id_list}
608 ${data}= Set Variable {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}}
609 ${data}= Evaluate json.dumps(${data}) json
610 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock data=${data}
611 Should Be Equal As Strings ${resp.status_code} ${status_code}
612
613
614Acquire Lock On Another Lock
615 [Documentation] Acquire lock on another lock.
616 [Arguments] ${client_id}
617
618 # Description of argument(s):
619 # client_id This client id can contain string value
620 # (e.g. 12345, "HMCID").
621
622 ${trans_id_list}= Create List
623 ${session_info}= Create Redfish Session With ClientID ${client_id}
624
625 ${trans_id}= Redfish Post Acquire Lock ReadCase1
626 Append To List ${trans_id_list} ${trans_id}
627
628 ${trans_id}= Redfish Post Acquire Lock ReadCase1
629 Append To List ${trans_id_list} ${trans_id}
630
631 Verify Lock On Resource ${session_info} ${trans_id_list}
632 Release Locks On Resource ${session_info} ${trans_id_list}
633
634 ${trans_id_emptylist}= Create List
635 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
636 Redfish Delete Session ${session_info}
637
638
Sushil Singh977f8f52020-11-20 06:32:50 -0600639Verify Fail To Acquire Read And Write In Single Request
640 [Documentation] Verify fail to acquire read and write lock passed in single request.
641 [Arguments] ${client_id} ${lock_type}
642
643 # Description of argument(s):
644 # client_id This client id can contain string value
645 # (e.g. 12345, "HMCID").
646 # lock_type Read lock or Write lock.
647
648 ${lock_type_list}= Split String ${lock_type} ,
649
650 ${session_info}= Create Redfish Session With ClientID ${client_id}
651 ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list} status_code=${HTTP_BAD_REQUEST}
652 Redfish Delete Session ${session_info}
653
654
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500655Verify Empty Lock Records For Invalid Session
656 [Documentation] Verify no lock record found for invalid session.
657 [Arguments] ${client_id}
658
659 # Description of argument(s):
660 # client_id This client id can contain string value
661 # (e.g. 12345, "HMCID").
662
663 ${session_info1}= Create Redfish Session With ClientID ${client_id}
664
665 ${lock_list1}= Get Locks List On Resource ${session_info1}
666 ${lock_length1}= Get Length ${lock_list1}
667
668 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
669 set to dictionary ${session_info2} SessionIDs xxyXyyYZZz
670
671 ${lock_list2}= Get Locks List On Resource ${session_info2}
Sushil Singhf9a536c2020-11-09 07:33:17 -0600672 ${lock_length2}= Get Length ${lock_list2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500673
Sushil Singhf9a536c2020-11-09 07:33:17 -0600674 Should Be Equal As Integers ${lock_length1} ${lock_length2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500675
676 Redfish Delete Session ${session_info1}
677
678
679Verify Acquire Lock Fails On Another Lock
680 [Documentation] Verify acquire lock on another lock fails.
681 [Arguments] ${client_id} ${lock_type}
682
683 # Description of argument(s):
684 # client_id This client id can contain string value
685 # (e.g. 12345, "HMCID").
686 # lock_type Read lock or Write lock.
687
688 @{lock_type_list}= Split String ${lock_type} ,
689 ${session_info}= Create Redfish Session With ClientID ${client_id}
690 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
691
692 ${trans_id_list}= Create List
693 Append To List ${trans_id_list} ${trans_id}
694
695 Verify Lock On Resource ${session_info} ${trans_id_list}
696 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
697 Release Locks On Resource ${session_info} ${trans_id_list}
698
699 ${trans_id_emptylist}= Create List
700 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
701
702 Redfish Delete Session ${session_info}
703
704
Sushil Singhe33c6e62020-09-29 06:34:35 -0500705Verify Acquire Lock After Reboot
706 [Documentation] Acquire read and write lock after the reboot and release lock.
707 [Arguments] ${client_id} ${lock_type}
708
709 # Description of argument(s):
710 # client_id This client id can contain string value
711 # (e.g. 12345, "HMCID").
712 # lock_type Read lock or Write lock.
713
714 ${trans_id_list}= Create List
Sushil Singhf9a536c2020-11-09 07:33:17 -0600715 ${session_info}= Create Session With ClientID ${client_id}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500716 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
717 Redfish OBMC Reboot (off)
718 Redfish Login
719 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token}
720
721 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
722 Append To List ${trans_id_list} ${trans_id}
723 Verify Lock On Resource ${session_info} ${trans_id_list}
724 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
725
726 ${trans_id_emptylist}= Create List
727 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
728 Redfish Delete Session ${session_info}
729
730
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500731Verify Acquire And Release Lock In Loop
732 [Documentation] Acquire lock in loop.
733 [Arguments] ${client_id} ${lock_type}
734
735 # Description of argument(s):
736 # client_id This client id can contain string value
737 # (e.g. 12345, "HMCID").
738 # lock_type Read lock or Write lock.
739
740 FOR ${count} IN RANGE 1 11
741 ${trans_id_list}= Create List
742 ${session_info}= Create Redfish Session With ClientID ${client_id}
743 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
744 Append To List ${trans_id_list} ${trans_id}
745 Verify Lock On Resource ${session_info} ${trans_id_list}
746 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
747 ${trans_id_emptylist}= Create List
748 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
749 END
750
751 Redfish Delete Session ${session_info}
752
753
754Acquire And Release Multiple Locks
755 [Documentation] Acquire mutilple locks on resource.
756 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
757
758 # Description of argument(s):
759 # client_id This client id can contain string value
760 # (e.g. 12345, "HMCID").
761 # lock_type Read lock or Write lock.
762 # release_lock_type The value can be Transaction or Session.
763
764 @{lock_type_list}= Split String ${lock_type} ,
765 ${session_info}= Create Redfish Session With ClientID ${client_id}
766 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
767
768 ${trans_id_list}= Create List
769
770 Append To List ${trans_id_list} ${trans_id}
771 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
772
773 Append To List ${trans_id_list} ${trans_id}
774 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
775
776 Append To List ${trans_id_list} ${trans_id}
777 Verify Lock On Resource ${session_info} ${trans_id_list}
778 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type}
779
780 ${trans_id_emptylist}= Create List
781 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
782 Redfish Delete Session ${session_info}
783
784
785Verify Invalid Locks Fail To Release
786 [Documentation] Verify invalid locks fails to be released.
787 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
788
789 # Description of argument(s):
790 # client_id This client id can contain string value
791 # (e.g. 12345, "HMCID").
792 # lock_type Read lock or Write lock.
793 # release_lock_type The value can be Transaction or Session.
794
795 ${trans_id_list}= Create List
796 @{lock_type_list}= Split String ${lock_type} ,
797
798 ${session_info}= Create Redfish Session With ClientID ${client_id}
799
800 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
801 ${value}= Get From Dictionary ${trans_id} TransactionID
802 ${value}= Evaluate ${value} + 10
803 Set To Dictionary ${trans_id} TransactionID ${value}
804 Append To List ${trans_id_list} ${trans_id}
805
806 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
807 ${value}= Get From Dictionary ${trans_id} TransactionID
808 ${value}= Evaluate ${value} + 10
809 Set To Dictionary ${trans_id} TransactionID ${value}
810 Append To List ${trans_id_list} ${trans_id}
811
812 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
813 ${value}= Get From Dictionary ${trans_id} TransactionID
814 ${value}= Evaluate ${value} + 10
815 Set To Dictionary ${trans_id} TransactionID ${value}
816 Append To List ${trans_id_list} ${trans_id}
817
818 Release Locks On Resource
819 ... ${session_info} ${trans_id_list}
820 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
821 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
822
823 ${trans_id_emptylist}= Create List
824 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
825 Redfish Delete Session ${session_info}
826
827
828Verify Fail To Release Lock For Another Session
829 [Documentation] Verify failed to release the lock form another session.
830 [Arguments] ${client_id} ${lock_type}
831
832 # Description of argument(s):
833 # client_id This client id can contain string value
834 # (e.g. 12345, "HMCID").
835 # lock_type Read lock or Write lock.
836
837 ${client_ids}= Split String ${client_id} ,
838 ${lock_type_list}= Split String ${lock_type} ,
839 ${trans_id_list1}= Create List
840 ${trans_id_list2}= Create List
841
842 ${session_info1}= Create Redfish Session With ClientID ${client_ids}[0]
843
844 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
845 Append To List ${trans_id_list1} ${trans_id}
846 Verify Lock On Resource ${session_info1} ${trans_id_list1}
847
848 ${session_info2}= Create Redfish Session With ClientID ${client_ids}[1]
849 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
850 Append To List ${trans_id_list2} ${trans_id}
851 Verify Lock On Resource ${session_info2} ${trans_id_list2}
852
853 Release Locks On Resource
854 ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED}
855 Verify Lock On Resource ${session_info1} ${trans_id_list1}
856 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session
857 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session
858 Redfish Delete Session ${session_info1}
859 Redfish Delete Session ${session_info2}
860
861
Sushil Singhe33c6e62020-09-29 06:34:35 -0500862Verify Fail To Acquire Lock For Invalid Resource ID Data Type
863 [Documentation] Verify fail to acquire the lock with invalid resource id data type.
864 [Arguments] ${client_id} ${lock_type}
865
866 # Description of argument(s):
867 # client_id This client id can contain string value
868 # (e.g. 12345, "HMCID").
869 # lock_type Read lock or Write lock.
870
871 ${session_info}= Create Redfish Session With ClientID ${client_id}
872 Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
873 ... ${lock_type} status_code=${HTTP_BAD_REQUEST}
874 Redfish Delete Session ${session_info}
875
876
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500877Verify Fail To Acquire Lock For Invalid Lock Data
Sushil Singhe33c6e62020-09-29 06:34:35 -0500878 [Documentation] Verify fail to acquired lock with invalid lock types, lock flags, segement flags.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500879 [Arguments] ${client_id} ${lock_type} ${message}
880
881 # Description of argument(s):
882 # client_id This client id can contain string value
883 # (e.g. 12345, "HMCID").
884 # lock_type Read lock or Write lock.
885 # message Return message from URI.
886
887 ${session_info}= Create Redfish Session With ClientID ${client_id}
888 ${trans_id}= Redfish Post Acquire Invalid Lock ${lock_type} message=${message} status_code=${HTTP_BAD_REQUEST}
889 Redfish Delete Session ${session_info}
Sushil Singhbace3002020-10-08 08:12:58 -0500890
891
892Verify No Locks Records For Session With No Acquired Lock
893 [Documentation] Verify no records found for a session where no lock is acquired.
894 [Arguments] ${client_id}
895
896 # Description of argument(s):
897 # client_id This client id can contain string value
898 # (e.g. 12345, "HMCID").
899
900 ${session_info}= Create Redfish Session With ClientID ${client_id}
901 ${trans_id_emptylist}= Create List
902 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
903 Redfish Delete Session ${session_info}
Sushil Singh728ef9c2020-10-28 04:25:39 -0500904
905
906Create List Of Session ID
907 [Documentation] Create session id list from session dict info.
908 [Arguments] ${session_dict_info}
909
910 # Description of argument(s):
911 # session_dict_info Session information in dict.
912
913 @{session_id_list}= Create List
914
915 FOR ${session} IN @{session_dict_info}
916 Append To List ${session_id_list} ${session["SessionIDs"]}
917 END
918
919 ${num_id}= Get Length ${session_id_list}
920 Should Not Be Equal As Integers ${num_id} ${0}
921
922 ${session_id_list}= Evaluate json.dumps(${session_id_list}) json
923
924 [Return] ${session_id_list}
925
926
927Get Locks List On Resource With Session List
928 [Documentation] Get locks list from session of list.
929 [Arguments] ${session_id_list} ${exp_status_code}=${HTTP_OK}
930
931 # Description of argument(s):
932 # session_id_list Session ids list.
933 # exp_status_code Expected HTTP status code.
934
935 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
936 ... data={"SessionIDs": ${session_id_list}}
937 ${locks}= Evaluate json.loads('''${resp.text}''') json
938
939 [Return] ${locks}
940
941
942Verify List Of Session Lock On Resource
943 [Documentation] Verify list of lock record from list of sessions.
944 [Arguments] ${session_dict_info} ${transaction_id_list}
945
946 # Description of argument(s):
947 # session_dict_info Session information in dict.
948 # transaction_id_list Transaction id in list stored in dict.
949
950 ${session_id_list}= Create List Of Session ID ${session_dict_info}
951 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
952 ${lock_list}= Set Variable ${lock_list_resp['Records']}
953
954 FOR ${session_id} ${tran_id} ${lock_record} IN ZIP ${session_dict_info} ${transaction_id_list} ${lock_list}
955 Valid Value session_id['SessionIDs'] ['${lock_record['SessionID']}']
956 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock_record['TransactionID']}
957 END
958
959
960Verify Lock Records Of Multiple Session
961 [Documentation] Verify all records found for a multiple sessions.
962 [Arguments] ${client_ids} ${lock_type}
963
964 # Description of argument(s):
965 # client_ids This client id can contain string value
966 # (e.g. 12345, "HMCID").
967 # lock_type Read lock or Write lock.
968
969 ${client_id_list}= Split String ${client_ids} ,
970 ${lock_type_list}= Split String ${lock_type} ,
971 ${trans_id_list1}= Create List
972 ${trans_id_list2}= Create List
973
974 ${session_dict_list}= Create List
975 ${lock_list}= Create List
976
977 ${client_id1}= Create List
978 Append To List ${client_id1} ${client_id_list}[0]
979 ${session_info1}= Create Session With List Of ClientID ${client_id1}
980 Append To List ${session_dict_list} ${session_info1}[0]
981 Verify A Session Created With ClientID ${client_id1} ${session_info1}
982
983 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
984 Append To List ${trans_id_list1} ${trans_id}
985 Append To List ${lock_list} ${trans_id}
986 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
987
988
989 ${client_id2}= Create List
990 Append To List ${client_id2} ${client_id_list}[1]
991 ${session_info2}= Create Session With List Of ClientID ${client_id2}
992 Append To List ${session_dict_list} ${session_info2}[0]
993 Verify A Session Created With ClientID ${client_id2} ${session_info2}
994
995 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
996 Append To List ${trans_id_list2} ${trans_id}
997 Append To List ${lock_list} ${trans_id}
998 Verify Lock On Resource ${session_info2}[0] ${trans_id_list2}
999
1000 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1001
1002 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1003 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1004
1005 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1006
1007 ${session_token}= Get From Dictionary ${session_info2}[0] SessionToken
1008 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1009
1010 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Transaction
1011
1012 ${trans_id_emptylist}= Create List
1013 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1014 Verify Lock On Resource ${session_info2}[0] ${trans_id_emptylist}
1015
1016 Redfish Delete List Of Session ${session_dict_list}
Sushil Singhf9a536c2020-11-09 07:33:17 -06001017
1018
1019Verify Lock Records For Multiple Invalid Session
1020 [Documentation] Verify no lock record found for multiple invalid session.
1021 [Arguments] ${client_id}
1022
1023 # Description of argument(s):
1024 # client_id This client id can contain string value
1025 # (e.g. 12345, "HMCID").
1026
1027 ${session_dict_list}= Create List
1028 ${invalid_session_ids}= Create List xxyXyyYZZz xXyXYyYZzz
1029
1030 ${session_info1}= Create Session With ClientID ${client_id}
1031
1032 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1033 set to dictionary ${session_info2} SessionIDs ${invalid_session_ids}[0]
1034 Append To List ${session_dict_list} ${session_info2}
1035
1036 ${session_info3}= Copy Dictionary ${session_info1} deepcopy=True
1037 set to dictionary ${session_info3} SessionIDs ${invalid_session_ids}[0]
1038 Append To List ${session_dict_list} ${session_info3}
1039
1040 ${lock_list1}= Get Locks List On Resource ${session_info1}
1041 ${lock_length1}= Get Length ${lock_list1}
1042
1043 ${session_id_list}= Create List Of Session ID ${session_dict_list}
1044 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
1045 ${lock_length2}= Get Length ${lock_list_resp['Records']}
1046
1047 Should Be Equal As Integers ${lock_length1} ${lock_length2}
1048
1049 Redfish Delete Session ${session_info1}
Sushil Singh11949a22020-11-13 06:12:16 -06001050
1051
1052Verify Lock Records For Multiple Invalid And Valid Session
1053 [Documentation] Verify all records found for a valid and invalid sessions.
1054 [Arguments] ${client_ids} ${lock_type}
1055
1056 # Description of argument(s):
1057 # client_ids This client id can contain string value
1058 # (e.g. 12345, "HMCID").
1059 # lock_type Read lock or Write lock.
1060
1061 ${client_id_list}= Split String ${client_ids} ,
1062 ${lock_type_list}= Split String ${lock_type} ,
1063 ${trans_id_list1}= Create List
1064 ${invalid_session_ids}= Create List xxyXyyYZZz
1065
1066 ${session_dict_list}= Create List
1067 ${lock_list}= Create List
1068
1069 ${client_id1}= Create List
1070 Append To List ${client_id1} ${client_id_list}[0]
1071 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1072 Append To List ${session_dict_list} ${session_info1}[0]
1073 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1074
1075 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1076 Append To List ${trans_id_list1} ${trans_id}
1077 Append To List ${lock_list} ${trans_id}
1078 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1079
1080 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1081 set to dictionary ${session_info2}[0] SessionIDs ${invalid_session_ids}[0]
1082 Append To List ${session_dict_list} ${session_info2}[0]
1083
1084 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1085
1086 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1087 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1088
1089 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1090
1091 ${trans_id_emptylist}= Create List
1092 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1093
1094 Redfish Delete Session ${session_info1}[0]