blob: 50a2132de696b42c3fe2165fab94d661b99b06b3 [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
Sushil Singhdf390b62021-01-19 00:50:05 -060013Suite Teardown Run Keyword And Ignore Error Delete All Redfish Sessions
Sushil Singhd03f2ce2020-09-17 08:54:41 -050014Test 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 Singhdf390b62021-01-19 00:50:05 -0600109Acquire Multiple Lock Request At CEC Level
110 [Documentation] Acquire write lock on read lock under CEC level.
111 [Tags] Acquire_Multiple_Lock_Request_At_CEC_Level
112 [Template] Verify Acquire Multiple Lock Request At CEC Level
113
114 # client_id lock_type
115 HMCID-01 ReadCase4,WriteCase4
116 HMCID-01 WriteCase5,ReadCase5
117 HMCID-01 ReadCase6,WriteCase6
118 HMCID-01 WriteCase7,ReadCase7
119
120
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500121Verify Release Of Valid Locks
122 [Documentation] Release all valid locks.
123 [Tags] Verify_Release_Of_Valid_Locks
124 [Template] Acquire And Release Multiple Locks
Vijayafdd2a12020-04-09 02:03:20 -0500125
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500126 # client_id lock_type release_lock_type
127 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction
128 HMCID-02 ReadCase1,ReadCase1,ReadCase1 Session
Vijayafdd2a12020-04-09 02:03:20 -0500129
130
Sushil Singh59011d02021-01-27 23:00:20 -0600131Fail To Release Lock With Invalid TransactionID
132 [Documentation] Fail to release lock with invalid transaction id.
133 [Tags] Fail_To_Release_Lock_With_Invalid_TransactionID
134 [Template] Verify Fail To Release Lock With Invalid TransactionID
135
136 # client_id lock_type release_lock_type
137 HMCID-01 ReadCase1 Transaction
138
139
Sushil Singh1b590532021-01-20 05:13:54 -0600140Fail To Release Multiple Lock With Invalid TransactionID
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500141 [Documentation] Release in-valid lock result in fail.
Sushil Singh1b590532021-01-20 05:13:54 -0600142 [Tags] Fail_To_Release_Multiple_Lock_With_Invalid_TransactionID
143 [Template] Verify Fail To Release Multiple Lock With Invalid TransactionID
Vijayafdd2a12020-04-09 02:03:20 -0500144
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500145 # client_id lock_type release_lock_type
146 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction
147 12345 ReadCase2,ReadCase2,ReadCase2 Transaction
148 HMCID ReadCase3,ReadCase3,ReadCase3 Transaction
Vijayafdd2a12020-04-09 02:03:20 -0500149
150
Sushil Singh8bee3582021-01-27 23:46:48 -0600151Fail To Release Multiple Lock With Valid And Invalid TransactionID
152 [Documentation] Release multiple lock with valid and invalid trasaction.
153 [Tags] Fail_To_Release_Multiple_Lock_With_Valid_And_Invalid_TransactionID
154 [Template] Verify Fail To Release Multiple Lock With Valid And Invalid TransactionID
155
156 # client_id lock_type release_lock_type
157 HMCID-01 ReadCase1,ReadCase1 Transaction
158
159
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500160Fail To Release Lock For Another Session
161 [Documentation] Failed to release locks from another session.
162 [Tags] Fail_To_Release_Lock_For_Another_Session
163 [Template] Verify Fail To Release Lock For Another Session
Vijayafdd2a12020-04-09 02:03:20 -0500164
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500165 # client_id lock_type
166 HMCID-01,HMCID-02 ReadCase1,ReadCase1
Vijayafdd2a12020-04-09 02:03:20 -0500167
168
Sushil Singhe33c6e62020-09-29 06:34:35 -0500169Test Invalid Resource ID Data Type Locking
170 [Documentation] Failed to acquire lock for invalid resource id data type.
171 [Tags] Test_Invalid_Resource_ID_Data_Type_Locking
172 [Template] Verify Fail To Acquire Lock For Invalid Resource ID Data Type
173
174 # client_id lock_type
175 HMCID-01 ReadCase1
176 HMCID-01 ReadCase2
177 HMCID-01 ReadCase3
178 HMCID-01 WriteCase1
179 HMCID-01 WriteCase2
180 HMCID-01 WriteCase3
181
182
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500183Fail To Acquire Lock For Invalid Lock Type
184 [Documentation] Failed to acquire read, write lock for invalid lock data passed.
185 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Type
186 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500187
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500188 # client_id lock_type message
189 HMCID-01 ReadCase1 ${BAD_REQUEST}
190 HMCID-01 ReadCase2 ${BAD_REQUEST}
191 HMCID-01 ReadCase3 ${BAD_REQUEST}
192 HMCID-01 ReadCase4 ${BAD_REQUEST}
193 HMCID-01 ReadCase5 ${BAD_REQUEST}
194 HMCID-01 WriteCase1 ${BAD_REQUEST}
195 HMCID-01 WriteCase2 ${BAD_REQUEST}
196 HMCID-01 WriteCase3 ${BAD_REQUEST}
197 HMCID-01 WriteCase4 ${BAD_REQUEST}
198 HMCID-01 WriteCase5 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500199
Vijayafdd2a12020-04-09 02:03:20 -0500200
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500201Fail To Acquire Lock For Invalid Lock Flag
202 [Documentation] Failed to acquire read write lock for invalid lock flag passed.
203 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Flag
204 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500205
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500206 # client_id lock_type message
207 HMCID-01 ReadCase6 ${BAD_REQUEST}
208 HMCID-01 ReadCase7 ${BAD_REQUEST}
209 HMCID-01 ReadCase8 ${BAD_REQUEST}
210 HMCID-01 ReadCase9 ${BAD_REQUEST}
211 HMCID-01 ReadCase10 ${BAD_REQUEST}
212 HMCID-01 ReadCase11 ${BAD_REQUEST}
213 HMCID-01 WriteCase6 ${BAD_REQUEST}
214 HMCID-01 WriteCase7 ${BAD_REQUEST}
215 HMCID-01 WriteCase8 ${BAD_REQUEST}
216 HMCID-01 WriteCase9 ${BAD_REQUEST}
217 HMCID-01 WriteCase10 ${BAD_REQUEST}
218 HMCID-01 WriteCase11 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500219
Vijayafdd2a12020-04-09 02:03:20 -0500220
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500221Fail To Acquire Lock For Invalid Segment Flag
222 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
223 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Flag
224 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
225
226 # client_id lock_type message
227 HMCID-01 ReadCase12 ${BAD_REQUEST}
228 HMCID-01 ReadCase13 ${BAD_REQUEST}
229 HMCID-01 ReadCase14 ${BAD_REQUEST}
230 HMCID-01 WriteCase12 ${BAD_REQUEST}
231 HMCID-01 WriteCase13 ${BAD_REQUEST}
232 HMCID-01 WriteCase14 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500233
Sushil Singhbace3002020-10-08 08:12:58 -0500234
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600235Fail To Acquire Lock For Invalid Segment Data Type Flag
236 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
237 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Data_Type_Flag
238 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
239
240 # client_id lock_type message
241 HMCID-01 ReadCase15 ${EMPTY}
242 HMCID-01 ReadCase16 ${EMPTY}
243 HMCID-01 ReadCase17 ${EMPTY}
244 HMCID-01 ReadCase18 ${EMPTY}
245 HMCID-01 WriteCase15 ${EMPTY}
246 HMCID-01 WriteCase16 ${EMPTY}
247 HMCID-01 WriteCase17 ${EMPTY}
248 HMCID-01 WriteCase18 ${EMPTY}
249
250
Sushil Singhbace3002020-10-08 08:12:58 -0500251Get Empty Lock Records For Session Where No Locks Acquired
252 [Documentation] If session does not acquire locks then get lock should return
253 ... empty lock records.
254 [Tags] Get_Empty_Lock_Records_For_Session_Where_No_Locks_Acquired
255 [Template] Verify No Locks Records For Session With No Acquired Lock
256
257 # client_id
258 HMCID-01
259
Sushil Singh728ef9c2020-10-28 04:25:39 -0500260
Sushil Singhf9a536c2020-11-09 07:33:17 -0600261Get Lock Records Empty For Invalid Session
262 [Documentation] Record of lock list is empty for invalid session.
263 [Tags] Get_Lock_Records_Empty_For_Invalid_Session
264 [Template] Verify Empty Lock Records For Invalid Session
265
266 # client_id
267 HMCID-01
268
269
Sushil Singh728ef9c2020-10-28 04:25:39 -0500270Get Lock Records For Multiple Session
271 [Documentation] Get lock records of multiple session.
272 [Tags] Get_Lock_Records_For_Multiple_Session
273 [Template] Verify Lock Records Of Multiple Session
274
275 # client_ids lock_type
276 HMCID-01,HMCID-02 ReadCase1,ReadCase1
277
278
Sushil Singhf9a536c2020-11-09 07:33:17 -0600279Get Lock Records For Multiple Invalid Session
280 [Documentation] Record of lock list is empty for list of invalid session.
281 [Tags] Get_Lock_Records_For_Multiple_Invalid_Session
282 [Template] Verify Lock Records For Multiple Invalid Session
283
284 # client_id
285 HMCID-01
286
Sushil Singh11949a22020-11-13 06:12:16 -0600287
288Get Lock Records For Multiple Invalid And Valid Session
289 [Documentation] Get record of lock from invalid and valid session.
290 [Tags] Get_Lock_Records_For_Multiple_Invalid_And_Valid_Session
291 [Template] Verify Lock Records For Multiple Invalid And Valid Session
292
293 # client_id lock_type
294 HMCID-01,HMCID-02 ReadCase1
295
Vijaybc331e22020-02-27 04:17:37 -0600296*** Keywords ***
297
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500298Create Redfish Session With ClientID
299 [Documentation] Create redifish session with client id.
300 [Arguments] ${client_id}
Vijay85610ee2020-04-03 05:30:28 -0500301
302 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500303 # client_id This client id can contain string value
304 # (e.g. 12345, "HMCID").
Vijay85610ee2020-04-03 05:30:28 -0500305
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500306 ${session_info}= Create Dictionary
307 ${session}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
Vijay85610ee2020-04-03 05:30:28 -0500308
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500309 Set To Dictionary ${session_info} SessionIDs ${session['Id']}
310 Set To Dictionary ${session_info} ClientID ${session["Oem"]["OpenBMC"]["ClientID"]}
Vijay85610ee2020-04-03 05:30:28 -0500311
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500312 [Return] ${session_info}
Vijay85610ee2020-04-03 05:30:28 -0500313
314
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500315RW General Dictionary
George Keishing16b3c7b2021-01-28 09:23:37 -0600316 [Documentation] Create dictionary of lock request.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500317 [Arguments] ${read_case} ${res_id}
Vijaybc331e22020-02-27 04:17:37 -0600318
319 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500320 # read_case Read or Write lock type.
321 # res_id Resource id.
Vijaybc331e22020-02-27 04:17:37 -0600322
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500323 ${request_dict}= Create Dictionary
George Keishing566daaf2020-07-02 06:18:50 -0500324
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500325 FOR ${key} IN @{read_case.keys()}
326 Set To Dictionary ${request_dict} LockType ${key}
327 Set To Dictionary ${request_dict} SegmentFlags ${read_case["${key}"]}
328 END
Vijaybc331e22020-02-27 04:17:37 -0600329
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500330 Set To Dictionary ${request_dict} ResourceID ${res_id}
331
332 [Return] ${request_dict}
Vijaybc331e22020-02-27 04:17:37 -0600333
334
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500335Return Description Of Response
336 [Documentation] Return description of REST response.
Vijaybc331e22020-02-27 04:17:37 -0600337 [Arguments] ${resp_text}
338
339 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500340 # resp_text REST response body.
Vijaybc331e22020-02-27 04:17:37 -0600341
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500342 # resp_text after successful partition file upload looks like:
343 # {
344 # "Description": "File Created"
345 # }
Vijaybc331e22020-02-27 04:17:37 -0600346
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500347 ${message}= Evaluate json.loads('''${resp_text}''') json
348
349 [Return] ${message}
Vijaybc331e22020-02-27 04:17:37 -0600350
351
Sushil Singha7d71f02020-11-02 05:24:22 -0600352Verify Redfish Session Deleted
353 [Documentation] Verify the redfish session is deleted.
354 [Arguments] ${session_info}
355
356 # Description of argument(s):
357 # session_info Session information are stored in dictionary.
358
359 # ${session_info} = {
360 # 'SessionIDs': 'XXXXXXXXX',
361 # 'ClientID': 'XXXXXX',
362 # 'SessionToken': 'XXXXXXXXX',
363 # 'SessionResp': session response from redfish login
364 # }
365
366 # SessionIDs : Session IDs
367 # ClientID : Client ID
368 # SessionToken : Session token
369 # SessionResp : Response of creating an redfish login session
370
371 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions
372
373 FOR ${session} IN @{sessions['Members']}
374 Should Not Be Equal As Strings session ['/redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]}']
375 END
376
377
378Verify Redfish List Of Session Deleted
379 [Documentation] Verify all the list of redfish session is deleted.
380 [Arguments] ${session_info_list}
381
382 # Description of argument(s):
383 # session_info_list List contains individual session record are stored in dictionary.
384
385 # ${session_info_list} = [{
386 # 'SessionIDs': 'XXXXXXXXX',
387 # 'ClientID': 'XXXXXX',
388 # 'SessionToken': 'XXXXXXXXX',
389 # 'SessionResp': session response from redfish login
390 # }]
391
392 # SessionIDs : Session IDs
393 # ClientID : Client ID
394 # SessionToken : Session token
395 # SessionResp : Response of creating an redfish login session
396
397 FOR ${session_record} IN @{session_info_list}
398 Verify Redfish Session Deleted ${session_record}
399 END
400
401
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500402Redfish Post Acquire Lock
403 [Documentation] Acquire and release lock.
404 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600405
406 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500407 # lock_type Read lock or Write lock.
408 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600409
Sushil Singhe33c6e62020-09-29 06:34:35 -0500410 ${lock_dict_param}= Form Data To Acquire Lock ${lock_type}
411 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500412 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singhdf390b62021-01-19 00:50:05 -0600413
414 Run Keyword If ${status_code} == ${HTTP_BAD_REQUEST}
415 ... Valid Value ${BAD_REQUEST} ['${resp.content}']
416 ... ELSE
417 ... Run Keyword And Return Return Description Of Response ${resp.content}
Vijaybc331e22020-02-27 04:17:37 -0600418
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500419 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600420
421
Sushil Singh977f8f52020-11-20 06:32:50 -0600422Redfish Post Acquire List Lock
423 [Documentation] Acquire and release lock.
424 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
425
426 # Description of argument(s):
427 # lock_type Read lock or Write lock.
428 # status_code HTTP status code.
429
430 ${lock_dict_param}= Create Data To Acquire List Of Lock ${lock_type}
431 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
432 Should Be Equal As Strings ${resp.status_code} ${status_code}
433
434 [Return] ${resp}
435
436
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500437Redfish Post Acquire Invalid Lock
438 [Documentation] Redfish to post request to acquire in-valid lock.
439 [Arguments] ${lock_type} ${message} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600440
441 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500442 # lock_type Read lock or Write lock.
443 # message Return message from URI.
444 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600445
Sushil Singhe33c6e62020-09-29 06:34:35 -0500446 ${lock_dict_param}= Form Data To Acquire Invalid Lock ${lock_type}
447 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500448 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600449 Run Keyword If '${message}' != '${EMPTY}'
450 ... Valid Value message ['${resp.content}']
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500451
452 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600453
454
Sushil Singhe33c6e62020-09-29 06:34:35 -0500455Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
456 [Documentation] Redfish to post request to acquire in-valid lock with invalid data type of resource id.
457 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
458
459 # Description of argument(s):
460 # lock_type Read lock or Write lock.
461 # status_code HTTP status code.
462
463 ${lock_dict_param}= Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID ${lock_type}
464 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
465 Should Be Equal As Strings ${resp.status_code} ${status_code}
466
467 [Return] ${resp}
468
469
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500470Form Data To Acquire Lock
George Keishing16b3c7b2021-01-28 09:23:37 -0600471 [Documentation] Create a dictionary for lock request.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500472 [Arguments] ${lock_type}
473
474 # Description of argument(s):
475 # lock_type Read lock or Write lock.
476
477 ${lock_res_info}= Get Lock Resource Information
478 ${resp}= RW General Dictionary
479 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
480 ... ${lock_res_info["Valid Case"]["ResourceID"]}
481 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500482 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500483
Sushil Singhe33c6e62020-09-29 06:34:35 -0500484 [Return] ${lock_request_dict}
485
486
Sushil Singh977f8f52020-11-20 06:32:50 -0600487Create Data To Acquire List Of Lock
George Keishing16b3c7b2021-01-28 09:23:37 -0600488 [Documentation] Create a dictionary for list of lock request.
Sushil Singh977f8f52020-11-20 06:32:50 -0600489 [Arguments] ${lock_type_list}
490
491 # Description of argument(s):
492 # lock_type Read lock or Write lock.
493
494 ${temp_list}= Create List
495 ${lock_res_info}= Get Lock Resource Information
496
497 FOR ${lock_type} IN @{lock_type_list}
498 ${resp}= RW General Dictionary
499 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
500 ... ${lock_res_info["Valid Case"]["ResourceID"]}
501 Append To List ${temp_list} ${resp}
502 END
503
504 ${lock_request_dict}= Create Dictionary Request=${temp_list}
505
506 [Return] ${lock_request_dict}
507
508
Sushil Singhe33c6e62020-09-29 06:34:35 -0500509Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID
George Keishing16b3c7b2021-01-28 09:23:37 -0600510 [Documentation] Create a dictionary for in-valid lock request.
Sushil Singhe33c6e62020-09-29 06:34:35 -0500511 [Arguments] ${lock_type}
512
513 # Description of argument(s):
514 # lock_type Read lock or Write lock.
515
516 ${lock_res_info}= Get Lock Resource Information
517 ${resp}= RW General Dictionary
518 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
519 ... ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]}
520 ${temp_list}= Create List ${resp}
521 ${lock_request_dict}= Create Dictionary Request=${temp_list}
522
523 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500524
525
526Form Data To Acquire Invalid Lock
George Keishing16b3c7b2021-01-28 09:23:37 -0600527 [Documentation] Create a dictionary for in-valid lock request.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500528 [Arguments] ${lock_type}
529
530 # Description of argument(s):
531 # lock_type Read lock or Write lock.
532
533 ${lock_res_info}= Get Lock Resource Information
534 ${resp}= RW General Dictionary
535 ... ${lock_res_info["Invalid Case"]["${lock_type}"]}
536 ... ${lock_res_info["Valid Case"]["ResourceID"]}
537 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500538 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500539
Sushil Singhe33c6e62020-09-29 06:34:35 -0500540 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500541
542
543Get Locks List On Resource
Vijaybc331e22020-02-27 04:17:37 -0600544 [Documentation] Get locks list.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500545 [Arguments] ${session_info} ${exp_status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600546
547 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500548 # session_info Session information in dict.
549 # exp_status_code Expected HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600550
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500551 ${data}= Set Variable {"SessionIDs": ["${session_info['SessionIDs']}"]}
George Keishing566daaf2020-07-02 06:18:50 -0500552 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
553 ... data=${data}
Vijaybc331e22020-02-27 04:17:37 -0600554 ${locks}= Evaluate json.loads('''${resp.text}''') json
555
556 [Return] ${locks["Records"]}
557
558
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500559Verify Lock On Resource
560 [Documentation] Verify lock on resource.
561 [Arguments] ${session_info} ${transaction_id}
Vijaybc331e22020-02-27 04:17:37 -0600562
563 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500564 # session_info Session information in dict.
565 # transaction_id Transaction id in list stored in dict.
Vijaybc331e22020-02-27 04:17:37 -0600566
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500567 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']}
568 Rprint Vars sessions
569 ${lock_list}= Get Locks List On Resource ${session_info}
570 ${lock_length}= Get Length ${lock_list}
571 ${tran_id_length}= Get Length ${transaction_id}
572 Should Be Equal As Integers ${tran_id_length} ${lock_length}
Vijayafdd2a12020-04-09 02:03:20 -0500573
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500574 FOR ${tran_id} ${lock} IN ZIP ${transaction_id} ${lock_list}
575 Valid Value session_info['ClientID'] ['${lock['HMCID']}']
576 Valid Value session_info['SessionIDs'] ['${lock['SessionID']}']
577 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock['TransactionID']}
Vijaybc331e22020-02-27 04:17:37 -0600578 END
579
Vijaybc331e22020-02-27 04:17:37 -0600580
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500581Acquire Lock On Resource
582 [Documentation] Acquire lock on resource.
583 [Arguments] ${client_id} ${lock_type} ${reboot_flag}=False
Vijaybc331e22020-02-27 04:17:37 -0600584
585 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500586 # client_id This client id can contain string value
587 # (e.g. 12345, "HMCID").
588 # lock_type Read lock or Write lock.
589 # reboot_flag Flag is used to run reboot the BMC code.
590 # (e.g. True or False).
Vijaybc331e22020-02-27 04:17:37 -0600591
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500592 ${trans_id_list}= Create List
593 ${session_info}= Create Redfish Session With ClientID ${client_id}
594 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
595 Append To List ${trans_id_list} ${trans_id}
596 Verify Lock On Resource ${session_info} ${trans_id_list}
George Keishing566daaf2020-07-02 06:18:50 -0500597
Sushil Singhe33c6e62020-09-29 06:34:35 -0500598 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
Vijaybc331e22020-02-27 04:17:37 -0600599
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500600 Run Keyword If '${reboot_flag}' == 'True'
601 ... Run Keywords Redfish OBMC Reboot (off) AND
602 ... Redfish Login AND
Sushil Singhe33c6e62020-09-29 06:34:35 -0500603 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500604 ... Verify Lock On Resource ${session_info} ${trans_id_list} AND
605 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600606
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500607 Run Keyword If '${reboot_flag}' == 'False'
608 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600609
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500610 ${trans_id_emptylist}= Create List
611 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
612 Redfish Delete Session ${session_info}
Vijaybc331e22020-02-27 04:17:37 -0600613
Vijaybc331e22020-02-27 04:17:37 -0600614
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500615Form Data To Release Lock
616 [Documentation] Create a dictonay to release lock.
617 [Arguments] ${trans_id_list}
Vijay355daac2020-03-26 12:06:08 -0500618
619 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500620 # trans_id_list
Vijay355daac2020-03-26 12:06:08 -0500621
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500622 @{tran_ids}= Create List
Vijay355daac2020-03-26 12:06:08 -0500623
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500624 FOR ${item} IN @{trans_id_list}
625 Append To List ${tran_ids} ${item['TransactionID']}
626 END
627
628 [Return] ${tran_ids}
629
630
631Release Locks On Resource
632 [Documentation] Redfish request to release a lock.
633 [Arguments] ${session_info} ${trans_id_list} ${release_lock_type}=Transaction ${status_code}=${HTTP_OK}
634
635 # Description of argument(s):
636 # session_info Session information in dict.
637 # trans_id_list Transaction id list.
638 # release_lock_type Release lock by Transaction, Session.
639 # status_code HTTP status code.
640
641 ${tran_ids}= Form Data To Release Lock ${trans_id_list}
642 ${data}= Set Variable {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}}
643 ${data}= Evaluate json.dumps(${data}) json
644 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock data=${data}
645 Should Be Equal As Strings ${resp.status_code} ${status_code}
646
647
Sushil Singhdf390b62021-01-19 00:50:05 -0600648Release locks And Delete Session
649 [Documentation] Release locks and delete redfish session.
650 [Arguments] ${session_info} ${trans_id_list}
651
652 Release Locks On Resource ${session_info} ${trans_id_list}
653
654 ${trans_id_emptylist}= Create List
655 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
656
657 Redfish Delete Session ${session_info}
658
659
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500660Acquire Lock On Another Lock
661 [Documentation] Acquire lock on another lock.
662 [Arguments] ${client_id}
663
664 # Description of argument(s):
665 # client_id This client id can contain string value
666 # (e.g. 12345, "HMCID").
667
668 ${trans_id_list}= Create List
669 ${session_info}= Create Redfish Session With ClientID ${client_id}
670
671 ${trans_id}= Redfish Post Acquire Lock ReadCase1
672 Append To List ${trans_id_list} ${trans_id}
673
674 ${trans_id}= Redfish Post Acquire Lock ReadCase1
675 Append To List ${trans_id_list} ${trans_id}
676
677 Verify Lock On Resource ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500678
Sushil Singhdf390b62021-01-19 00:50:05 -0600679 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500680
681
Sushil Singh977f8f52020-11-20 06:32:50 -0600682Verify Fail To Acquire Read And Write In Single Request
683 [Documentation] Verify fail to acquire read and write lock passed in single request.
684 [Arguments] ${client_id} ${lock_type}
685
686 # Description of argument(s):
687 # client_id This client id can contain string value
688 # (e.g. 12345, "HMCID").
689 # lock_type Read lock or Write lock.
690
691 ${lock_type_list}= Split String ${lock_type} ,
692
693 ${session_info}= Create Redfish Session With ClientID ${client_id}
694 ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list} status_code=${HTTP_BAD_REQUEST}
695 Redfish Delete Session ${session_info}
696
697
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500698Verify Empty Lock Records For Invalid Session
699 [Documentation] Verify no lock record found for invalid session.
700 [Arguments] ${client_id}
701
702 # Description of argument(s):
703 # client_id This client id can contain string value
704 # (e.g. 12345, "HMCID").
705
706 ${session_info1}= Create Redfish Session With ClientID ${client_id}
707
708 ${lock_list1}= Get Locks List On Resource ${session_info1}
709 ${lock_length1}= Get Length ${lock_list1}
710
711 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
712 set to dictionary ${session_info2} SessionIDs xxyXyyYZZz
713
714 ${lock_list2}= Get Locks List On Resource ${session_info2}
Sushil Singhf9a536c2020-11-09 07:33:17 -0600715 ${lock_length2}= Get Length ${lock_list2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500716
Sushil Singhf9a536c2020-11-09 07:33:17 -0600717 Should Be Equal As Integers ${lock_length1} ${lock_length2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500718
719 Redfish Delete Session ${session_info1}
720
721
722Verify Acquire Lock Fails On Another Lock
723 [Documentation] Verify acquire lock on another lock fails.
724 [Arguments] ${client_id} ${lock_type}
725
726 # Description of argument(s):
727 # client_id This client id can contain string value
728 # (e.g. 12345, "HMCID").
729 # lock_type Read lock or Write lock.
730
731 @{lock_type_list}= Split String ${lock_type} ,
732 ${session_info}= Create Redfish Session With ClientID ${client_id}
733 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
734
735 ${trans_id_list}= Create List
736 Append To List ${trans_id_list} ${trans_id}
737
738 Verify Lock On Resource ${session_info} ${trans_id_list}
739 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500740
Sushil Singhdf390b62021-01-19 00:50:05 -0600741 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500742
743
Sushil Singhe33c6e62020-09-29 06:34:35 -0500744Verify Acquire Lock After Reboot
745 [Documentation] Acquire read and write lock after the reboot and release lock.
746 [Arguments] ${client_id} ${lock_type}
747
748 # Description of argument(s):
749 # client_id This client id can contain string value
750 # (e.g. 12345, "HMCID").
751 # lock_type Read lock or Write lock.
752
753 ${trans_id_list}= Create List
Sushil Singhf9a536c2020-11-09 07:33:17 -0600754 ${session_info}= Create Session With ClientID ${client_id}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500755 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
756 Redfish OBMC Reboot (off)
757 Redfish Login
758 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token}
759
760 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
761 Append To List ${trans_id_list} ${trans_id}
762 Verify Lock On Resource ${session_info} ${trans_id_list}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500763
Sushil Singhdf390b62021-01-19 00:50:05 -0600764 Release locks And Delete Session ${session_info} ${trans_id_list}
765
766
767Verify Acquire Multiple Lock Request At CEC Level
768 [Documentation] Acquire lock in loop.
769 [Arguments] ${client_id} ${lock_type}
770
771 # Description of argument(s):
772 # client_id This client id can contain string value
773 # (e.g. 12345, "HMCID").
774 # lock_type Read lock or Write lock.
775
776 ${trans_id_list}= Create List
777 @{lock_type_list}= Split String ${lock_type} ,
778 ${session_info}= Create Redfish Session With ClientID ${client_id}
779
780 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
781 Append To List ${trans_id_list} ${trans_id}
782
783 Verify Lock On Resource ${session_info} ${trans_id_list}
784
785 Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
786
787 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500788
789
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500790Verify Acquire And Release Lock In Loop
791 [Documentation] Acquire lock in loop.
792 [Arguments] ${client_id} ${lock_type}
793
794 # Description of argument(s):
795 # client_id This client id can contain string value
796 # (e.g. 12345, "HMCID").
797 # lock_type Read lock or Write lock.
798
799 FOR ${count} IN RANGE 1 11
800 ${trans_id_list}= Create List
801 ${session_info}= Create Redfish Session With ClientID ${client_id}
802 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
803 Append To List ${trans_id_list} ${trans_id}
804 Verify Lock On Resource ${session_info} ${trans_id_list}
805 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
806 ${trans_id_emptylist}= Create List
807 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
808 END
809
810 Redfish Delete Session ${session_info}
811
812
813Acquire And Release Multiple Locks
814 [Documentation] Acquire mutilple locks on resource.
815 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
816
817 # Description of argument(s):
818 # client_id This client id can contain string value
819 # (e.g. 12345, "HMCID").
820 # lock_type Read lock or Write lock.
821 # release_lock_type The value can be Transaction or Session.
822
823 @{lock_type_list}= Split String ${lock_type} ,
824 ${session_info}= Create Redfish Session With ClientID ${client_id}
825 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
826
827 ${trans_id_list}= Create List
828
829 Append To List ${trans_id_list} ${trans_id}
830 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
831
832 Append To List ${trans_id_list} ${trans_id}
833 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
834
835 Append To List ${trans_id_list} ${trans_id}
836 Verify Lock On Resource ${session_info} ${trans_id_list}
837 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type}
838
839 ${trans_id_emptylist}= Create List
840 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
841 Redfish Delete Session ${session_info}
842
843
Sushil Singh59011d02021-01-27 23:00:20 -0600844Verify Fail To Release Lock With Invalid TransactionID
George Keishing16b3c7b2021-01-28 09:23:37 -0600845 [Documentation] Verify fail to be release lock with invalid transaction ID.
Sushil Singh59011d02021-01-27 23:00:20 -0600846 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
847
848 # Description of argument(s):
849 # client_id This client id can contain string value
850 # (e.g. 12345, "HMCID").
851 # lock_type Read lock or Write lock.
852 # release_lock_type The value can be Transaction or Session.
853
854 ${trans_id_list}= Create List
855 @{lock_type_list}= Split String ${lock_type} ,
856
857 ${session_info}= Create Redfish Session With ClientID ${client_id}
858
859 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
860 ${value}= Get From Dictionary ${trans_id} TransactionID
861 ${value}= Evaluate ${value} + 10
862 Set To Dictionary ${trans_id} TransactionID ${value}
863 Append To List ${trans_id_list} ${trans_id}
864
865 Release Locks On Resource
866 ... ${session_info} ${trans_id_list}
867 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
868 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
869
870 ${trans_id_emptylist}= Create List
871 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
872 Redfish Delete Session ${session_info}
873
874
Sushil Singh1b590532021-01-20 05:13:54 -0600875Verify Fail To Release Multiple Lock With Invalid TransactionID
876 [Documentation] Verify release multiple locks with invalid transaction ID fails.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500877 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
878
879 # Description of argument(s):
880 # client_id This client id can contain string value
881 # (e.g. 12345, "HMCID").
882 # lock_type Read lock or Write lock.
883 # release_lock_type The value can be Transaction or Session.
884
885 ${trans_id_list}= Create List
886 @{lock_type_list}= Split String ${lock_type} ,
887
888 ${session_info}= Create Redfish Session With ClientID ${client_id}
889
890 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
891 ${value}= Get From Dictionary ${trans_id} TransactionID
892 ${value}= Evaluate ${value} + 10
893 Set To Dictionary ${trans_id} TransactionID ${value}
894 Append To List ${trans_id_list} ${trans_id}
895
896 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
897 ${value}= Get From Dictionary ${trans_id} TransactionID
898 ${value}= Evaluate ${value} + 10
899 Set To Dictionary ${trans_id} TransactionID ${value}
900 Append To List ${trans_id_list} ${trans_id}
901
902 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
903 ${value}= Get From Dictionary ${trans_id} TransactionID
904 ${value}= Evaluate ${value} + 10
905 Set To Dictionary ${trans_id} TransactionID ${value}
906 Append To List ${trans_id_list} ${trans_id}
907
908 Release Locks On Resource
909 ... ${session_info} ${trans_id_list}
910 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
911 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
912
913 ${trans_id_emptylist}= Create List
914 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
915 Redfish Delete Session ${session_info}
916
917
Sushil Singh8bee3582021-01-27 23:46:48 -0600918Verify Fail To Release Multiple Lock With Valid And Invalid TransactionID
919 [Documentation] Verify fail to be release multiple lock with valid and invalid trasaction ID.
920 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
921
922 # Description of argument(s):
923 # client_id This client id can contain string value
924 # (e.g. 12345, "HMCID").
925 # lock_type Read lock or Write lock.
926 # release_lock_type The value can be Transaction or Session.
927
928 ${trans_id_list}= Create List
929 @{lock_type_list}= Split String ${lock_type} ,
930
931 ${session_info}= Create Redfish Session With ClientID ${client_id}
932
933 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
934 Append To List ${trans_id_list} ${trans_id}
935
936 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
937 ${value}= Get From Dictionary ${trans_id} TransactionID
938 ${value}= Evaluate ${value} + 10
939 Set To Dictionary ${trans_id} TransactionID ${value}
940 Append To List ${trans_id_list} ${trans_id}
941
942 Release Locks On Resource
943 ... ${session_info} ${trans_id_list}
944 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
945 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
946
947 ${trans_id_emptylist}= Create List
948 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
949 Redfish Delete Session ${session_info}
950
951
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500952Verify Fail To Release Lock For Another Session
953 [Documentation] Verify failed to release the lock form another session.
954 [Arguments] ${client_id} ${lock_type}
955
956 # Description of argument(s):
957 # client_id This client id can contain string value
958 # (e.g. 12345, "HMCID").
959 # lock_type Read lock or Write lock.
960
961 ${client_ids}= Split String ${client_id} ,
962 ${lock_type_list}= Split String ${lock_type} ,
963 ${trans_id_list1}= Create List
964 ${trans_id_list2}= Create List
965
966 ${session_info1}= Create Redfish Session With ClientID ${client_ids}[0]
967
968 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
969 Append To List ${trans_id_list1} ${trans_id}
970 Verify Lock On Resource ${session_info1} ${trans_id_list1}
971
972 ${session_info2}= Create Redfish Session With ClientID ${client_ids}[1]
973 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
974 Append To List ${trans_id_list2} ${trans_id}
975 Verify Lock On Resource ${session_info2} ${trans_id_list2}
976
977 Release Locks On Resource
978 ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED}
979 Verify Lock On Resource ${session_info1} ${trans_id_list1}
980 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session
981 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session
982 Redfish Delete Session ${session_info1}
983 Redfish Delete Session ${session_info2}
984
985
Sushil Singhe33c6e62020-09-29 06:34:35 -0500986Verify Fail To Acquire Lock For Invalid Resource ID Data Type
987 [Documentation] Verify fail to acquire the lock with invalid resource id data type.
988 [Arguments] ${client_id} ${lock_type}
989
990 # Description of argument(s):
991 # client_id This client id can contain string value
992 # (e.g. 12345, "HMCID").
993 # lock_type Read lock or Write lock.
994
995 ${session_info}= Create Redfish Session With ClientID ${client_id}
996 Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
997 ... ${lock_type} status_code=${HTTP_BAD_REQUEST}
998 Redfish Delete Session ${session_info}
999
1000
Sushil Singhd03f2ce2020-09-17 08:54:41 -05001001Verify Fail To Acquire Lock For Invalid Lock Data
George Keishing16b3c7b2021-01-28 09:23:37 -06001002 [Documentation] Verify fail to acquired lock with invalid lock types, lock flags, segment flags.
Sushil Singhd03f2ce2020-09-17 08:54:41 -05001003 [Arguments] ${client_id} ${lock_type} ${message}
1004
1005 # Description of argument(s):
1006 # client_id This client id can contain string value
1007 # (e.g. 12345, "HMCID").
1008 # lock_type Read lock or Write lock.
1009 # message Return message from URI.
1010
1011 ${session_info}= Create Redfish Session With ClientID ${client_id}
1012 ${trans_id}= Redfish Post Acquire Invalid Lock ${lock_type} message=${message} status_code=${HTTP_BAD_REQUEST}
1013 Redfish Delete Session ${session_info}
Sushil Singhbace3002020-10-08 08:12:58 -05001014
1015
1016Verify No Locks Records For Session With No Acquired Lock
1017 [Documentation] Verify no records found for a session where no lock is acquired.
1018 [Arguments] ${client_id}
1019
1020 # Description of argument(s):
1021 # client_id This client id can contain string value
1022 # (e.g. 12345, "HMCID").
1023
1024 ${session_info}= Create Redfish Session With ClientID ${client_id}
1025 ${trans_id_emptylist}= Create List
1026 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
1027 Redfish Delete Session ${session_info}
Sushil Singh728ef9c2020-10-28 04:25:39 -05001028
1029
1030Create List Of Session ID
1031 [Documentation] Create session id list from session dict info.
1032 [Arguments] ${session_dict_info}
1033
1034 # Description of argument(s):
1035 # session_dict_info Session information in dict.
1036
1037 @{session_id_list}= Create List
1038
1039 FOR ${session} IN @{session_dict_info}
1040 Append To List ${session_id_list} ${session["SessionIDs"]}
1041 END
1042
1043 ${num_id}= Get Length ${session_id_list}
1044 Should Not Be Equal As Integers ${num_id} ${0}
1045
1046 ${session_id_list}= Evaluate json.dumps(${session_id_list}) json
1047
1048 [Return] ${session_id_list}
1049
1050
1051Get Locks List On Resource With Session List
1052 [Documentation] Get locks list from session of list.
1053 [Arguments] ${session_id_list} ${exp_status_code}=${HTTP_OK}
1054
1055 # Description of argument(s):
1056 # session_id_list Session ids list.
1057 # exp_status_code Expected HTTP status code.
1058
1059 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
1060 ... data={"SessionIDs": ${session_id_list}}
1061 ${locks}= Evaluate json.loads('''${resp.text}''') json
1062
1063 [Return] ${locks}
1064
1065
1066Verify List Of Session Lock On Resource
1067 [Documentation] Verify list of lock record from list of sessions.
1068 [Arguments] ${session_dict_info} ${transaction_id_list}
1069
1070 # Description of argument(s):
1071 # session_dict_info Session information in dict.
1072 # transaction_id_list Transaction id in list stored in dict.
1073
1074 ${session_id_list}= Create List Of Session ID ${session_dict_info}
1075 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
1076 ${lock_list}= Set Variable ${lock_list_resp['Records']}
1077
1078 FOR ${session_id} ${tran_id} ${lock_record} IN ZIP ${session_dict_info} ${transaction_id_list} ${lock_list}
1079 Valid Value session_id['SessionIDs'] ['${lock_record['SessionID']}']
1080 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock_record['TransactionID']}
1081 END
1082
1083
1084Verify Lock Records Of Multiple Session
1085 [Documentation] Verify all records found for a multiple sessions.
1086 [Arguments] ${client_ids} ${lock_type}
1087
1088 # Description of argument(s):
1089 # client_ids This client id can contain string value
1090 # (e.g. 12345, "HMCID").
1091 # lock_type Read lock or Write lock.
1092
1093 ${client_id_list}= Split String ${client_ids} ,
1094 ${lock_type_list}= Split String ${lock_type} ,
1095 ${trans_id_list1}= Create List
1096 ${trans_id_list2}= Create List
1097
1098 ${session_dict_list}= Create List
1099 ${lock_list}= Create List
1100
1101 ${client_id1}= Create List
1102 Append To List ${client_id1} ${client_id_list}[0]
1103 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1104 Append To List ${session_dict_list} ${session_info1}[0]
1105 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1106
1107 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1108 Append To List ${trans_id_list1} ${trans_id}
1109 Append To List ${lock_list} ${trans_id}
1110 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1111
1112
1113 ${client_id2}= Create List
1114 Append To List ${client_id2} ${client_id_list}[1]
1115 ${session_info2}= Create Session With List Of ClientID ${client_id2}
1116 Append To List ${session_dict_list} ${session_info2}[0]
1117 Verify A Session Created With ClientID ${client_id2} ${session_info2}
1118
1119 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
1120 Append To List ${trans_id_list2} ${trans_id}
1121 Append To List ${lock_list} ${trans_id}
1122 Verify Lock On Resource ${session_info2}[0] ${trans_id_list2}
1123
1124 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1125
1126 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1127 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1128
1129 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1130
1131 ${session_token}= Get From Dictionary ${session_info2}[0] SessionToken
1132 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1133
1134 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Transaction
1135
1136 ${trans_id_emptylist}= Create List
1137 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1138 Verify Lock On Resource ${session_info2}[0] ${trans_id_emptylist}
1139
1140 Redfish Delete List Of Session ${session_dict_list}
Sushil Singhf9a536c2020-11-09 07:33:17 -06001141
1142
1143Verify Lock Records For Multiple Invalid Session
1144 [Documentation] Verify no lock record found for multiple invalid session.
1145 [Arguments] ${client_id}
1146
1147 # Description of argument(s):
1148 # client_id This client id can contain string value
1149 # (e.g. 12345, "HMCID").
1150
1151 ${session_dict_list}= Create List
1152 ${invalid_session_ids}= Create List xxyXyyYZZz xXyXYyYZzz
1153
1154 ${session_info1}= Create Session With ClientID ${client_id}
1155
1156 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1157 set to dictionary ${session_info2} SessionIDs ${invalid_session_ids}[0]
1158 Append To List ${session_dict_list} ${session_info2}
1159
1160 ${session_info3}= Copy Dictionary ${session_info1} deepcopy=True
1161 set to dictionary ${session_info3} SessionIDs ${invalid_session_ids}[0]
1162 Append To List ${session_dict_list} ${session_info3}
1163
1164 ${lock_list1}= Get Locks List On Resource ${session_info1}
1165 ${lock_length1}= Get Length ${lock_list1}
1166
1167 ${session_id_list}= Create List Of Session ID ${session_dict_list}
1168 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
1169 ${lock_length2}= Get Length ${lock_list_resp['Records']}
1170
1171 Should Be Equal As Integers ${lock_length1} ${lock_length2}
1172
1173 Redfish Delete Session ${session_info1}
Sushil Singh11949a22020-11-13 06:12:16 -06001174
1175
1176Verify Lock Records For Multiple Invalid And Valid Session
1177 [Documentation] Verify all records found for a valid and invalid sessions.
1178 [Arguments] ${client_ids} ${lock_type}
1179
1180 # Description of argument(s):
1181 # client_ids This client id can contain string value
1182 # (e.g. 12345, "HMCID").
1183 # lock_type Read lock or Write lock.
1184
1185 ${client_id_list}= Split String ${client_ids} ,
1186 ${lock_type_list}= Split String ${lock_type} ,
1187 ${trans_id_list1}= Create List
1188 ${invalid_session_ids}= Create List xxyXyyYZZz
1189
1190 ${session_dict_list}= Create List
1191 ${lock_list}= Create List
1192
1193 ${client_id1}= Create List
1194 Append To List ${client_id1} ${client_id_list}[0]
1195 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1196 Append To List ${session_dict_list} ${session_info1}[0]
1197 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1198
1199 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1200 Append To List ${trans_id_list1} ${trans_id}
1201 Append To List ${lock_list} ${trans_id}
1202 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1203
1204 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1205 set to dictionary ${session_info2}[0] SessionIDs ${invalid_session_ids}[0]
1206 Append To List ${session_dict_list} ${session_info2}[0]
1207
1208 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1209
1210 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1211 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1212
1213 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1214
1215 ${trans_id_emptylist}= Create List
1216 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1217
1218 Redfish Delete Session ${session_info1}[0]