blob: b0db42218eef2ad3a08aa58226e27404cfe6b4d2 [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
susilsi794116c62021-03-04 07:57:51 -0600131Release Lock When Session Deleted
132 [Documentation] Release lock when session gets deleted.
133 [Tags] Release_Lock_When_Session_Deleted
134 [Template] Verify Release Lock When Session Deleted
135
136 # client_id lock_type
137 HMCID-01 ReadCase1
138 HMCID-01 WriteCase1
139
140
Sushil Singh59011d02021-01-27 23:00:20 -0600141Fail To Release Lock With Invalid TransactionID
142 [Documentation] Fail to release lock with invalid transaction id.
143 [Tags] Fail_To_Release_Lock_With_Invalid_TransactionID
144 [Template] Verify Fail To Release Lock With Invalid TransactionID
145
susilsi743b0c062021-03-02 04:24:19 -0600146 # client_id lock_type release_lock_type
147 HMCID-01 ReadCase1 Transaction
148 HMCID-01 WriteCase1 Transaction
Sushil Singh59011d02021-01-27 23:00:20 -0600149
150
Sushil Singh1b590532021-01-20 05:13:54 -0600151Fail To Release Multiple Lock With Invalid TransactionID
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500152 [Documentation] Release in-valid lock result in fail.
Sushil Singh1b590532021-01-20 05:13:54 -0600153 [Tags] Fail_To_Release_Multiple_Lock_With_Invalid_TransactionID
154 [Template] Verify Fail To Release Multiple Lock With Invalid TransactionID
Vijayafdd2a12020-04-09 02:03:20 -0500155
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500156 # client_id lock_type release_lock_type
157 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction
158 12345 ReadCase2,ReadCase2,ReadCase2 Transaction
159 HMCID ReadCase3,ReadCase3,ReadCase3 Transaction
Vijayafdd2a12020-04-09 02:03:20 -0500160
161
Sushil Singh8bee3582021-01-27 23:46:48 -0600162Fail To Release Multiple Lock With Valid And Invalid TransactionID
George Keishing96143832021-03-23 07:55:08 -0500163 [Documentation] Release multiple lock with valid and invalid transaction.
Sushil Singh8bee3582021-01-27 23:46:48 -0600164 [Tags] Fail_To_Release_Multiple_Lock_With_Valid_And_Invalid_TransactionID
165 [Template] Verify Fail To Release Multiple Lock With Valid And Invalid TransactionID
166
167 # client_id lock_type release_lock_type
168 HMCID-01 ReadCase1,ReadCase1 Transaction
169
170
susilsi71d7b9962021-03-02 03:06:18 -0600171Fail To Release Lock With String As TransactionID Data Type
172 [Documentation] Fail to release lock with string as transaction id data type.
173 [Tags] Fail_To_Release_Lock_With_String_As_TransactionID_Data_Type
174 [Template] Verify Fail To Release Lock With TransactionID As String Type
175
176 # client_id lock_type release_lock_type
177 HMCID-01 ReadCase1 Transaction
178 HMCID-01 WriteCase1 Transaction
179
180
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500181Fail To Release Lock For Another Session
182 [Documentation] Failed to release locks from another session.
183 [Tags] Fail_To_Release_Lock_For_Another_Session
184 [Template] Verify Fail To Release Lock For Another Session
Vijayafdd2a12020-04-09 02:03:20 -0500185
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500186 # client_id lock_type
187 HMCID-01,HMCID-02 ReadCase1,ReadCase1
Vijayafdd2a12020-04-09 02:03:20 -0500188
189
Sushil Singhe33c6e62020-09-29 06:34:35 -0500190Test Invalid Resource ID Data Type Locking
191 [Documentation] Failed to acquire lock for invalid resource id data type.
192 [Tags] Test_Invalid_Resource_ID_Data_Type_Locking
193 [Template] Verify Fail To Acquire Lock For Invalid Resource ID Data Type
194
195 # client_id lock_type
196 HMCID-01 ReadCase1
197 HMCID-01 ReadCase2
198 HMCID-01 ReadCase3
199 HMCID-01 WriteCase1
200 HMCID-01 WriteCase2
201 HMCID-01 WriteCase3
202
203
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500204Fail To Acquire Lock For Invalid Lock Type
205 [Documentation] Failed to acquire read, write lock for invalid lock data passed.
206 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Type
207 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500208
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500209 # client_id lock_type message
210 HMCID-01 ReadCase1 ${BAD_REQUEST}
211 HMCID-01 ReadCase2 ${BAD_REQUEST}
212 HMCID-01 ReadCase3 ${BAD_REQUEST}
213 HMCID-01 ReadCase4 ${BAD_REQUEST}
214 HMCID-01 ReadCase5 ${BAD_REQUEST}
215 HMCID-01 WriteCase1 ${BAD_REQUEST}
216 HMCID-01 WriteCase2 ${BAD_REQUEST}
217 HMCID-01 WriteCase3 ${BAD_REQUEST}
218 HMCID-01 WriteCase4 ${BAD_REQUEST}
219 HMCID-01 WriteCase5 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500220
Vijayafdd2a12020-04-09 02:03:20 -0500221
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500222Fail To Acquire Lock For Invalid Lock Flag
223 [Documentation] Failed to acquire read write lock for invalid lock flag passed.
224 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Flag
225 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500226
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500227 # client_id lock_type message
228 HMCID-01 ReadCase6 ${BAD_REQUEST}
229 HMCID-01 ReadCase7 ${BAD_REQUEST}
230 HMCID-01 ReadCase8 ${BAD_REQUEST}
231 HMCID-01 ReadCase9 ${BAD_REQUEST}
232 HMCID-01 ReadCase10 ${BAD_REQUEST}
233 HMCID-01 ReadCase11 ${BAD_REQUEST}
234 HMCID-01 WriteCase6 ${BAD_REQUEST}
235 HMCID-01 WriteCase7 ${BAD_REQUEST}
236 HMCID-01 WriteCase8 ${BAD_REQUEST}
237 HMCID-01 WriteCase9 ${BAD_REQUEST}
238 HMCID-01 WriteCase10 ${BAD_REQUEST}
239 HMCID-01 WriteCase11 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500240
Vijayafdd2a12020-04-09 02:03:20 -0500241
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500242Fail To Acquire Lock For Invalid Segment Flag
243 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
244 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Flag
245 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
246
247 # client_id lock_type message
248 HMCID-01 ReadCase12 ${BAD_REQUEST}
249 HMCID-01 ReadCase13 ${BAD_REQUEST}
250 HMCID-01 ReadCase14 ${BAD_REQUEST}
251 HMCID-01 WriteCase12 ${BAD_REQUEST}
252 HMCID-01 WriteCase13 ${BAD_REQUEST}
253 HMCID-01 WriteCase14 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500254
Sushil Singhbace3002020-10-08 08:12:58 -0500255
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600256Fail To Acquire Lock For Invalid Segment Data Type Flag
257 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
258 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Data_Type_Flag
259 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
260
261 # client_id lock_type message
262 HMCID-01 ReadCase15 ${EMPTY}
263 HMCID-01 ReadCase16 ${EMPTY}
264 HMCID-01 ReadCase17 ${EMPTY}
265 HMCID-01 ReadCase18 ${EMPTY}
266 HMCID-01 WriteCase15 ${EMPTY}
267 HMCID-01 WriteCase16 ${EMPTY}
268 HMCID-01 WriteCase17 ${EMPTY}
269 HMCID-01 WriteCase18 ${EMPTY}
270
271
Sushil Singhbace3002020-10-08 08:12:58 -0500272Get Empty Lock Records For Session Where No Locks Acquired
273 [Documentation] If session does not acquire locks then get lock should return
274 ... empty lock records.
275 [Tags] Get_Empty_Lock_Records_For_Session_Where_No_Locks_Acquired
276 [Template] Verify No Locks Records For Session With No Acquired Lock
277
278 # client_id
279 HMCID-01
280
Sushil Singh728ef9c2020-10-28 04:25:39 -0500281
Sushil Singhf9a536c2020-11-09 07:33:17 -0600282Get Lock Records Empty For Invalid Session
283 [Documentation] Record of lock list is empty for invalid session.
284 [Tags] Get_Lock_Records_Empty_For_Invalid_Session
285 [Template] Verify Empty Lock Records For Invalid Session
286
287 # client_id
288 HMCID-01
289
290
Sushil Singh728ef9c2020-10-28 04:25:39 -0500291Get Lock Records For Multiple Session
292 [Documentation] Get lock records of multiple session.
293 [Tags] Get_Lock_Records_For_Multiple_Session
294 [Template] Verify Lock Records Of Multiple Session
295
296 # client_ids lock_type
297 HMCID-01,HMCID-02 ReadCase1,ReadCase1
298
299
Sushil Singhf9a536c2020-11-09 07:33:17 -0600300Get Lock Records For Multiple Invalid Session
301 [Documentation] Record of lock list is empty for list of invalid session.
302 [Tags] Get_Lock_Records_For_Multiple_Invalid_Session
303 [Template] Verify Lock Records For Multiple Invalid Session
304
305 # client_id
306 HMCID-01
307
Sushil Singh11949a22020-11-13 06:12:16 -0600308
309Get Lock Records For Multiple Invalid And Valid Session
310 [Documentation] Get record of lock from invalid and valid session.
311 [Tags] Get_Lock_Records_For_Multiple_Invalid_And_Valid_Session
312 [Template] Verify Lock Records For Multiple Invalid And Valid Session
313
314 # client_id lock_type
315 HMCID-01,HMCID-02 ReadCase1
316
Vijaybc331e22020-02-27 04:17:37 -0600317*** Keywords ***
318
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500319Create Redfish Session With ClientID
320 [Documentation] Create redifish session with client id.
321 [Arguments] ${client_id}
Vijay85610ee2020-04-03 05:30:28 -0500322
323 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500324 # client_id This client id can contain string value
325 # (e.g. 12345, "HMCID").
Vijay85610ee2020-04-03 05:30:28 -0500326
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500327 ${session_info}= Create Dictionary
328 ${session}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
Vijay85610ee2020-04-03 05:30:28 -0500329
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500330 Set To Dictionary ${session_info} SessionIDs ${session['Id']}
331 Set To Dictionary ${session_info} ClientID ${session["Oem"]["OpenBMC"]["ClientID"]}
Vijay85610ee2020-04-03 05:30:28 -0500332
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500333 [Return] ${session_info}
Vijay85610ee2020-04-03 05:30:28 -0500334
335
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500336RW General Dictionary
George Keishing16b3c7b2021-01-28 09:23:37 -0600337 [Documentation] Create dictionary of lock request.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500338 [Arguments] ${read_case} ${res_id}
Vijaybc331e22020-02-27 04:17:37 -0600339
340 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500341 # read_case Read or Write lock type.
342 # res_id Resource id.
Vijaybc331e22020-02-27 04:17:37 -0600343
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500344 ${request_dict}= Create Dictionary
George Keishing566daaf2020-07-02 06:18:50 -0500345
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500346 FOR ${key} IN @{read_case.keys()}
347 Set To Dictionary ${request_dict} LockType ${key}
348 Set To Dictionary ${request_dict} SegmentFlags ${read_case["${key}"]}
349 END
Vijaybc331e22020-02-27 04:17:37 -0600350
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500351 Set To Dictionary ${request_dict} ResourceID ${res_id}
352
353 [Return] ${request_dict}
Vijaybc331e22020-02-27 04:17:37 -0600354
355
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500356Return Description Of Response
357 [Documentation] Return description of REST response.
Vijaybc331e22020-02-27 04:17:37 -0600358 [Arguments] ${resp_text}
359
360 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500361 # resp_text REST response body.
Vijaybc331e22020-02-27 04:17:37 -0600362
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500363 # resp_text after successful partition file upload looks like:
364 # {
365 # "Description": "File Created"
366 # }
Vijaybc331e22020-02-27 04:17:37 -0600367
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500368 ${message}= Evaluate json.loads('''${resp_text}''') json
369
370 [Return] ${message}
Vijaybc331e22020-02-27 04:17:37 -0600371
372
Sushil Singha7d71f02020-11-02 05:24:22 -0600373Verify Redfish Session Deleted
374 [Documentation] Verify the redfish session is deleted.
375 [Arguments] ${session_info}
376
377 # Description of argument(s):
378 # session_info Session information are stored in dictionary.
379
380 # ${session_info} = {
381 # 'SessionIDs': 'XXXXXXXXX',
382 # 'ClientID': 'XXXXXX',
383 # 'SessionToken': 'XXXXXXXXX',
384 # 'SessionResp': session response from redfish login
385 # }
386
387 # SessionIDs : Session IDs
388 # ClientID : Client ID
389 # SessionToken : Session token
390 # SessionResp : Response of creating an redfish login session
391
392 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions
393
394 FOR ${session} IN @{sessions['Members']}
Sushil Singh8a3efe72021-08-26 08:16:41 -0500395 Should Not Be Equal As Strings
396 ... session ['/redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]}']
Sushil Singha7d71f02020-11-02 05:24:22 -0600397 END
398
399
400Verify Redfish List Of Session Deleted
401 [Documentation] Verify all the list of redfish session is deleted.
402 [Arguments] ${session_info_list}
403
404 # Description of argument(s):
405 # session_info_list List contains individual session record are stored in dictionary.
406
407 # ${session_info_list} = [{
408 # 'SessionIDs': 'XXXXXXXXX',
409 # 'ClientID': 'XXXXXX',
410 # 'SessionToken': 'XXXXXXXXX',
411 # 'SessionResp': session response from redfish login
412 # }]
413
414 # SessionIDs : Session IDs
415 # ClientID : Client ID
416 # SessionToken : Session token
417 # SessionResp : Response of creating an redfish login session
418
419 FOR ${session_record} IN @{session_info_list}
420 Verify Redfish Session Deleted ${session_record}
421 END
422
423
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500424Redfish Post Acquire Lock
425 [Documentation] Acquire and release lock.
426 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600427
428 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500429 # lock_type Read lock or Write lock.
430 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600431
Sushil Singhe33c6e62020-09-29 06:34:35 -0500432 ${lock_dict_param}= Form Data To Acquire Lock ${lock_type}
Sushil Singh8a3efe72021-08-26 08:16:41 -0500433 ${resp}= Redfish Post Request
434 ... /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500435 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singhdf390b62021-01-19 00:50:05 -0600436
437 Run Keyword If ${status_code} == ${HTTP_BAD_REQUEST}
438 ... Valid Value ${BAD_REQUEST} ['${resp.content}']
439 ... ELSE
440 ... Run Keyword And Return Return Description Of Response ${resp.content}
Vijaybc331e22020-02-27 04:17:37 -0600441
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500442 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600443
444
Sushil Singh977f8f52020-11-20 06:32:50 -0600445Redfish Post Acquire List Lock
446 [Documentation] Acquire and release lock.
447 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
448
449 # Description of argument(s):
450 # lock_type Read lock or Write lock.
451 # status_code HTTP status code.
452
453 ${lock_dict_param}= Create Data To Acquire List Of Lock ${lock_type}
Sushil Singh8a3efe72021-08-26 08:16:41 -0500454 ${resp}= Redfish Post Request
455 ... /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singh977f8f52020-11-20 06:32:50 -0600456 Should Be Equal As Strings ${resp.status_code} ${status_code}
457
458 [Return] ${resp}
459
460
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500461Redfish Post Acquire Invalid Lock
462 [Documentation] Redfish to post request to acquire in-valid lock.
463 [Arguments] ${lock_type} ${message} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600464
465 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500466 # lock_type Read lock or Write lock.
467 # message Return message from URI.
468 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600469
Sushil Singhe33c6e62020-09-29 06:34:35 -0500470 ${lock_dict_param}= Form Data To Acquire Invalid Lock ${lock_type}
Sushil Singh8a3efe72021-08-26 08:16:41 -0500471 ${resp}= Redfish Post Request
472 ... /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500473 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600474 Run Keyword If '${message}' != '${EMPTY}'
475 ... Valid Value message ['${resp.content}']
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500476
477 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600478
479
Sushil Singhe33c6e62020-09-29 06:34:35 -0500480Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
481 [Documentation] Redfish to post request to acquire in-valid lock with invalid data type of resource id.
482 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
483
484 # Description of argument(s):
485 # lock_type Read lock or Write lock.
486 # status_code HTTP status code.
487
Sushil Singh8a3efe72021-08-26 08:16:41 -0500488 ${lock_dict_param}=
489 ... Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID ${lock_type}
490 ${resp}= Redfish Post Request
491 ... /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500492 Should Be Equal As Strings ${resp.status_code} ${status_code}
493
494 [Return] ${resp}
495
496
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500497Form Data To Acquire Lock
George Keishing16b3c7b2021-01-28 09:23:37 -0600498 [Documentation] Create a dictionary for lock request.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500499 [Arguments] ${lock_type}
500
501 # Description of argument(s):
502 # lock_type Read lock or Write lock.
503
504 ${lock_res_info}= Get Lock Resource Information
505 ${resp}= RW General Dictionary
506 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
507 ... ${lock_res_info["Valid Case"]["ResourceID"]}
508 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500509 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500510
Sushil Singhe33c6e62020-09-29 06:34:35 -0500511 [Return] ${lock_request_dict}
512
513
Sushil Singh977f8f52020-11-20 06:32:50 -0600514Create Data To Acquire List Of Lock
George Keishing16b3c7b2021-01-28 09:23:37 -0600515 [Documentation] Create a dictionary for list of lock request.
Sushil Singh977f8f52020-11-20 06:32:50 -0600516 [Arguments] ${lock_type_list}
517
518 # Description of argument(s):
519 # lock_type Read lock or Write lock.
520
521 ${temp_list}= Create List
522 ${lock_res_info}= Get Lock Resource Information
523
524 FOR ${lock_type} IN @{lock_type_list}
525 ${resp}= RW General Dictionary
526 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
527 ... ${lock_res_info["Valid Case"]["ResourceID"]}
528 Append To List ${temp_list} ${resp}
529 END
530
531 ${lock_request_dict}= Create Dictionary Request=${temp_list}
532
533 [Return] ${lock_request_dict}
534
535
Sushil Singhe33c6e62020-09-29 06:34:35 -0500536Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID
George Keishing16b3c7b2021-01-28 09:23:37 -0600537 [Documentation] Create a dictionary for in-valid lock request.
Sushil Singhe33c6e62020-09-29 06:34:35 -0500538 [Arguments] ${lock_type}
539
540 # Description of argument(s):
541 # lock_type Read lock or Write lock.
542
543 ${lock_res_info}= Get Lock Resource Information
544 ${resp}= RW General Dictionary
545 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
546 ... ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]}
547 ${temp_list}= Create List ${resp}
548 ${lock_request_dict}= Create Dictionary Request=${temp_list}
549
550 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500551
552
553Form Data To Acquire Invalid Lock
George Keishing16b3c7b2021-01-28 09:23:37 -0600554 [Documentation] Create a dictionary for in-valid lock request.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500555 [Arguments] ${lock_type}
556
557 # Description of argument(s):
558 # lock_type Read lock or Write lock.
559
560 ${lock_res_info}= Get Lock Resource Information
561 ${resp}= RW General Dictionary
562 ... ${lock_res_info["Invalid Case"]["${lock_type}"]}
563 ... ${lock_res_info["Valid Case"]["ResourceID"]}
564 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500565 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500566
Sushil Singhe33c6e62020-09-29 06:34:35 -0500567 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500568
569
570Get Locks List On Resource
Vijaybc331e22020-02-27 04:17:37 -0600571 [Documentation] Get locks list.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500572 [Arguments] ${session_info} ${exp_status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600573
574 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500575 # session_info Session information in dict.
576 # exp_status_code Expected HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600577
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500578 ${data}= Set Variable {"SessionIDs": ["${session_info['SessionIDs']}"]}
George Keishing566daaf2020-07-02 06:18:50 -0500579 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
580 ... data=${data}
Vijaybc331e22020-02-27 04:17:37 -0600581 ${locks}= Evaluate json.loads('''${resp.text}''') json
582
583 [Return] ${locks["Records"]}
584
585
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500586Verify Lock On Resource
587 [Documentation] Verify lock on resource.
588 [Arguments] ${session_info} ${transaction_id}
Vijaybc331e22020-02-27 04:17:37 -0600589
590 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500591 # session_info Session information in dict.
592 # transaction_id Transaction id in list stored in dict.
Vijaybc331e22020-02-27 04:17:37 -0600593
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500594 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']}
595 Rprint Vars sessions
596 ${lock_list}= Get Locks List On Resource ${session_info}
597 ${lock_length}= Get Length ${lock_list}
598 ${tran_id_length}= Get Length ${transaction_id}
599 Should Be Equal As Integers ${tran_id_length} ${lock_length}
Vijayafdd2a12020-04-09 02:03:20 -0500600
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500601 FOR ${tran_id} ${lock} IN ZIP ${transaction_id} ${lock_list}
602 Valid Value session_info['ClientID'] ['${lock['HMCID']}']
603 Valid Value session_info['SessionIDs'] ['${lock['SessionID']}']
604 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock['TransactionID']}
Vijaybc331e22020-02-27 04:17:37 -0600605 END
606
Vijaybc331e22020-02-27 04:17:37 -0600607
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500608Acquire Lock On Resource
609 [Documentation] Acquire lock on resource.
610 [Arguments] ${client_id} ${lock_type} ${reboot_flag}=False
Vijaybc331e22020-02-27 04:17:37 -0600611
612 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500613 # client_id This client id can contain string value
614 # (e.g. 12345, "HMCID").
615 # lock_type Read lock or Write lock.
616 # reboot_flag Flag is used to run reboot the BMC code.
617 # (e.g. True or False).
Vijaybc331e22020-02-27 04:17:37 -0600618
Sushil Singh8a3efe72021-08-26 08:16:41 -0500619 ${trans_id_emptylist}= Create List
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500620 ${trans_id_list}= Create List
Sushil Singh8a3efe72021-08-26 08:16:41 -0500621
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500622 ${session_info}= Create Redfish Session With ClientID ${client_id}
623 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
624 Append To List ${trans_id_list} ${trans_id}
Sushil Singh8a3efe72021-08-26 08:16:41 -0500625
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500626 Verify Lock On Resource ${session_info} ${trans_id_list}
George Keishing566daaf2020-07-02 06:18:50 -0500627
Sushil Singhe33c6e62020-09-29 06:34:35 -0500628 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
Vijaybc331e22020-02-27 04:17:37 -0600629
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500630 Run Keyword If '${reboot_flag}' == 'True'
Sushil Singh8a3efe72021-08-26 08:16:41 -0500631 ... Run Keywords Redfish BMC Reset Operation AND
Sushil Singhe33c6e62020-09-29 06:34:35 -0500632 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND
Sushil Singh8a3efe72021-08-26 08:16:41 -0500633 ... Is BMC Standby AND
634 ... Verify Lock On Resource ${session_info} ${trans_id_emptylist}
Vijaybc331e22020-02-27 04:17:37 -0600635
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500636 Run Keyword If '${reboot_flag}' == 'False'
637 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600638
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500639 ${trans_id_emptylist}= Create List
640 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
641 Redfish Delete Session ${session_info}
Vijaybc331e22020-02-27 04:17:37 -0600642
Vijaybc331e22020-02-27 04:17:37 -0600643
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500644Form Data To Release Lock
645 [Documentation] Create a dictonay to release lock.
646 [Arguments] ${trans_id_list}
Vijay355daac2020-03-26 12:06:08 -0500647
648 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500649 # trans_id_list
Vijay355daac2020-03-26 12:06:08 -0500650
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500651 @{tran_ids}= Create List
Vijay355daac2020-03-26 12:06:08 -0500652
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500653 FOR ${item} IN @{trans_id_list}
654 Append To List ${tran_ids} ${item['TransactionID']}
655 END
656
657 [Return] ${tran_ids}
658
659
660Release Locks On Resource
661 [Documentation] Redfish request to release a lock.
Sushil Singh8a3efe72021-08-26 08:16:41 -0500662 [Arguments] ${session_info} ${trans_id_list} ${release_lock_type}=Transaction
663 ... ${status_code}=${HTTP_OK}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500664
665 # Description of argument(s):
666 # session_info Session information in dict.
667 # trans_id_list Transaction id list.
668 # release_lock_type Release lock by Transaction, Session.
669 # status_code HTTP status code.
670
671 ${tran_ids}= Form Data To Release Lock ${trans_id_list}
672 ${data}= Set Variable {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}}
673 ${data}= Evaluate json.dumps(${data}) json
674 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock data=${data}
675 Should Be Equal As Strings ${resp.status_code} ${status_code}
676
677
Sushil Singhdf390b62021-01-19 00:50:05 -0600678Release locks And Delete Session
679 [Documentation] Release locks and delete redfish session.
680 [Arguments] ${session_info} ${trans_id_list}
681
682 Release Locks On Resource ${session_info} ${trans_id_list}
683
684 ${trans_id_emptylist}= Create List
685 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
686
687 Redfish Delete Session ${session_info}
688
689
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500690Acquire Lock On Another Lock
691 [Documentation] Acquire lock on another lock.
692 [Arguments] ${client_id}
693
694 # Description of argument(s):
695 # client_id This client id can contain string value
696 # (e.g. 12345, "HMCID").
697
698 ${trans_id_list}= Create List
699 ${session_info}= Create Redfish Session With ClientID ${client_id}
700
701 ${trans_id}= Redfish Post Acquire Lock ReadCase1
702 Append To List ${trans_id_list} ${trans_id}
703
704 ${trans_id}= Redfish Post Acquire Lock ReadCase1
705 Append To List ${trans_id_list} ${trans_id}
706
707 Verify Lock On Resource ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500708
Sushil Singhdf390b62021-01-19 00:50:05 -0600709 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500710
711
Sushil Singh977f8f52020-11-20 06:32:50 -0600712Verify Fail To Acquire Read And Write In Single Request
713 [Documentation] Verify fail to acquire read and write lock passed in single request.
714 [Arguments] ${client_id} ${lock_type}
715
716 # Description of argument(s):
717 # client_id This client id can contain string value
718 # (e.g. 12345, "HMCID").
719 # lock_type Read lock or Write lock.
720
721 ${lock_type_list}= Split String ${lock_type} ,
722
723 ${session_info}= Create Redfish Session With ClientID ${client_id}
724 ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list} status_code=${HTTP_BAD_REQUEST}
725 Redfish Delete Session ${session_info}
726
727
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500728Verify Empty Lock Records For Invalid Session
729 [Documentation] Verify no lock record found for invalid session.
730 [Arguments] ${client_id}
731
732 # Description of argument(s):
733 # client_id This client id can contain string value
734 # (e.g. 12345, "HMCID").
735
736 ${session_info1}= Create Redfish Session With ClientID ${client_id}
737
738 ${lock_list1}= Get Locks List On Resource ${session_info1}
739 ${lock_length1}= Get Length ${lock_list1}
740
741 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
742 set to dictionary ${session_info2} SessionIDs xxyXyyYZZz
743
744 ${lock_list2}= Get Locks List On Resource ${session_info2}
Sushil Singhf9a536c2020-11-09 07:33:17 -0600745 ${lock_length2}= Get Length ${lock_list2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500746
Sushil Singhf9a536c2020-11-09 07:33:17 -0600747 Should Be Equal As Integers ${lock_length1} ${lock_length2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500748
749 Redfish Delete Session ${session_info1}
750
751
752Verify Acquire Lock Fails On Another Lock
753 [Documentation] Verify acquire lock on another lock fails.
754 [Arguments] ${client_id} ${lock_type}
755
756 # Description of argument(s):
757 # client_id This client id can contain string value
758 # (e.g. 12345, "HMCID").
759 # lock_type Read lock or Write lock.
760
761 @{lock_type_list}= Split String ${lock_type} ,
762 ${session_info}= Create Redfish Session With ClientID ${client_id}
763 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
764
765 ${trans_id_list}= Create List
766 Append To List ${trans_id_list} ${trans_id}
767
768 Verify Lock On Resource ${session_info} ${trans_id_list}
769 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500770
Sushil Singhdf390b62021-01-19 00:50:05 -0600771 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500772
773
Sushil Singhe33c6e62020-09-29 06:34:35 -0500774Verify Acquire Lock After Reboot
775 [Documentation] Acquire read and write lock after the reboot and release lock.
776 [Arguments] ${client_id} ${lock_type}
777
778 # Description of argument(s):
779 # client_id This client id can contain string value
780 # (e.g. 12345, "HMCID").
781 # lock_type Read lock or Write lock.
782
783 ${trans_id_list}= Create List
Sushil Singhf9a536c2020-11-09 07:33:17 -0600784 ${session_info}= Create Session With ClientID ${client_id}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500785 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
786 Redfish OBMC Reboot (off)
787 Redfish Login
788 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token}
789
790 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
791 Append To List ${trans_id_list} ${trans_id}
792 Verify Lock On Resource ${session_info} ${trans_id_list}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500793
Sushil Singhdf390b62021-01-19 00:50:05 -0600794 Release locks And Delete Session ${session_info} ${trans_id_list}
795
796
797Verify Acquire Multiple Lock Request At CEC Level
798 [Documentation] Acquire lock in loop.
799 [Arguments] ${client_id} ${lock_type}
800
801 # Description of argument(s):
802 # client_id This client id can contain string value
803 # (e.g. 12345, "HMCID").
804 # lock_type Read lock or Write lock.
805
806 ${trans_id_list}= Create List
807 @{lock_type_list}= Split String ${lock_type} ,
808 ${session_info}= Create Redfish Session With ClientID ${client_id}
809
810 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
811 Append To List ${trans_id_list} ${trans_id}
812
813 Verify Lock On Resource ${session_info} ${trans_id_list}
814
815 Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
816
817 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500818
819
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500820Verify Acquire And Release Lock In Loop
821 [Documentation] Acquire lock in loop.
822 [Arguments] ${client_id} ${lock_type}
823
824 # Description of argument(s):
825 # client_id This client id can contain string value
826 # (e.g. 12345, "HMCID").
827 # lock_type Read lock or Write lock.
828
829 FOR ${count} IN RANGE 1 11
830 ${trans_id_list}= Create List
831 ${session_info}= Create Redfish Session With ClientID ${client_id}
832 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
833 Append To List ${trans_id_list} ${trans_id}
834 Verify Lock On Resource ${session_info} ${trans_id_list}
835 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
836 ${trans_id_emptylist}= Create List
837 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
838 END
839
840 Redfish Delete Session ${session_info}
841
842
843Acquire And Release Multiple Locks
844 [Documentation] Acquire mutilple locks on resource.
845 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
846
847 # Description of argument(s):
848 # client_id This client id can contain string value
849 # (e.g. 12345, "HMCID").
850 # lock_type Read lock or Write lock.
851 # release_lock_type The value can be Transaction or Session.
852
853 @{lock_type_list}= Split String ${lock_type} ,
854 ${session_info}= Create Redfish Session With ClientID ${client_id}
855 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
856
857 ${trans_id_list}= Create List
858
859 Append To List ${trans_id_list} ${trans_id}
860 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
861
862 Append To List ${trans_id_list} ${trans_id}
863 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
864
865 Append To List ${trans_id_list} ${trans_id}
866 Verify Lock On Resource ${session_info} ${trans_id_list}
867 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type}
868
869 ${trans_id_emptylist}= Create List
870 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
871 Redfish Delete Session ${session_info}
872
873
susilsi794116c62021-03-04 07:57:51 -0600874Verify Release Lock When Session Deleted
875 [Documentation] Verify lock get released when session are deleted.
876 [Arguments] ${client_id} ${lock_type}
877
878 # Description of argument(s):
879 # client_ids This client id can contain string value
880 # (e.g. 12345, "HMCID").
881 # lock_type Read lock or Write lock.
882
883 ${trans_id_list}= Create List
884 @{lock_type_list}= Split String ${lock_type} ,
885
886 ${pre_session_info}= Create Redfish Session With ClientID ${client_id}
887
888 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
889 Append To List ${trans_id_list} ${trans_id}
890 Verify Lock On Resource ${pre_session_info} ${trans_id_list}
891
892 Redfish Delete Session ${pre_session_info}
893 ${post_session_info}= Create Redfish Session With ClientID ${client_id}
894 ${resp}= Get Locks List On Resource With Session List ${pre_session_info} ${HTTP_BAD_REQUEST}
895
896 Redfish Delete Session ${post_session_info}
897
898
899
Sushil Singh59011d02021-01-27 23:00:20 -0600900Verify Fail To Release Lock With Invalid TransactionID
George Keishing16b3c7b2021-01-28 09:23:37 -0600901 [Documentation] Verify fail to be release lock with invalid transaction ID.
Sushil Singh59011d02021-01-27 23:00:20 -0600902 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
903
904 # Description of argument(s):
905 # client_id This client id can contain string value
906 # (e.g. 12345, "HMCID").
907 # lock_type Read lock or Write lock.
908 # release_lock_type The value can be Transaction or Session.
909
910 ${trans_id_list}= Create List
911 @{lock_type_list}= Split String ${lock_type} ,
912
913 ${session_info}= Create Redfish Session With ClientID ${client_id}
914
915 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
916 ${value}= Get From Dictionary ${trans_id} TransactionID
917 ${value}= Evaluate ${value} + 10
918 Set To Dictionary ${trans_id} TransactionID ${value}
919 Append To List ${trans_id_list} ${trans_id}
920
921 Release Locks On Resource
922 ... ${session_info} ${trans_id_list}
923 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
924 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
925
926 ${trans_id_emptylist}= Create List
927 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
928 Redfish Delete Session ${session_info}
929
930
Sushil Singh1b590532021-01-20 05:13:54 -0600931Verify Fail To Release Multiple Lock With Invalid TransactionID
932 [Documentation] Verify release multiple locks with invalid transaction ID fails.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500933 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
934
935 # Description of argument(s):
936 # client_id This client id can contain string value
937 # (e.g. 12345, "HMCID").
938 # lock_type Read lock or Write lock.
939 # release_lock_type The value can be Transaction or Session.
940
941 ${trans_id_list}= Create List
942 @{lock_type_list}= Split String ${lock_type} ,
943
944 ${session_info}= Create Redfish Session With ClientID ${client_id}
945
946 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
947 ${value}= Get From Dictionary ${trans_id} TransactionID
948 ${value}= Evaluate ${value} + 10
949 Set To Dictionary ${trans_id} TransactionID ${value}
950 Append To List ${trans_id_list} ${trans_id}
951
952 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
953 ${value}= Get From Dictionary ${trans_id} TransactionID
954 ${value}= Evaluate ${value} + 10
955 Set To Dictionary ${trans_id} TransactionID ${value}
956 Append To List ${trans_id_list} ${trans_id}
957
958 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
959 ${value}= Get From Dictionary ${trans_id} TransactionID
960 ${value}= Evaluate ${value} + 10
961 Set To Dictionary ${trans_id} TransactionID ${value}
962 Append To List ${trans_id_list} ${trans_id}
963
964 Release Locks On Resource
965 ... ${session_info} ${trans_id_list}
966 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
967 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
968
969 ${trans_id_emptylist}= Create List
970 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
971 Redfish Delete Session ${session_info}
972
973
Sushil Singh8bee3582021-01-27 23:46:48 -0600974Verify Fail To Release Multiple Lock With Valid And Invalid TransactionID
George Keishing96143832021-03-23 07:55:08 -0500975 [Documentation] Verify fail to be release multiple lock with valid and invalid transaction ID.
Sushil Singh8bee3582021-01-27 23:46:48 -0600976 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
977
978 # Description of argument(s):
979 # client_id This client id can contain string value
980 # (e.g. 12345, "HMCID").
981 # lock_type Read lock or Write lock.
982 # release_lock_type The value can be Transaction or Session.
983
984 ${trans_id_list}= Create List
985 @{lock_type_list}= Split String ${lock_type} ,
986
987 ${session_info}= Create Redfish Session With ClientID ${client_id}
988
989 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
990 Append To List ${trans_id_list} ${trans_id}
991
992 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
993 ${value}= Get From Dictionary ${trans_id} TransactionID
994 ${value}= Evaluate ${value} + 10
995 Set To Dictionary ${trans_id} TransactionID ${value}
996 Append To List ${trans_id_list} ${trans_id}
997
998 Release Locks On Resource
999 ... ${session_info} ${trans_id_list}
1000 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
1001 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
1002
1003 ${trans_id_emptylist}= Create List
1004 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
1005 Redfish Delete Session ${session_info}
1006
1007
susilsi71d7b9962021-03-02 03:06:18 -06001008Verify Fail To Release Lock With TransactionID As String Type
George Keishing96143832021-03-23 07:55:08 -05001009 [Documentation] Verify fail to be release lock with transaction ID as string data type.
susilsi71d7b9962021-03-02 03:06:18 -06001010 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
1011
1012 # Description of argument(s):
1013 # client_id This client id can contain string value
1014 # (e.g. 12345, "HMCID").
1015 # lock_type Read lock or Write lock.
1016 # release_lock_type The value can be Transaction or Session.
1017
1018 ${trans_id_list}= Create List
1019 @{lock_type_list}= Split String ${lock_type} ,
1020
1021 ${session_info}= Create Redfish Session With ClientID ${client_id}
1022
1023 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1024
1025 Append To List ${trans_id_list} ${trans_id}
1026
1027 ${temp_trans_id_list}= Copy Dictionary ${trans_id_list} deepcopy=True
1028
1029 ${value}= Get From Dictionary ${trans_id_list}[0] TransactionID
1030 ${value}= Set Variable \'${value}\'
1031 Set To Dictionary ${temp_trans_id_list}[0] TransactionID ${value}
1032
1033 Release Locks On Resource
1034 ... ${session_info} ${temp_trans_id_list}
1035 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
1036
1037 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type}
1038
1039 ${trans_id_emptylist}= Create List
1040 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
1041 Redfish Delete Session ${session_info}
1042
1043
Sushil Singhd03f2ce2020-09-17 08:54:41 -05001044Verify Fail To Release Lock For Another Session
1045 [Documentation] Verify failed to release the lock form another session.
1046 [Arguments] ${client_id} ${lock_type}
1047
1048 # Description of argument(s):
1049 # client_id This client id can contain string value
1050 # (e.g. 12345, "HMCID").
1051 # lock_type Read lock or Write lock.
1052
1053 ${client_ids}= Split String ${client_id} ,
1054 ${lock_type_list}= Split String ${lock_type} ,
1055 ${trans_id_list1}= Create List
1056 ${trans_id_list2}= Create List
1057
1058 ${session_info1}= Create Redfish Session With ClientID ${client_ids}[0]
1059
1060 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1061 Append To List ${trans_id_list1} ${trans_id}
1062 Verify Lock On Resource ${session_info1} ${trans_id_list1}
1063
1064 ${session_info2}= Create Redfish Session With ClientID ${client_ids}[1]
1065 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
1066 Append To List ${trans_id_list2} ${trans_id}
1067 Verify Lock On Resource ${session_info2} ${trans_id_list2}
1068
1069 Release Locks On Resource
1070 ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED}
1071 Verify Lock On Resource ${session_info1} ${trans_id_list1}
1072 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session
1073 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session
1074 Redfish Delete Session ${session_info1}
1075 Redfish Delete Session ${session_info2}
1076
1077
Sushil Singhe33c6e62020-09-29 06:34:35 -05001078Verify Fail To Acquire Lock For Invalid Resource ID Data Type
1079 [Documentation] Verify fail to acquire the lock with invalid resource id data type.
1080 [Arguments] ${client_id} ${lock_type}
1081
1082 # Description of argument(s):
1083 # client_id This client id can contain string value
1084 # (e.g. 12345, "HMCID").
1085 # lock_type Read lock or Write lock.
1086
1087 ${session_info}= Create Redfish Session With ClientID ${client_id}
1088 Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
1089 ... ${lock_type} status_code=${HTTP_BAD_REQUEST}
1090 Redfish Delete Session ${session_info}
1091
1092
Sushil Singhd03f2ce2020-09-17 08:54:41 -05001093Verify Fail To Acquire Lock For Invalid Lock Data
George Keishing16b3c7b2021-01-28 09:23:37 -06001094 [Documentation] Verify fail to acquired lock with invalid lock types, lock flags, segment flags.
Sushil Singhd03f2ce2020-09-17 08:54:41 -05001095 [Arguments] ${client_id} ${lock_type} ${message}
1096
1097 # Description of argument(s):
1098 # client_id This client id can contain string value
1099 # (e.g. 12345, "HMCID").
1100 # lock_type Read lock or Write lock.
1101 # message Return message from URI.
1102
1103 ${session_info}= Create Redfish Session With ClientID ${client_id}
Sushil Singh8a3efe72021-08-26 08:16:41 -05001104 ${trans_id}= Redfish Post Acquire Invalid Lock
1105 ... ${lock_type} message=${message} status_code=${HTTP_BAD_REQUEST}
Sushil Singhd03f2ce2020-09-17 08:54:41 -05001106 Redfish Delete Session ${session_info}
Sushil Singhbace3002020-10-08 08:12:58 -05001107
1108
1109Verify No Locks Records For Session With No Acquired Lock
1110 [Documentation] Verify no records found for a session where no lock is acquired.
1111 [Arguments] ${client_id}
1112
1113 # Description of argument(s):
1114 # client_id This client id can contain string value
1115 # (e.g. 12345, "HMCID").
1116
1117 ${session_info}= Create Redfish Session With ClientID ${client_id}
1118 ${trans_id_emptylist}= Create List
1119 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
1120 Redfish Delete Session ${session_info}
Sushil Singh728ef9c2020-10-28 04:25:39 -05001121
1122
1123Create List Of Session ID
1124 [Documentation] Create session id list from session dict info.
1125 [Arguments] ${session_dict_info}
1126
1127 # Description of argument(s):
1128 # session_dict_info Session information in dict.
1129
1130 @{session_id_list}= Create List
1131
1132 FOR ${session} IN @{session_dict_info}
1133 Append To List ${session_id_list} ${session["SessionIDs"]}
1134 END
1135
1136 ${num_id}= Get Length ${session_id_list}
1137 Should Not Be Equal As Integers ${num_id} ${0}
1138
1139 ${session_id_list}= Evaluate json.dumps(${session_id_list}) json
1140
1141 [Return] ${session_id_list}
1142
1143
1144Get Locks List On Resource With Session List
1145 [Documentation] Get locks list from session of list.
1146 [Arguments] ${session_id_list} ${exp_status_code}=${HTTP_OK}
1147
1148 # Description of argument(s):
1149 # session_id_list Session ids list.
1150 # exp_status_code Expected HTTP status code.
1151
1152 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
1153 ... data={"SessionIDs": ${session_id_list}}
susilsi794116c62021-03-04 07:57:51 -06001154 Should Be Equal As Strings ${resp.status_code} ${exp_status_code}
Sushil Singh728ef9c2020-10-28 04:25:39 -05001155 ${locks}= Evaluate json.loads('''${resp.text}''') json
1156
1157 [Return] ${locks}
1158
1159
1160Verify List Of Session Lock On Resource
1161 [Documentation] Verify list of lock record from list of sessions.
1162 [Arguments] ${session_dict_info} ${transaction_id_list}
1163
1164 # Description of argument(s):
1165 # session_dict_info Session information in dict.
1166 # transaction_id_list Transaction id in list stored in dict.
1167
1168 ${session_id_list}= Create List Of Session ID ${session_dict_info}
1169 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
1170 ${lock_list}= Set Variable ${lock_list_resp['Records']}
1171
Sushil Singh8a3efe72021-08-26 08:16:41 -05001172 FOR ${session_id} ${tran_id} ${lock_record} IN ZIP
1173 ... ${session_dict_info} ${transaction_id_list} ${lock_list}
Sushil Singh728ef9c2020-10-28 04:25:39 -05001174 Valid Value session_id['SessionIDs'] ['${lock_record['SessionID']}']
1175 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock_record['TransactionID']}
1176 END
1177
1178
1179Verify Lock Records Of Multiple Session
1180 [Documentation] Verify all records found for a multiple sessions.
1181 [Arguments] ${client_ids} ${lock_type}
1182
1183 # Description of argument(s):
1184 # client_ids This client id can contain string value
1185 # (e.g. 12345, "HMCID").
1186 # lock_type Read lock or Write lock.
1187
1188 ${client_id_list}= Split String ${client_ids} ,
1189 ${lock_type_list}= Split String ${lock_type} ,
1190 ${trans_id_list1}= Create List
1191 ${trans_id_list2}= Create List
1192
1193 ${session_dict_list}= Create List
1194 ${lock_list}= Create List
1195
1196 ${client_id1}= Create List
1197 Append To List ${client_id1} ${client_id_list}[0]
1198 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1199 Append To List ${session_dict_list} ${session_info1}[0]
1200 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1201
1202 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1203 Append To List ${trans_id_list1} ${trans_id}
1204 Append To List ${lock_list} ${trans_id}
1205 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1206
1207
1208 ${client_id2}= Create List
1209 Append To List ${client_id2} ${client_id_list}[1]
1210 ${session_info2}= Create Session With List Of ClientID ${client_id2}
1211 Append To List ${session_dict_list} ${session_info2}[0]
1212 Verify A Session Created With ClientID ${client_id2} ${session_info2}
1213
1214 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
1215 Append To List ${trans_id_list2} ${trans_id}
1216 Append To List ${lock_list} ${trans_id}
1217 Verify Lock On Resource ${session_info2}[0] ${trans_id_list2}
1218
1219 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1220
1221 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1222 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1223
1224 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1225
1226 ${session_token}= Get From Dictionary ${session_info2}[0] SessionToken
1227 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1228
1229 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Transaction
1230
1231 ${trans_id_emptylist}= Create List
1232 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1233 Verify Lock On Resource ${session_info2}[0] ${trans_id_emptylist}
1234
1235 Redfish Delete List Of Session ${session_dict_list}
Sushil Singhf9a536c2020-11-09 07:33:17 -06001236
1237
1238Verify Lock Records For Multiple Invalid Session
1239 [Documentation] Verify no lock record found for multiple invalid session.
1240 [Arguments] ${client_id}
1241
1242 # Description of argument(s):
1243 # client_id This client id can contain string value
1244 # (e.g. 12345, "HMCID").
1245
1246 ${session_dict_list}= Create List
1247 ${invalid_session_ids}= Create List xxyXyyYZZz xXyXYyYZzz
1248
1249 ${session_info1}= Create Session With ClientID ${client_id}
1250
1251 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1252 set to dictionary ${session_info2} SessionIDs ${invalid_session_ids}[0]
1253 Append To List ${session_dict_list} ${session_info2}
1254
1255 ${session_info3}= Copy Dictionary ${session_info1} deepcopy=True
1256 set to dictionary ${session_info3} SessionIDs ${invalid_session_ids}[0]
1257 Append To List ${session_dict_list} ${session_info3}
1258
1259 ${lock_list1}= Get Locks List On Resource ${session_info1}
1260 ${lock_length1}= Get Length ${lock_list1}
1261
1262 ${session_id_list}= Create List Of Session ID ${session_dict_list}
1263 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
1264 ${lock_length2}= Get Length ${lock_list_resp['Records']}
1265
1266 Should Be Equal As Integers ${lock_length1} ${lock_length2}
1267
1268 Redfish Delete Session ${session_info1}
Sushil Singh11949a22020-11-13 06:12:16 -06001269
1270
1271Verify Lock Records For Multiple Invalid And Valid Session
1272 [Documentation] Verify all records found for a valid and invalid sessions.
1273 [Arguments] ${client_ids} ${lock_type}
1274
1275 # Description of argument(s):
1276 # client_ids This client id can contain string value
1277 # (e.g. 12345, "HMCID").
1278 # lock_type Read lock or Write lock.
1279
1280 ${client_id_list}= Split String ${client_ids} ,
1281 ${lock_type_list}= Split String ${lock_type} ,
1282 ${trans_id_list1}= Create List
1283 ${invalid_session_ids}= Create List xxyXyyYZZz
1284
1285 ${session_dict_list}= Create List
1286 ${lock_list}= Create List
1287
1288 ${client_id1}= Create List
1289 Append To List ${client_id1} ${client_id_list}[0]
1290 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1291 Append To List ${session_dict_list} ${session_info1}[0]
1292 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1293
1294 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1295 Append To List ${trans_id_list1} ${trans_id}
1296 Append To List ${lock_list} ${trans_id}
1297 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1298
1299 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1300 set to dictionary ${session_info2}[0] SessionIDs ${invalid_session_ids}[0]
1301 Append To List ${session_dict_list} ${session_info2}[0]
1302
1303 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1304
1305 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1306 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1307
1308 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1309
1310 ${trans_id_emptylist}= Create List
1311 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1312
1313 Redfish Delete Session ${session_info1}[0]