blob: d58f72dd1b6052bba33e6c6d0077efb414695ab5 [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 Singh1b590532021-01-20 05:13:54 -0600131Fail To Release Multiple Lock With Invalid TransactionID
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500132 [Documentation] Release in-valid lock result in fail.
Sushil Singh1b590532021-01-20 05:13:54 -0600133 [Tags] Fail_To_Release_Multiple_Lock_With_Invalid_TransactionID
134 [Template] Verify Fail To Release Multiple Lock With Invalid TransactionID
Vijayafdd2a12020-04-09 02:03:20 -0500135
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500136 # client_id lock_type release_lock_type
137 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction
138 12345 ReadCase2,ReadCase2,ReadCase2 Transaction
139 HMCID ReadCase3,ReadCase3,ReadCase3 Transaction
Vijayafdd2a12020-04-09 02:03:20 -0500140
141
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500142Fail To Release Lock For Another Session
143 [Documentation] Failed to release locks from another session.
144 [Tags] Fail_To_Release_Lock_For_Another_Session
145 [Template] Verify Fail To Release Lock For Another Session
Vijayafdd2a12020-04-09 02:03:20 -0500146
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500147 # client_id lock_type
148 HMCID-01,HMCID-02 ReadCase1,ReadCase1
Vijayafdd2a12020-04-09 02:03:20 -0500149
150
Sushil Singhe33c6e62020-09-29 06:34:35 -0500151Test Invalid Resource ID Data Type Locking
152 [Documentation] Failed to acquire lock for invalid resource id data type.
153 [Tags] Test_Invalid_Resource_ID_Data_Type_Locking
154 [Template] Verify Fail To Acquire Lock For Invalid Resource ID Data Type
155
156 # client_id lock_type
157 HMCID-01 ReadCase1
158 HMCID-01 ReadCase2
159 HMCID-01 ReadCase3
160 HMCID-01 WriteCase1
161 HMCID-01 WriteCase2
162 HMCID-01 WriteCase3
163
164
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500165Fail To Acquire Lock For Invalid Lock Type
166 [Documentation] Failed to acquire read, write lock for invalid lock data passed.
167 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Type
168 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
Vijayafdd2a12020-04-09 02:03:20 -0500169
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500170 # client_id lock_type message
171 HMCID-01 ReadCase1 ${BAD_REQUEST}
172 HMCID-01 ReadCase2 ${BAD_REQUEST}
173 HMCID-01 ReadCase3 ${BAD_REQUEST}
174 HMCID-01 ReadCase4 ${BAD_REQUEST}
175 HMCID-01 ReadCase5 ${BAD_REQUEST}
176 HMCID-01 WriteCase1 ${BAD_REQUEST}
177 HMCID-01 WriteCase2 ${BAD_REQUEST}
178 HMCID-01 WriteCase3 ${BAD_REQUEST}
179 HMCID-01 WriteCase4 ${BAD_REQUEST}
180 HMCID-01 WriteCase5 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500181
Vijayafdd2a12020-04-09 02:03:20 -0500182
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500183Fail To Acquire Lock For Invalid Lock Flag
184 [Documentation] Failed to acquire read write lock for invalid lock flag passed.
185 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Flag
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 ReadCase6 ${BAD_REQUEST}
190 HMCID-01 ReadCase7 ${BAD_REQUEST}
191 HMCID-01 ReadCase8 ${BAD_REQUEST}
192 HMCID-01 ReadCase9 ${BAD_REQUEST}
193 HMCID-01 ReadCase10 ${BAD_REQUEST}
194 HMCID-01 ReadCase11 ${BAD_REQUEST}
195 HMCID-01 WriteCase6 ${BAD_REQUEST}
196 HMCID-01 WriteCase7 ${BAD_REQUEST}
197 HMCID-01 WriteCase8 ${BAD_REQUEST}
198 HMCID-01 WriteCase9 ${BAD_REQUEST}
199 HMCID-01 WriteCase10 ${BAD_REQUEST}
200 HMCID-01 WriteCase11 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500201
Vijayafdd2a12020-04-09 02:03:20 -0500202
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500203Fail To Acquire Lock For Invalid Segment Flag
204 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
205 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Flag
206 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
207
208 # client_id lock_type message
209 HMCID-01 ReadCase12 ${BAD_REQUEST}
210 HMCID-01 ReadCase13 ${BAD_REQUEST}
211 HMCID-01 ReadCase14 ${BAD_REQUEST}
212 HMCID-01 WriteCase12 ${BAD_REQUEST}
213 HMCID-01 WriteCase13 ${BAD_REQUEST}
214 HMCID-01 WriteCase14 ${BAD_REQUEST}
Vijayafdd2a12020-04-09 02:03:20 -0500215
Sushil Singhbace3002020-10-08 08:12:58 -0500216
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600217Fail To Acquire Lock For Invalid Segment Data Type Flag
218 [Documentation] Failed to acquire read write lock for invalid segment flag passed.
219 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Data_Type_Flag
220 [Template] Verify Fail To Acquire Lock For Invalid Lock Data
221
222 # client_id lock_type message
223 HMCID-01 ReadCase15 ${EMPTY}
224 HMCID-01 ReadCase16 ${EMPTY}
225 HMCID-01 ReadCase17 ${EMPTY}
226 HMCID-01 ReadCase18 ${EMPTY}
227 HMCID-01 WriteCase15 ${EMPTY}
228 HMCID-01 WriteCase16 ${EMPTY}
229 HMCID-01 WriteCase17 ${EMPTY}
230 HMCID-01 WriteCase18 ${EMPTY}
231
232
Sushil Singhbace3002020-10-08 08:12:58 -0500233Get Empty Lock Records For Session Where No Locks Acquired
234 [Documentation] If session does not acquire locks then get lock should return
235 ... empty lock records.
236 [Tags] Get_Empty_Lock_Records_For_Session_Where_No_Locks_Acquired
237 [Template] Verify No Locks Records For Session With No Acquired Lock
238
239 # client_id
240 HMCID-01
241
Sushil Singh728ef9c2020-10-28 04:25:39 -0500242
Sushil Singhf9a536c2020-11-09 07:33:17 -0600243Get Lock Records Empty For Invalid Session
244 [Documentation] Record of lock list is empty for invalid session.
245 [Tags] Get_Lock_Records_Empty_For_Invalid_Session
246 [Template] Verify Empty Lock Records For Invalid Session
247
248 # client_id
249 HMCID-01
250
251
Sushil Singh728ef9c2020-10-28 04:25:39 -0500252Get Lock Records For Multiple Session
253 [Documentation] Get lock records of multiple session.
254 [Tags] Get_Lock_Records_For_Multiple_Session
255 [Template] Verify Lock Records Of Multiple Session
256
257 # client_ids lock_type
258 HMCID-01,HMCID-02 ReadCase1,ReadCase1
259
260
Sushil Singhf9a536c2020-11-09 07:33:17 -0600261Get Lock Records For Multiple Invalid Session
262 [Documentation] Record of lock list is empty for list of invalid session.
263 [Tags] Get_Lock_Records_For_Multiple_Invalid_Session
264 [Template] Verify Lock Records For Multiple Invalid Session
265
266 # client_id
267 HMCID-01
268
Sushil Singh11949a22020-11-13 06:12:16 -0600269
270Get Lock Records For Multiple Invalid And Valid Session
271 [Documentation] Get record of lock from invalid and valid session.
272 [Tags] Get_Lock_Records_For_Multiple_Invalid_And_Valid_Session
273 [Template] Verify Lock Records For Multiple Invalid And Valid Session
274
275 # client_id lock_type
276 HMCID-01,HMCID-02 ReadCase1
277
Vijaybc331e22020-02-27 04:17:37 -0600278*** Keywords ***
279
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500280Create Redfish Session With ClientID
281 [Documentation] Create redifish session with client id.
282 [Arguments] ${client_id}
Vijay85610ee2020-04-03 05:30:28 -0500283
284 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500285 # client_id This client id can contain string value
286 # (e.g. 12345, "HMCID").
Vijay85610ee2020-04-03 05:30:28 -0500287
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500288 ${session_info}= Create Dictionary
289 ${session}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}}
Vijay85610ee2020-04-03 05:30:28 -0500290
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500291 Set To Dictionary ${session_info} SessionIDs ${session['Id']}
292 Set To Dictionary ${session_info} ClientID ${session["Oem"]["OpenBMC"]["ClientID"]}
Vijay85610ee2020-04-03 05:30:28 -0500293
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500294 [Return] ${session_info}
Vijay85610ee2020-04-03 05:30:28 -0500295
296
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500297RW General Dictionary
298 [Documentation] Create dictionay of lock request.
299 [Arguments] ${read_case} ${res_id}
Vijaybc331e22020-02-27 04:17:37 -0600300
301 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500302 # read_case Read or Write lock type.
303 # res_id Resource id.
Vijaybc331e22020-02-27 04:17:37 -0600304
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500305 ${request_dict}= Create Dictionary
George Keishing566daaf2020-07-02 06:18:50 -0500306
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500307 FOR ${key} IN @{read_case.keys()}
308 Set To Dictionary ${request_dict} LockType ${key}
309 Set To Dictionary ${request_dict} SegmentFlags ${read_case["${key}"]}
310 END
Vijaybc331e22020-02-27 04:17:37 -0600311
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500312 Set To Dictionary ${request_dict} ResourceID ${res_id}
313
314 [Return] ${request_dict}
Vijaybc331e22020-02-27 04:17:37 -0600315
316
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500317Return Description Of Response
318 [Documentation] Return description of REST response.
Vijaybc331e22020-02-27 04:17:37 -0600319 [Arguments] ${resp_text}
320
321 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500322 # resp_text REST response body.
Vijaybc331e22020-02-27 04:17:37 -0600323
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500324 # resp_text after successful partition file upload looks like:
325 # {
326 # "Description": "File Created"
327 # }
Vijaybc331e22020-02-27 04:17:37 -0600328
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500329 ${message}= Evaluate json.loads('''${resp_text}''') json
330
331 [Return] ${message}
Vijaybc331e22020-02-27 04:17:37 -0600332
333
Sushil Singha7d71f02020-11-02 05:24:22 -0600334Verify Redfish Session Deleted
335 [Documentation] Verify the redfish session is deleted.
336 [Arguments] ${session_info}
337
338 # Description of argument(s):
339 # session_info Session information are stored in dictionary.
340
341 # ${session_info} = {
342 # 'SessionIDs': 'XXXXXXXXX',
343 # 'ClientID': 'XXXXXX',
344 # 'SessionToken': 'XXXXXXXXX',
345 # 'SessionResp': session response from redfish login
346 # }
347
348 # SessionIDs : Session IDs
349 # ClientID : Client ID
350 # SessionToken : Session token
351 # SessionResp : Response of creating an redfish login session
352
353 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions
354
355 FOR ${session} IN @{sessions['Members']}
356 Should Not Be Equal As Strings session ['/redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]}']
357 END
358
359
360Verify Redfish List Of Session Deleted
361 [Documentation] Verify all the list of redfish session is deleted.
362 [Arguments] ${session_info_list}
363
364 # Description of argument(s):
365 # session_info_list List contains individual session record are stored in dictionary.
366
367 # ${session_info_list} = [{
368 # 'SessionIDs': 'XXXXXXXXX',
369 # 'ClientID': 'XXXXXX',
370 # 'SessionToken': 'XXXXXXXXX',
371 # 'SessionResp': session response from redfish login
372 # }]
373
374 # SessionIDs : Session IDs
375 # ClientID : Client ID
376 # SessionToken : Session token
377 # SessionResp : Response of creating an redfish login session
378
379 FOR ${session_record} IN @{session_info_list}
380 Verify Redfish Session Deleted ${session_record}
381 END
382
383
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500384Redfish Post Acquire Lock
385 [Documentation] Acquire and release lock.
386 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600387
388 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500389 # lock_type Read lock or Write lock.
390 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600391
Sushil Singhe33c6e62020-09-29 06:34:35 -0500392 ${lock_dict_param}= Form Data To Acquire Lock ${lock_type}
393 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500394 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singhdf390b62021-01-19 00:50:05 -0600395
396 Run Keyword If ${status_code} == ${HTTP_BAD_REQUEST}
397 ... Valid Value ${BAD_REQUEST} ['${resp.content}']
398 ... ELSE
399 ... Run Keyword And Return Return Description Of Response ${resp.content}
Vijaybc331e22020-02-27 04:17:37 -0600400
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500401 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600402
403
Sushil Singh977f8f52020-11-20 06:32:50 -0600404Redfish Post Acquire List Lock
405 [Documentation] Acquire and release lock.
406 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
407
408 # Description of argument(s):
409 # lock_type Read lock or Write lock.
410 # status_code HTTP status code.
411
412 ${lock_dict_param}= Create Data To Acquire List Of Lock ${lock_type}
413 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
414 Should Be Equal As Strings ${resp.status_code} ${status_code}
415
416 [Return] ${resp}
417
418
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500419Redfish Post Acquire Invalid Lock
420 [Documentation] Redfish to post request to acquire in-valid lock.
421 [Arguments] ${lock_type} ${message} ${status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600422
423 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500424 # lock_type Read lock or Write lock.
425 # message Return message from URI.
426 # status_code HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600427
Sushil Singhe33c6e62020-09-29 06:34:35 -0500428 ${lock_dict_param}= Form Data To Acquire Invalid Lock ${lock_type}
429 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500430 Should Be Equal As Strings ${resp.status_code} ${status_code}
Sushil Singh3b3a7ec2020-11-23 03:54:06 -0600431 Run Keyword If '${message}' != '${EMPTY}'
432 ... Valid Value message ['${resp.content}']
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500433
434 [Return] ${resp}
Vijaybc331e22020-02-27 04:17:37 -0600435
436
Sushil Singhe33c6e62020-09-29 06:34:35 -0500437Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
438 [Documentation] Redfish to post request to acquire in-valid lock with invalid data type of resource id.
439 [Arguments] ${lock_type} ${status_code}=${HTTP_OK}
440
441 # Description of argument(s):
442 # lock_type Read lock or Write lock.
443 # status_code HTTP status code.
444
445 ${lock_dict_param}= Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID ${lock_type}
446 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
447 Should Be Equal As Strings ${resp.status_code} ${status_code}
448
449 [Return] ${resp}
450
451
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500452Form Data To Acquire Lock
453 [Documentation] Create a dictionay for lock request.
454 [Arguments] ${lock_type}
455
456 # Description of argument(s):
457 # lock_type Read lock or Write lock.
458
459 ${lock_res_info}= Get Lock Resource Information
460 ${resp}= RW General Dictionary
461 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
462 ... ${lock_res_info["Valid Case"]["ResourceID"]}
463 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500464 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500465
Sushil Singhe33c6e62020-09-29 06:34:35 -0500466 [Return] ${lock_request_dict}
467
468
Sushil Singh977f8f52020-11-20 06:32:50 -0600469Create Data To Acquire List Of Lock
470 [Documentation] Create a dictionay for list of lock request.
471 [Arguments] ${lock_type_list}
472
473 # Description of argument(s):
474 # lock_type Read lock or Write lock.
475
476 ${temp_list}= Create List
477 ${lock_res_info}= Get Lock Resource Information
478
479 FOR ${lock_type} IN @{lock_type_list}
480 ${resp}= RW General Dictionary
481 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
482 ... ${lock_res_info["Valid Case"]["ResourceID"]}
483 Append To List ${temp_list} ${resp}
484 END
485
486 ${lock_request_dict}= Create Dictionary Request=${temp_list}
487
488 [Return] ${lock_request_dict}
489
490
Sushil Singhe33c6e62020-09-29 06:34:35 -0500491Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID
492 [Documentation] Create a dictionay for in-valid lock request.
493 [Arguments] ${lock_type}
494
495 # Description of argument(s):
496 # lock_type Read lock or Write lock.
497
498 ${lock_res_info}= Get Lock Resource Information
499 ${resp}= RW General Dictionary
500 ... ${lock_res_info["Valid Case"]["${lock_type}"]}
501 ... ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]}
502 ${temp_list}= Create List ${resp}
503 ${lock_request_dict}= Create Dictionary Request=${temp_list}
504
505 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500506
507
508Form Data To Acquire Invalid Lock
509 [Documentation] Create a dictionay for in-valid lock request.
510 [Arguments] ${lock_type}
511
512 # Description of argument(s):
513 # lock_type Read lock or Write lock.
514
515 ${lock_res_info}= Get Lock Resource Information
516 ${resp}= RW General Dictionary
517 ... ${lock_res_info["Invalid Case"]["${lock_type}"]}
518 ... ${lock_res_info["Valid Case"]["ResourceID"]}
519 ${temp_list}= Create List ${resp}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500520 ${lock_request_dict}= Create Dictionary Request=${temp_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500521
Sushil Singhe33c6e62020-09-29 06:34:35 -0500522 [Return] ${lock_request_dict}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500523
524
525Get Locks List On Resource
Vijaybc331e22020-02-27 04:17:37 -0600526 [Documentation] Get locks list.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500527 [Arguments] ${session_info} ${exp_status_code}=${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600528
529 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500530 # session_info Session information in dict.
531 # exp_status_code Expected HTTP status code.
Vijaybc331e22020-02-27 04:17:37 -0600532
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500533 ${data}= Set Variable {"SessionIDs": ["${session_info['SessionIDs']}"]}
George Keishing566daaf2020-07-02 06:18:50 -0500534 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
535 ... data=${data}
Vijaybc331e22020-02-27 04:17:37 -0600536 ${locks}= Evaluate json.loads('''${resp.text}''') json
537
538 [Return] ${locks["Records"]}
539
540
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500541Verify Lock On Resource
542 [Documentation] Verify lock on resource.
543 [Arguments] ${session_info} ${transaction_id}
Vijaybc331e22020-02-27 04:17:37 -0600544
545 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500546 # session_info Session information in dict.
547 # transaction_id Transaction id in list stored in dict.
Vijaybc331e22020-02-27 04:17:37 -0600548
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500549 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']}
550 Rprint Vars sessions
551 ${lock_list}= Get Locks List On Resource ${session_info}
552 ${lock_length}= Get Length ${lock_list}
553 ${tran_id_length}= Get Length ${transaction_id}
554 Should Be Equal As Integers ${tran_id_length} ${lock_length}
Vijayafdd2a12020-04-09 02:03:20 -0500555
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500556 FOR ${tran_id} ${lock} IN ZIP ${transaction_id} ${lock_list}
557 Valid Value session_info['ClientID'] ['${lock['HMCID']}']
558 Valid Value session_info['SessionIDs'] ['${lock['SessionID']}']
559 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock['TransactionID']}
Vijaybc331e22020-02-27 04:17:37 -0600560 END
561
Vijaybc331e22020-02-27 04:17:37 -0600562
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500563Acquire Lock On Resource
564 [Documentation] Acquire lock on resource.
565 [Arguments] ${client_id} ${lock_type} ${reboot_flag}=False
Vijaybc331e22020-02-27 04:17:37 -0600566
567 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500568 # client_id This client id can contain string value
569 # (e.g. 12345, "HMCID").
570 # lock_type Read lock or Write lock.
571 # reboot_flag Flag is used to run reboot the BMC code.
572 # (e.g. True or False).
Vijaybc331e22020-02-27 04:17:37 -0600573
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500574 ${trans_id_list}= Create List
575 ${session_info}= Create Redfish Session With ClientID ${client_id}
576 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
577 Append To List ${trans_id_list} ${trans_id}
578 Verify Lock On Resource ${session_info} ${trans_id_list}
George Keishing566daaf2020-07-02 06:18:50 -0500579
Sushil Singhe33c6e62020-09-29 06:34:35 -0500580 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
Vijaybc331e22020-02-27 04:17:37 -0600581
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500582 Run Keyword If '${reboot_flag}' == 'True'
583 ... Run Keywords Redfish OBMC Reboot (off) AND
584 ... Redfish Login AND
Sushil Singhe33c6e62020-09-29 06:34:35 -0500585 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500586 ... Verify Lock On Resource ${session_info} ${trans_id_list} AND
587 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600588
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500589 Run Keyword If '${reboot_flag}' == 'False'
590 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
Vijaybc331e22020-02-27 04:17:37 -0600591
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500592 ${trans_id_emptylist}= Create List
593 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
594 Redfish Delete Session ${session_info}
Vijaybc331e22020-02-27 04:17:37 -0600595
Vijaybc331e22020-02-27 04:17:37 -0600596
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500597Form Data To Release Lock
598 [Documentation] Create a dictonay to release lock.
599 [Arguments] ${trans_id_list}
Vijay355daac2020-03-26 12:06:08 -0500600
601 # Description of argument(s):
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500602 # trans_id_list
Vijay355daac2020-03-26 12:06:08 -0500603
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500604 @{tran_ids}= Create List
Vijay355daac2020-03-26 12:06:08 -0500605
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500606 FOR ${item} IN @{trans_id_list}
607 Append To List ${tran_ids} ${item['TransactionID']}
608 END
609
610 [Return] ${tran_ids}
611
612
613Release Locks On Resource
614 [Documentation] Redfish request to release a lock.
615 [Arguments] ${session_info} ${trans_id_list} ${release_lock_type}=Transaction ${status_code}=${HTTP_OK}
616
617 # Description of argument(s):
618 # session_info Session information in dict.
619 # trans_id_list Transaction id list.
620 # release_lock_type Release lock by Transaction, Session.
621 # status_code HTTP status code.
622
623 ${tran_ids}= Form Data To Release Lock ${trans_id_list}
624 ${data}= Set Variable {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}}
625 ${data}= Evaluate json.dumps(${data}) json
626 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock data=${data}
627 Should Be Equal As Strings ${resp.status_code} ${status_code}
628
629
Sushil Singhdf390b62021-01-19 00:50:05 -0600630Release locks And Delete Session
631 [Documentation] Release locks and delete redfish session.
632 [Arguments] ${session_info} ${trans_id_list}
633
634 Release Locks On Resource ${session_info} ${trans_id_list}
635
636 ${trans_id_emptylist}= Create List
637 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
638
639 Redfish Delete Session ${session_info}
640
641
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500642Acquire Lock On Another Lock
643 [Documentation] Acquire lock on another lock.
644 [Arguments] ${client_id}
645
646 # Description of argument(s):
647 # client_id This client id can contain string value
648 # (e.g. 12345, "HMCID").
649
650 ${trans_id_list}= Create List
651 ${session_info}= Create Redfish Session With ClientID ${client_id}
652
653 ${trans_id}= Redfish Post Acquire Lock ReadCase1
654 Append To List ${trans_id_list} ${trans_id}
655
656 ${trans_id}= Redfish Post Acquire Lock ReadCase1
657 Append To List ${trans_id_list} ${trans_id}
658
659 Verify Lock On Resource ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500660
Sushil Singhdf390b62021-01-19 00:50:05 -0600661 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500662
663
Sushil Singh977f8f52020-11-20 06:32:50 -0600664Verify Fail To Acquire Read And Write In Single Request
665 [Documentation] Verify fail to acquire read and write lock passed in single request.
666 [Arguments] ${client_id} ${lock_type}
667
668 # Description of argument(s):
669 # client_id This client id can contain string value
670 # (e.g. 12345, "HMCID").
671 # lock_type Read lock or Write lock.
672
673 ${lock_type_list}= Split String ${lock_type} ,
674
675 ${session_info}= Create Redfish Session With ClientID ${client_id}
676 ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list} status_code=${HTTP_BAD_REQUEST}
677 Redfish Delete Session ${session_info}
678
679
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500680Verify Empty Lock Records For Invalid Session
681 [Documentation] Verify no lock record found for invalid session.
682 [Arguments] ${client_id}
683
684 # Description of argument(s):
685 # client_id This client id can contain string value
686 # (e.g. 12345, "HMCID").
687
688 ${session_info1}= Create Redfish Session With ClientID ${client_id}
689
690 ${lock_list1}= Get Locks List On Resource ${session_info1}
691 ${lock_length1}= Get Length ${lock_list1}
692
693 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
694 set to dictionary ${session_info2} SessionIDs xxyXyyYZZz
695
696 ${lock_list2}= Get Locks List On Resource ${session_info2}
Sushil Singhf9a536c2020-11-09 07:33:17 -0600697 ${lock_length2}= Get Length ${lock_list2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500698
Sushil Singhf9a536c2020-11-09 07:33:17 -0600699 Should Be Equal As Integers ${lock_length1} ${lock_length2}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500700
701 Redfish Delete Session ${session_info1}
702
703
704Verify Acquire Lock Fails On Another Lock
705 [Documentation] Verify acquire lock on another lock fails.
706 [Arguments] ${client_id} ${lock_type}
707
708 # Description of argument(s):
709 # client_id This client id can contain string value
710 # (e.g. 12345, "HMCID").
711 # lock_type Read lock or Write lock.
712
713 @{lock_type_list}= Split String ${lock_type} ,
714 ${session_info}= Create Redfish Session With ClientID ${client_id}
715 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
716
717 ${trans_id_list}= Create List
718 Append To List ${trans_id_list} ${trans_id}
719
720 Verify Lock On Resource ${session_info} ${trans_id_list}
721 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500722
Sushil Singhdf390b62021-01-19 00:50:05 -0600723 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500724
725
Sushil Singhe33c6e62020-09-29 06:34:35 -0500726Verify Acquire Lock After Reboot
727 [Documentation] Acquire read and write lock after the reboot and release lock.
728 [Arguments] ${client_id} ${lock_type}
729
730 # Description of argument(s):
731 # client_id This client id can contain string value
732 # (e.g. 12345, "HMCID").
733 # lock_type Read lock or Write lock.
734
735 ${trans_id_list}= Create List
Sushil Singhf9a536c2020-11-09 07:33:17 -0600736 ${session_info}= Create Session With ClientID ${client_id}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500737 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN}
738 Redfish OBMC Reboot (off)
739 Redfish Login
740 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token}
741
742 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
743 Append To List ${trans_id_list} ${trans_id}
744 Verify Lock On Resource ${session_info} ${trans_id_list}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500745
Sushil Singhdf390b62021-01-19 00:50:05 -0600746 Release locks And Delete Session ${session_info} ${trans_id_list}
747
748
749Verify Acquire Multiple Lock Request At CEC Level
750 [Documentation] Acquire lock in loop.
751 [Arguments] ${client_id} ${lock_type}
752
753 # Description of argument(s):
754 # client_id This client id can contain string value
755 # (e.g. 12345, "HMCID").
756 # lock_type Read lock or Write lock.
757
758 ${trans_id_list}= Create List
759 @{lock_type_list}= Split String ${lock_type} ,
760 ${session_info}= Create Redfish Session With ClientID ${client_id}
761
762 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
763 Append To List ${trans_id_list} ${trans_id}
764
765 Verify Lock On Resource ${session_info} ${trans_id_list}
766
767 Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT}
768
769 Release locks And Delete Session ${session_info} ${trans_id_list}
Sushil Singhe33c6e62020-09-29 06:34:35 -0500770
771
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500772Verify Acquire And Release Lock In Loop
773 [Documentation] Acquire lock in loop.
774 [Arguments] ${client_id} ${lock_type}
775
776 # Description of argument(s):
777 # client_id This client id can contain string value
778 # (e.g. 12345, "HMCID").
779 # lock_type Read lock or Write lock.
780
781 FOR ${count} IN RANGE 1 11
782 ${trans_id_list}= Create List
783 ${session_info}= Create Redfish Session With ClientID ${client_id}
784 ${trans_id}= Redfish Post Acquire Lock ${lock_type}
785 Append To List ${trans_id_list} ${trans_id}
786 Verify Lock On Resource ${session_info} ${trans_id_list}
787 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK}
788 ${trans_id_emptylist}= Create List
789 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
790 END
791
792 Redfish Delete Session ${session_info}
793
794
795Acquire And Release Multiple Locks
796 [Documentation] Acquire mutilple locks on resource.
797 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
798
799 # Description of argument(s):
800 # client_id This client id can contain string value
801 # (e.g. 12345, "HMCID").
802 # lock_type Read lock or Write lock.
803 # release_lock_type The value can be Transaction or Session.
804
805 @{lock_type_list}= Split String ${lock_type} ,
806 ${session_info}= Create Redfish Session With ClientID ${client_id}
807 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
808
809 ${trans_id_list}= Create List
810
811 Append To List ${trans_id_list} ${trans_id}
812 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
813
814 Append To List ${trans_id_list} ${trans_id}
815 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
816
817 Append To List ${trans_id_list} ${trans_id}
818 Verify Lock On Resource ${session_info} ${trans_id_list}
819 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type}
820
821 ${trans_id_emptylist}= Create List
822 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
823 Redfish Delete Session ${session_info}
824
825
Sushil Singh1b590532021-01-20 05:13:54 -0600826Verify Fail To Release Multiple Lock With Invalid TransactionID
827 [Documentation] Verify release multiple locks with invalid transaction ID fails.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500828 [Arguments] ${client_id} ${lock_type} ${release_lock_type}
829
830 # Description of argument(s):
831 # client_id This client id can contain string value
832 # (e.g. 12345, "HMCID").
833 # lock_type Read lock or Write lock.
834 # release_lock_type The value can be Transaction or Session.
835
836 ${trans_id_list}= Create List
837 @{lock_type_list}= Split String ${lock_type} ,
838
839 ${session_info}= Create Redfish Session With ClientID ${client_id}
840
841 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
842 ${value}= Get From Dictionary ${trans_id} TransactionID
843 ${value}= Evaluate ${value} + 10
844 Set To Dictionary ${trans_id} TransactionID ${value}
845 Append To List ${trans_id_list} ${trans_id}
846
847 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
848 ${value}= Get From Dictionary ${trans_id} TransactionID
849 ${value}= Evaluate ${value} + 10
850 Set To Dictionary ${trans_id} TransactionID ${value}
851 Append To List ${trans_id_list} ${trans_id}
852
853 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2]
854 ${value}= Get From Dictionary ${trans_id} TransactionID
855 ${value}= Evaluate ${value} + 10
856 Set To Dictionary ${trans_id} TransactionID ${value}
857 Append To List ${trans_id_list} ${trans_id}
858
859 Release Locks On Resource
860 ... ${session_info} ${trans_id_list}
861 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST}
862 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session
863
864 ${trans_id_emptylist}= Create List
865 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
866 Redfish Delete Session ${session_info}
867
868
869Verify Fail To Release Lock For Another Session
870 [Documentation] Verify failed to release the lock form another session.
871 [Arguments] ${client_id} ${lock_type}
872
873 # Description of argument(s):
874 # client_id This client id can contain string value
875 # (e.g. 12345, "HMCID").
876 # lock_type Read lock or Write lock.
877
878 ${client_ids}= Split String ${client_id} ,
879 ${lock_type_list}= Split String ${lock_type} ,
880 ${trans_id_list1}= Create List
881 ${trans_id_list2}= Create List
882
883 ${session_info1}= Create Redfish Session With ClientID ${client_ids}[0]
884
885 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
886 Append To List ${trans_id_list1} ${trans_id}
887 Verify Lock On Resource ${session_info1} ${trans_id_list1}
888
889 ${session_info2}= Create Redfish Session With ClientID ${client_ids}[1]
890 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
891 Append To List ${trans_id_list2} ${trans_id}
892 Verify Lock On Resource ${session_info2} ${trans_id_list2}
893
894 Release Locks On Resource
895 ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED}
896 Verify Lock On Resource ${session_info1} ${trans_id_list1}
897 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session
898 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session
899 Redfish Delete Session ${session_info1}
900 Redfish Delete Session ${session_info2}
901
902
Sushil Singhe33c6e62020-09-29 06:34:35 -0500903Verify Fail To Acquire Lock For Invalid Resource ID Data Type
904 [Documentation] Verify fail to acquire the lock with invalid resource id data type.
905 [Arguments] ${client_id} ${lock_type}
906
907 # Description of argument(s):
908 # client_id This client id can contain string value
909 # (e.g. 12345, "HMCID").
910 # lock_type Read lock or Write lock.
911
912 ${session_info}= Create Redfish Session With ClientID ${client_id}
913 Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
914 ... ${lock_type} status_code=${HTTP_BAD_REQUEST}
915 Redfish Delete Session ${session_info}
916
917
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500918Verify Fail To Acquire Lock For Invalid Lock Data
Sushil Singhe33c6e62020-09-29 06:34:35 -0500919 [Documentation] Verify fail to acquired lock with invalid lock types, lock flags, segement flags.
Sushil Singhd03f2ce2020-09-17 08:54:41 -0500920 [Arguments] ${client_id} ${lock_type} ${message}
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 # message Return message from URI.
927
928 ${session_info}= Create Redfish Session With ClientID ${client_id}
929 ${trans_id}= Redfish Post Acquire Invalid Lock ${lock_type} message=${message} status_code=${HTTP_BAD_REQUEST}
930 Redfish Delete Session ${session_info}
Sushil Singhbace3002020-10-08 08:12:58 -0500931
932
933Verify No Locks Records For Session With No Acquired Lock
934 [Documentation] Verify no records found for a session where no lock is acquired.
935 [Arguments] ${client_id}
936
937 # Description of argument(s):
938 # client_id This client id can contain string value
939 # (e.g. 12345, "HMCID").
940
941 ${session_info}= Create Redfish Session With ClientID ${client_id}
942 ${trans_id_emptylist}= Create List
943 Verify Lock On Resource ${session_info} ${trans_id_emptylist}
944 Redfish Delete Session ${session_info}
Sushil Singh728ef9c2020-10-28 04:25:39 -0500945
946
947Create List Of Session ID
948 [Documentation] Create session id list from session dict info.
949 [Arguments] ${session_dict_info}
950
951 # Description of argument(s):
952 # session_dict_info Session information in dict.
953
954 @{session_id_list}= Create List
955
956 FOR ${session} IN @{session_dict_info}
957 Append To List ${session_id_list} ${session["SessionIDs"]}
958 END
959
960 ${num_id}= Get Length ${session_id_list}
961 Should Not Be Equal As Integers ${num_id} ${0}
962
963 ${session_id_list}= Evaluate json.dumps(${session_id_list}) json
964
965 [Return] ${session_id_list}
966
967
968Get Locks List On Resource With Session List
969 [Documentation] Get locks list from session of list.
970 [Arguments] ${session_id_list} ${exp_status_code}=${HTTP_OK}
971
972 # Description of argument(s):
973 # session_id_list Session ids list.
974 # exp_status_code Expected HTTP status code.
975
976 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList
977 ... data={"SessionIDs": ${session_id_list}}
978 ${locks}= Evaluate json.loads('''${resp.text}''') json
979
980 [Return] ${locks}
981
982
983Verify List Of Session Lock On Resource
984 [Documentation] Verify list of lock record from list of sessions.
985 [Arguments] ${session_dict_info} ${transaction_id_list}
986
987 # Description of argument(s):
988 # session_dict_info Session information in dict.
989 # transaction_id_list Transaction id in list stored in dict.
990
991 ${session_id_list}= Create List Of Session ID ${session_dict_info}
992 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
993 ${lock_list}= Set Variable ${lock_list_resp['Records']}
994
995 FOR ${session_id} ${tran_id} ${lock_record} IN ZIP ${session_dict_info} ${transaction_id_list} ${lock_list}
996 Valid Value session_id['SessionIDs'] ['${lock_record['SessionID']}']
997 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock_record['TransactionID']}
998 END
999
1000
1001Verify Lock Records Of Multiple Session
1002 [Documentation] Verify all records found for a multiple sessions.
1003 [Arguments] ${client_ids} ${lock_type}
1004
1005 # Description of argument(s):
1006 # client_ids This client id can contain string value
1007 # (e.g. 12345, "HMCID").
1008 # lock_type Read lock or Write lock.
1009
1010 ${client_id_list}= Split String ${client_ids} ,
1011 ${lock_type_list}= Split String ${lock_type} ,
1012 ${trans_id_list1}= Create List
1013 ${trans_id_list2}= Create List
1014
1015 ${session_dict_list}= Create List
1016 ${lock_list}= Create List
1017
1018 ${client_id1}= Create List
1019 Append To List ${client_id1} ${client_id_list}[0]
1020 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1021 Append To List ${session_dict_list} ${session_info1}[0]
1022 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1023
1024 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1025 Append To List ${trans_id_list1} ${trans_id}
1026 Append To List ${lock_list} ${trans_id}
1027 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1028
1029
1030 ${client_id2}= Create List
1031 Append To List ${client_id2} ${client_id_list}[1]
1032 ${session_info2}= Create Session With List Of ClientID ${client_id2}
1033 Append To List ${session_dict_list} ${session_info2}[0]
1034 Verify A Session Created With ClientID ${client_id2} ${session_info2}
1035
1036 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1]
1037 Append To List ${trans_id_list2} ${trans_id}
1038 Append To List ${lock_list} ${trans_id}
1039 Verify Lock On Resource ${session_info2}[0] ${trans_id_list2}
1040
1041 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1042
1043 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1044 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1045
1046 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1047
1048 ${session_token}= Get From Dictionary ${session_info2}[0] SessionToken
1049 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1050
1051 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Transaction
1052
1053 ${trans_id_emptylist}= Create List
1054 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1055 Verify Lock On Resource ${session_info2}[0] ${trans_id_emptylist}
1056
1057 Redfish Delete List Of Session ${session_dict_list}
Sushil Singhf9a536c2020-11-09 07:33:17 -06001058
1059
1060Verify Lock Records For Multiple Invalid Session
1061 [Documentation] Verify no lock record found for multiple invalid session.
1062 [Arguments] ${client_id}
1063
1064 # Description of argument(s):
1065 # client_id This client id can contain string value
1066 # (e.g. 12345, "HMCID").
1067
1068 ${session_dict_list}= Create List
1069 ${invalid_session_ids}= Create List xxyXyyYZZz xXyXYyYZzz
1070
1071 ${session_info1}= Create Session With ClientID ${client_id}
1072
1073 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1074 set to dictionary ${session_info2} SessionIDs ${invalid_session_ids}[0]
1075 Append To List ${session_dict_list} ${session_info2}
1076
1077 ${session_info3}= Copy Dictionary ${session_info1} deepcopy=True
1078 set to dictionary ${session_info3} SessionIDs ${invalid_session_ids}[0]
1079 Append To List ${session_dict_list} ${session_info3}
1080
1081 ${lock_list1}= Get Locks List On Resource ${session_info1}
1082 ${lock_length1}= Get Length ${lock_list1}
1083
1084 ${session_id_list}= Create List Of Session ID ${session_dict_list}
1085 ${lock_list_resp}= Get Locks List On Resource With Session List ${session_id_list}
1086 ${lock_length2}= Get Length ${lock_list_resp['Records']}
1087
1088 Should Be Equal As Integers ${lock_length1} ${lock_length2}
1089
1090 Redfish Delete Session ${session_info1}
Sushil Singh11949a22020-11-13 06:12:16 -06001091
1092
1093Verify Lock Records For Multiple Invalid And Valid Session
1094 [Documentation] Verify all records found for a valid and invalid sessions.
1095 [Arguments] ${client_ids} ${lock_type}
1096
1097 # Description of argument(s):
1098 # client_ids This client id can contain string value
1099 # (e.g. 12345, "HMCID").
1100 # lock_type Read lock or Write lock.
1101
1102 ${client_id_list}= Split String ${client_ids} ,
1103 ${lock_type_list}= Split String ${lock_type} ,
1104 ${trans_id_list1}= Create List
1105 ${invalid_session_ids}= Create List xxyXyyYZZz
1106
1107 ${session_dict_list}= Create List
1108 ${lock_list}= Create List
1109
1110 ${client_id1}= Create List
1111 Append To List ${client_id1} ${client_id_list}[0]
1112 ${session_info1}= Create Session With List Of ClientID ${client_id1}
1113 Append To List ${session_dict_list} ${session_info1}[0]
1114 Verify A Session Created With ClientID ${client_id1} ${session_info1}
1115
1116 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0]
1117 Append To List ${trans_id_list1} ${trans_id}
1118 Append To List ${lock_list} ${trans_id}
1119 Verify Lock On Resource ${session_info1}[0] ${trans_id_list1}
1120
1121 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True
1122 set to dictionary ${session_info2}[0] SessionIDs ${invalid_session_ids}[0]
1123 Append To List ${session_dict_list} ${session_info2}[0]
1124
1125 Verify List Of Session Lock On Resource ${session_dict_list} ${lock_list}
1126
1127 ${session_token}= Get From Dictionary ${session_info1}[0] SessionToken
1128 Set Global Variable ${XAUTH_TOKEN} ${session_token}
1129
1130 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Transaction
1131
1132 ${trans_id_emptylist}= Create List
1133 Verify Lock On Resource ${session_info1}[0] ${trans_id_emptylist}
1134
1135 Redfish Delete Session ${session_info1}[0]