1*** Settings *** 2 3Documentation Test lock management feature of management console on BMC. 4 5Resource ../../lib/resource.robot 6Resource ../../lib/openbmc_ffdc.robot 7Resource ../../lib/bmc_redfish_utils.robot 8Resource ../../lib/external_intf/management_console_utils.robot 9 10Suite Setup Run Keyword And Ignore Error Delete All Redfish Sessions 11Suite Teardown Redfish.Logout 12Test Setup Printn 13Test Teardown FFDC On Test Case Fail 14 15*** Variables *** 16 17${BAD_REQUEST} Bad Request 18 19*** Test Cases *** 20 21Acquire Read Write Lock 22 [Documentation] Acquire and release different read locks. 23 [Tags] Acquire_Read_Write_Lock 24 [Template] Acquire Lock On Resource 25 26 # client_id lock_type reboot_flag 27 HMCID-01 ReadCase1 False 28 HMCID-01 ReadCase2 False 29 HMCID-01 ReadCase3 False 30 HMCID-01 WriteCase1 False 31 HMCID-01 WriteCase2 False 32 HMCID-01 WriteCase3 False 33 34 35Check Lock Persistency On BMC Reboot 36 [Documentation] Acquire lock and check after reboot it remain same. 37 [Tags] Check_Lock_Persistency_On_BMC_Reboot 38 [Template] Acquire Lock On Resource 39 40 # client_id lock_type reboot_flag 41 HMCID-01 ReadCase1 True 42 HMCID-01 ReadCase2 True 43 HMCID-01 ReadCase3 True 44 HMCID-01 WriteCase1 True 45 HMCID-01 WriteCase2 True 46 HMCID-01 WriteCase3 True 47 48 49Acquire Read Lock On Read Lock 50 [Documentation] Acquire read lock on another read lock. 51 [Tags] Acquire_Read_Lock_On_Read_Lock 52 [Template] Acquire Lock On Another Lock 53 54 # client_id 55 HMCID-01 56 57 58Get Lock Records Empty For Invalid Session 59 [Documentation] Record of lock list is empty for invalid session. 60 [Tags] Get_Lock_Records_Empty_For_Invalid_Session 61 [Template] Verify Empty Lock Records For Invalid Session 62 63 # client_id 64 HMCID-01 65 66 67Fail To Acquire Lock On Another Lock 68 [Documentation] Fail to acquire another lock. 69 [Tags] Fail_To_Acquire_Lock_On_Another_Lock 70 [Template] Verify Acquire Lock Fails On Another Lock 71 72 # client_id lock_type 73 HMCID-01 ReadCase2,WriteCase2 74 HMCID-01 WriteCase2,WriteCase2 75 HMCID-01 WriteCase2,ReadCase2 76 77 78Acquire Lock After Reboot 79 [Documentation] Acquire and release read and write locks after reboot. 80 [Tags] Acquire_Lock_After_Reboot 81 [Template] Verify Acquire Lock After Reboot 82 83 # client_id lock_type 84 HMCID-01 ReadCase1 85 HMCID-01 ReadCase2 86 HMCID-01 ReadCase3 87 HMCID-01 WriteCase1 88 HMCID-01 WriteCase2 89 HMCID-01 WriteCase3 90 91 92Acquire And Release Lock In Loop 93 [Documentation] Acquire and release read, write locks in loop. 94 [Tags] Acquire_And_Release_Lock_In_Loop 95 [Template] Verify Acquire And Release Lock In Loop 96 97 # client_id lock_type 98 HMCID-01 ReadCase1 99 HMCID-01 ReadCase2 100 HMCID-01 ReadCase3 101 HMCID-01 WriteCase1 102 HMCID-01 WriteCase2 103 HMCID-01 WriteCase3 104 105 106Verify Release Of Valid Locks 107 [Documentation] Release all valid locks. 108 [Tags] Verify_Release_Of_Valid_Locks 109 [Template] Acquire And Release Multiple Locks 110 111 # client_id lock_type release_lock_type 112 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction 113 HMCID-02 ReadCase1,ReadCase1,ReadCase1 Session 114 115 116Invalid Locks Fail To Release 117 [Documentation] Release in-valid lock result in fail. 118 [Tags] Invalid_Locks_Fail_To_Release 119 [Template] Verify Invalid Locks Fail To Release 120 121 # client_id lock_type release_lock_type 122 HMCID-01 ReadCase1,ReadCase1,ReadCase1 Transaction 123 12345 ReadCase2,ReadCase2,ReadCase2 Transaction 124 HMCID ReadCase3,ReadCase3,ReadCase3 Transaction 125 126 127Fail To Release Lock For Another Session 128 [Documentation] Failed to release locks from another session. 129 [Tags] Fail_To_Release_Lock_For_Another_Session 130 [Template] Verify Fail To Release Lock For Another Session 131 132 # client_id lock_type 133 HMCID-01,HMCID-02 ReadCase1,ReadCase1 134 135 136Test Invalid Resource ID Data Type Locking 137 [Documentation] Failed to acquire lock for invalid resource id data type. 138 [Tags] Test_Invalid_Resource_ID_Data_Type_Locking 139 [Template] Verify Fail To Acquire Lock For Invalid Resource ID Data Type 140 141 # client_id lock_type 142 HMCID-01 ReadCase1 143 HMCID-01 ReadCase2 144 HMCID-01 ReadCase3 145 HMCID-01 WriteCase1 146 HMCID-01 WriteCase2 147 HMCID-01 WriteCase3 148 149 150Fail To Acquire Lock For Invalid Lock Type 151 [Documentation] Failed to acquire read, write lock for invalid lock data passed. 152 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Type 153 [Template] Verify Fail To Acquire Lock For Invalid Lock Data 154 155 # client_id lock_type message 156 HMCID-01 ReadCase1 ${BAD_REQUEST} 157 HMCID-01 ReadCase2 ${BAD_REQUEST} 158 HMCID-01 ReadCase3 ${BAD_REQUEST} 159 HMCID-01 ReadCase4 ${BAD_REQUEST} 160 HMCID-01 ReadCase5 ${BAD_REQUEST} 161 HMCID-01 WriteCase1 ${BAD_REQUEST} 162 HMCID-01 WriteCase2 ${BAD_REQUEST} 163 HMCID-01 WriteCase3 ${BAD_REQUEST} 164 HMCID-01 WriteCase4 ${BAD_REQUEST} 165 HMCID-01 WriteCase5 ${BAD_REQUEST} 166 167 168Fail To Acquire Lock For Invalid Lock Flag 169 [Documentation] Failed to acquire read write lock for invalid lock flag passed. 170 [Tags] Fail_To_Acquire_Lock_For_Invalid_Lock_Flag 171 [Template] Verify Fail To Acquire Lock For Invalid Lock Data 172 173 # client_id lock_type message 174 HMCID-01 ReadCase6 ${BAD_REQUEST} 175 HMCID-01 ReadCase7 ${BAD_REQUEST} 176 HMCID-01 ReadCase8 ${BAD_REQUEST} 177 HMCID-01 ReadCase9 ${BAD_REQUEST} 178 HMCID-01 ReadCase10 ${BAD_REQUEST} 179 HMCID-01 ReadCase11 ${BAD_REQUEST} 180 HMCID-01 WriteCase6 ${BAD_REQUEST} 181 HMCID-01 WriteCase7 ${BAD_REQUEST} 182 HMCID-01 WriteCase8 ${BAD_REQUEST} 183 HMCID-01 WriteCase9 ${BAD_REQUEST} 184 HMCID-01 WriteCase10 ${BAD_REQUEST} 185 HMCID-01 WriteCase11 ${BAD_REQUEST} 186 187 188Fail To Acquire Lock For Invalid Segment Flag 189 [Documentation] Failed to acquire read write lock for invalid segment flag passed. 190 [Tags] Fail_To_Acquire_Lock_For_Invalid_Segment_Flag 191 [Template] Verify Fail To Acquire Lock For Invalid Lock Data 192 193 # client_id lock_type message 194 HMCID-01 ReadCase12 ${BAD_REQUEST} 195 HMCID-01 ReadCase13 ${BAD_REQUEST} 196 HMCID-01 ReadCase14 ${BAD_REQUEST} 197 HMCID-01 WriteCase12 ${BAD_REQUEST} 198 HMCID-01 WriteCase13 ${BAD_REQUEST} 199 HMCID-01 WriteCase14 ${BAD_REQUEST} 200 201 202Get Empty Lock Records For Session Where No Locks Acquired 203 [Documentation] If session does not acquire locks then get lock should return 204 ... empty lock records. 205 [Tags] Get_Empty_Lock_Records_For_Session_Where_No_Locks_Acquired 206 [Template] Verify No Locks Records For Session With No Acquired Lock 207 208 # client_id 209 HMCID-01 210 211*** Keywords *** 212 213Create Redfish Session With ClientID 214 [Documentation] Create redifish session with client id. 215 [Arguments] ${client_id} 216 217 # Description of argument(s): 218 # client_id This client id can contain string value 219 # (e.g. 12345, "HMCID"). 220 221 ${session_info}= Create Dictionary 222 ${session}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}} 223 224 Set To Dictionary ${session_info} SessionIDs ${session['Id']} 225 Set To Dictionary ${session_info} ClientID ${session["Oem"]["OpenBMC"]["ClientID"]} 226 227 [Return] ${session_info} 228 229 230RW General Dictionary 231 [Documentation] Create dictionay of lock request. 232 [Arguments] ${read_case} ${res_id} 233 234 # Description of argument(s): 235 # read_case Read or Write lock type. 236 # res_id Resource id. 237 238 ${request_dict}= Create Dictionary 239 240 FOR ${key} IN @{read_case.keys()} 241 Set To Dictionary ${request_dict} LockType ${key} 242 Set To Dictionary ${request_dict} SegmentFlags ${read_case["${key}"]} 243 END 244 245 Set To Dictionary ${request_dict} ResourceID ${res_id} 246 247 [Return] ${request_dict} 248 249 250Return Description Of Response 251 [Documentation] Return description of REST response. 252 [Arguments] ${resp_text} 253 254 # Description of argument(s): 255 # resp_text REST response body. 256 257 # resp_text after successful partition file upload looks like: 258 # { 259 # "Description": "File Created" 260 # } 261 262 ${message}= Evaluate json.loads('''${resp_text}''') json 263 264 [Return] ${message} 265 266 267Redfish Post Acquire Lock 268 [Documentation] Acquire and release lock. 269 [Arguments] ${lock_type} ${status_code}=${HTTP_OK} 270 271 # Description of argument(s): 272 # lock_type Read lock or Write lock. 273 # status_code HTTP status code. 274 275 ${lock_dict_param}= Form Data To Acquire Lock ${lock_type} 276 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param} 277 Should Be Equal As Strings ${resp.status_code} ${status_code} 278 ${resp}= Return Description Of Response ${resp.content} 279 280 [Return] ${resp} 281 282 283Redfish Post Acquire Invalid Lock 284 [Documentation] Redfish to post request to acquire in-valid lock. 285 [Arguments] ${lock_type} ${message} ${status_code}=${HTTP_OK} 286 287 # Description of argument(s): 288 # lock_type Read lock or Write lock. 289 # message Return message from URI. 290 # status_code HTTP status code. 291 292 ${lock_dict_param}= Form Data To Acquire Invalid Lock ${lock_type} 293 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param} 294 Should Be Equal As Strings ${resp.status_code} ${status_code} 295 Valid Value message ['${resp.content}'] 296 297 [Return] ${resp} 298 299 300Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID 301 [Documentation] Redfish to post request to acquire in-valid lock with invalid data type of resource id. 302 [Arguments] ${lock_type} ${status_code}=${HTTP_OK} 303 304 # Description of argument(s): 305 # lock_type Read lock or Write lock. 306 # status_code HTTP status code. 307 308 ${lock_dict_param}= Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID ${lock_type} 309 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param} 310 Should Be Equal As Strings ${resp.status_code} ${status_code} 311 312 [Return] ${resp} 313 314 315Form Data To Acquire Lock 316 [Documentation] Create a dictionay for lock request. 317 [Arguments] ${lock_type} 318 319 # Description of argument(s): 320 # lock_type Read lock or Write lock. 321 322 ${lock_res_info}= Get Lock Resource Information 323 ${resp}= RW General Dictionary 324 ... ${lock_res_info["Valid Case"]["${lock_type}"]} 325 ... ${lock_res_info["Valid Case"]["ResourceID"]} 326 ${temp_list}= Create List ${resp} 327 ${lock_request_dict}= Create Dictionary Request=${temp_list} 328 329 [Return] ${lock_request_dict} 330 331 332Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID 333 [Documentation] Create a dictionay for in-valid lock request. 334 [Arguments] ${lock_type} 335 336 # Description of argument(s): 337 # lock_type Read lock or Write lock. 338 339 ${lock_res_info}= Get Lock Resource Information 340 ${resp}= RW General Dictionary 341 ... ${lock_res_info["Valid Case"]["${lock_type}"]} 342 ... ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]} 343 ${temp_list}= Create List ${resp} 344 ${lock_request_dict}= Create Dictionary Request=${temp_list} 345 346 [Return] ${lock_request_dict} 347 348 349Form Data To Acquire Invalid Lock 350 [Documentation] Create a dictionay for in-valid lock request. 351 [Arguments] ${lock_type} 352 353 # Description of argument(s): 354 # lock_type Read lock or Write lock. 355 356 ${lock_res_info}= Get Lock Resource Information 357 ${resp}= RW General Dictionary 358 ... ${lock_res_info["Invalid Case"]["${lock_type}"]} 359 ... ${lock_res_info["Valid Case"]["ResourceID"]} 360 ${temp_list}= Create List ${resp} 361 ${lock_request_dict}= Create Dictionary Request=${temp_list} 362 363 [Return] ${lock_request_dict} 364 365 366Get Locks List On Resource 367 [Documentation] Get locks list. 368 [Arguments] ${session_info} ${exp_status_code}=${HTTP_OK} 369 370 # Description of argument(s): 371 # session_info Session information in dict. 372 # exp_status_code Expected HTTP status code. 373 374 ${data}= Set Variable {"SessionIDs": ["${session_info['SessionIDs']}"]} 375 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList 376 ... data=${data} 377 ${locks}= Evaluate json.loads('''${resp.text}''') json 378 379 [Return] ${locks["Records"]} 380 381 382Verify Lock On Resource 383 [Documentation] Verify lock on resource. 384 [Arguments] ${session_info} ${transaction_id} 385 386 # Description of argument(s): 387 # session_info Session information in dict. 388 # transaction_id Transaction id in list stored in dict. 389 390 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']} 391 Rprint Vars sessions 392 ${lock_list}= Get Locks List On Resource ${session_info} 393 ${lock_length}= Get Length ${lock_list} 394 ${tran_id_length}= Get Length ${transaction_id} 395 Should Be Equal As Integers ${tran_id_length} ${lock_length} 396 397 FOR ${tran_id} ${lock} IN ZIP ${transaction_id} ${lock_list} 398 Valid Value session_info['ClientID'] ['${lock['HMCID']}'] 399 Valid Value session_info['SessionIDs'] ['${lock['SessionID']}'] 400 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock['TransactionID']} 401 END 402 403 404Redfish Delete Session 405 [Documentation] Redfish delete session. 406 [Arguments] ${session_info} 407 408 # Description of argument(s): 409 # session_info Session information in dict. 410 411 Redfish.Delete /redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]} 412 413 414Acquire Lock On Resource 415 [Documentation] Acquire lock on resource. 416 [Arguments] ${client_id} ${lock_type} ${reboot_flag}=False 417 418 # Description of argument(s): 419 # client_id This client id can contain string value 420 # (e.g. 12345, "HMCID"). 421 # lock_type Read lock or Write lock. 422 # reboot_flag Flag is used to run reboot the BMC code. 423 # (e.g. True or False). 424 425 ${trans_id_list}= Create List 426 ${session_info}= Create Redfish Session With ClientID ${client_id} 427 ${trans_id}= Redfish Post Acquire Lock ${lock_type} 428 Append To List ${trans_id_list} ${trans_id} 429 Verify Lock On Resource ${session_info} ${trans_id_list} 430 431 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 432 433 Run Keyword If '${reboot_flag}' == 'True' 434 ... Run Keywords Redfish OBMC Reboot (off) AND 435 ... Redfish Login AND 436 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 437 ... Verify Lock On Resource ${session_info} ${trans_id_list} AND 438 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 439 440 Run Keyword If '${reboot_flag}' == 'False' 441 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 442 443 ${trans_id_emptylist}= Create List 444 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 445 Redfish Delete Session ${session_info} 446 447 448Form Data To Release Lock 449 [Documentation] Create a dictonay to release lock. 450 [Arguments] ${trans_id_list} 451 452 # Description of argument(s): 453 # trans_id_list 454 455 @{tran_ids}= Create List 456 457 FOR ${item} IN @{trans_id_list} 458 Append To List ${tran_ids} ${item['TransactionID']} 459 END 460 461 [Return] ${tran_ids} 462 463 464Release Locks On Resource 465 [Documentation] Redfish request to release a lock. 466 [Arguments] ${session_info} ${trans_id_list} ${release_lock_type}=Transaction ${status_code}=${HTTP_OK} 467 468 # Description of argument(s): 469 # session_info Session information in dict. 470 # trans_id_list Transaction id list. 471 # release_lock_type Release lock by Transaction, Session. 472 # status_code HTTP status code. 473 474 ${tran_ids}= Form Data To Release Lock ${trans_id_list} 475 ${data}= Set Variable {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}} 476 ${data}= Evaluate json.dumps(${data}) json 477 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock data=${data} 478 Should Be Equal As Strings ${resp.status_code} ${status_code} 479 480 481Acquire Lock On Another Lock 482 [Documentation] Acquire lock on another lock. 483 [Arguments] ${client_id} 484 485 # Description of argument(s): 486 # client_id This client id can contain string value 487 # (e.g. 12345, "HMCID"). 488 489 ${trans_id_list}= Create List 490 ${session_info}= Create Redfish Session With ClientID ${client_id} 491 492 ${trans_id}= Redfish Post Acquire Lock ReadCase1 493 Append To List ${trans_id_list} ${trans_id} 494 495 ${trans_id}= Redfish Post Acquire Lock ReadCase1 496 Append To List ${trans_id_list} ${trans_id} 497 498 Verify Lock On Resource ${session_info} ${trans_id_list} 499 Release Locks On Resource ${session_info} ${trans_id_list} 500 501 ${trans_id_emptylist}= Create List 502 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 503 Redfish Delete Session ${session_info} 504 505 506Verify Empty Lock Records For Invalid Session 507 [Documentation] Verify no lock record found for invalid session. 508 [Arguments] ${client_id} 509 510 # Description of argument(s): 511 # client_id This client id can contain string value 512 # (e.g. 12345, "HMCID"). 513 514 ${session_info1}= Create Redfish Session With ClientID ${client_id} 515 516 ${lock_list1}= Get Locks List On Resource ${session_info1} 517 ${lock_length1}= Get Length ${lock_list1} 518 519 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True 520 set to dictionary ${session_info2} SessionIDs xxyXyyYZZz 521 522 ${lock_list2}= Get Locks List On Resource ${session_info2} 523 ${lock_length2}= Get Length ${lock_list1} 524 525 Valid Value lock_length1 ${lock_list2} 526 527 Redfish Delete Session ${session_info1} 528 529 530Verify Acquire Lock Fails On Another Lock 531 [Documentation] Verify acquire lock on another lock fails. 532 [Arguments] ${client_id} ${lock_type} 533 534 # Description of argument(s): 535 # client_id This client id can contain string value 536 # (e.g. 12345, "HMCID"). 537 # lock_type Read lock or Write lock. 538 539 @{lock_type_list}= Split String ${lock_type} , 540 ${session_info}= Create Redfish Session With ClientID ${client_id} 541 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 542 543 ${trans_id_list}= Create List 544 Append To List ${trans_id_list} ${trans_id} 545 546 Verify Lock On Resource ${session_info} ${trans_id_list} 547 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT} 548 Release Locks On Resource ${session_info} ${trans_id_list} 549 550 ${trans_id_emptylist}= Create List 551 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 552 553 Redfish Delete Session ${session_info} 554 555 556Verify Acquire Lock After Reboot 557 [Documentation] Acquire read and write lock after the reboot and release lock. 558 [Arguments] ${client_id} ${lock_type} 559 560 # Description of argument(s): 561 # client_id This client id can contain string value 562 # (e.g. 12345, "HMCID"). 563 # lock_type Read lock or Write lock. 564 565 ${trans_id_list}= Create List 566 ${session_info}= Create Redfish Session With ClientID ${client_id} 567 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 568 Redfish OBMC Reboot (off) 569 Redfish Login 570 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 571 572 ${trans_id}= Redfish Post Acquire Lock ${lock_type} 573 Append To List ${trans_id_list} ${trans_id} 574 Verify Lock On Resource ${session_info} ${trans_id_list} 575 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 576 577 ${trans_id_emptylist}= Create List 578 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 579 Redfish Delete Session ${session_info} 580 581 582Verify Acquire And Release Lock In Loop 583 [Documentation] Acquire lock in loop. 584 [Arguments] ${client_id} ${lock_type} 585 586 # Description of argument(s): 587 # client_id This client id can contain string value 588 # (e.g. 12345, "HMCID"). 589 # lock_type Read lock or Write lock. 590 591 FOR ${count} IN RANGE 1 11 592 ${trans_id_list}= Create List 593 ${session_info}= Create Redfish Session With ClientID ${client_id} 594 ${trans_id}= Redfish Post Acquire Lock ${lock_type} 595 Append To List ${trans_id_list} ${trans_id} 596 Verify Lock On Resource ${session_info} ${trans_id_list} 597 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 598 ${trans_id_emptylist}= Create List 599 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 600 END 601 602 Redfish Delete Session ${session_info} 603 604 605Acquire And Release Multiple Locks 606 [Documentation] Acquire mutilple locks on resource. 607 [Arguments] ${client_id} ${lock_type} ${release_lock_type} 608 609 # Description of argument(s): 610 # client_id This client id can contain string value 611 # (e.g. 12345, "HMCID"). 612 # lock_type Read lock or Write lock. 613 # release_lock_type The value can be Transaction or Session. 614 615 @{lock_type_list}= Split String ${lock_type} , 616 ${session_info}= Create Redfish Session With ClientID ${client_id} 617 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 618 619 ${trans_id_list}= Create List 620 621 Append To List ${trans_id_list} ${trans_id} 622 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] 623 624 Append To List ${trans_id_list} ${trans_id} 625 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2] 626 627 Append To List ${trans_id_list} ${trans_id} 628 Verify Lock On Resource ${session_info} ${trans_id_list} 629 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type} 630 631 ${trans_id_emptylist}= Create List 632 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 633 Redfish Delete Session ${session_info} 634 635 636Verify Invalid Locks Fail To Release 637 [Documentation] Verify invalid locks fails to be released. 638 [Arguments] ${client_id} ${lock_type} ${release_lock_type} 639 640 # Description of argument(s): 641 # client_id This client id can contain string value 642 # (e.g. 12345, "HMCID"). 643 # lock_type Read lock or Write lock. 644 # release_lock_type The value can be Transaction or Session. 645 646 ${trans_id_list}= Create List 647 @{lock_type_list}= Split String ${lock_type} , 648 649 ${session_info}= Create Redfish Session With ClientID ${client_id} 650 651 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 652 ${value}= Get From Dictionary ${trans_id} TransactionID 653 ${value}= Evaluate ${value} + 10 654 Set To Dictionary ${trans_id} TransactionID ${value} 655 Append To List ${trans_id_list} ${trans_id} 656 657 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] 658 ${value}= Get From Dictionary ${trans_id} TransactionID 659 ${value}= Evaluate ${value} + 10 660 Set To Dictionary ${trans_id} TransactionID ${value} 661 Append To List ${trans_id_list} ${trans_id} 662 663 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2] 664 ${value}= Get From Dictionary ${trans_id} TransactionID 665 ${value}= Evaluate ${value} + 10 666 Set To Dictionary ${trans_id} TransactionID ${value} 667 Append To List ${trans_id_list} ${trans_id} 668 669 Release Locks On Resource 670 ... ${session_info} ${trans_id_list} 671 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST} 672 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session 673 674 ${trans_id_emptylist}= Create List 675 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 676 Redfish Delete Session ${session_info} 677 678 679Verify Fail To Release Lock For Another Session 680 [Documentation] Verify failed to release the lock form another session. 681 [Arguments] ${client_id} ${lock_type} 682 683 # Description of argument(s): 684 # client_id This client id can contain string value 685 # (e.g. 12345, "HMCID"). 686 # lock_type Read lock or Write lock. 687 688 ${client_ids}= Split String ${client_id} , 689 ${lock_type_list}= Split String ${lock_type} , 690 ${trans_id_list1}= Create List 691 ${trans_id_list2}= Create List 692 693 ${session_info1}= Create Redfish Session With ClientID ${client_ids}[0] 694 695 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 696 Append To List ${trans_id_list1} ${trans_id} 697 Verify Lock On Resource ${session_info1} ${trans_id_list1} 698 699 ${session_info2}= Create Redfish Session With ClientID ${client_ids}[1] 700 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] 701 Append To List ${trans_id_list2} ${trans_id} 702 Verify Lock On Resource ${session_info2} ${trans_id_list2} 703 704 Release Locks On Resource 705 ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED} 706 Verify Lock On Resource ${session_info1} ${trans_id_list1} 707 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session 708 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session 709 Redfish Delete Session ${session_info1} 710 Redfish Delete Session ${session_info2} 711 712 713Verify Fail To Acquire Lock For Invalid Resource ID Data Type 714 [Documentation] Verify fail to acquire the lock with invalid resource id data type. 715 [Arguments] ${client_id} ${lock_type} 716 717 # Description of argument(s): 718 # client_id This client id can contain string value 719 # (e.g. 12345, "HMCID"). 720 # lock_type Read lock or Write lock. 721 722 ${session_info}= Create Redfish Session With ClientID ${client_id} 723 Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID 724 ... ${lock_type} status_code=${HTTP_BAD_REQUEST} 725 Redfish Delete Session ${session_info} 726 727 728Verify Fail To Acquire Lock For Invalid Lock Data 729 [Documentation] Verify fail to acquired lock with invalid lock types, lock flags, segement flags. 730 [Arguments] ${client_id} ${lock_type} ${message} 731 732 # Description of argument(s): 733 # client_id This client id can contain string value 734 # (e.g. 12345, "HMCID"). 735 # lock_type Read lock or Write lock. 736 # message Return message from URI. 737 738 ${session_info}= Create Redfish Session With ClientID ${client_id} 739 ${trans_id}= Redfish Post Acquire Invalid Lock ${lock_type} message=${message} status_code=${HTTP_BAD_REQUEST} 740 Redfish Delete Session ${session_info} 741 742 743Verify No Locks Records For Session With No Acquired Lock 744 [Documentation] Verify no records found for a session where no lock is acquired. 745 [Arguments] ${client_id} 746 747 # Description of argument(s): 748 # client_id This client id can contain string value 749 # (e.g. 12345, "HMCID"). 750 751 ${session_info}= Create Redfish Session With ClientID ${client_id} 752 ${trans_id_emptylist}= Create List 753 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 754 Redfish Delete Session ${session_info} 755