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*** Keywords *** 202 203Create Redfish Session With ClientID 204 [Documentation] Create redifish session with client id. 205 [Arguments] ${client_id} 206 207 # Description of argument(s): 208 # client_id This client id can contain string value 209 # (e.g. 12345, "HMCID"). 210 211 ${session_info}= Create Dictionary 212 ${session}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client_id}"}} 213 214 Set To Dictionary ${session_info} SessionIDs ${session['Id']} 215 Set To Dictionary ${session_info} ClientID ${session["Oem"]["OpenBMC"]["ClientID"]} 216 217 [Return] ${session_info} 218 219 220RW General Dictionary 221 [Documentation] Create dictionay of lock request. 222 [Arguments] ${read_case} ${res_id} 223 224 # Description of argument(s): 225 # read_case Read or Write lock type. 226 # res_id Resource id. 227 228 ${request_dict}= Create Dictionary 229 230 FOR ${key} IN @{read_case.keys()} 231 Set To Dictionary ${request_dict} LockType ${key} 232 Set To Dictionary ${request_dict} SegmentFlags ${read_case["${key}"]} 233 END 234 235 Set To Dictionary ${request_dict} ResourceID ${res_id} 236 237 [Return] ${request_dict} 238 239 240Return Description Of Response 241 [Documentation] Return description of REST response. 242 [Arguments] ${resp_text} 243 244 # Description of argument(s): 245 # resp_text REST response body. 246 247 # resp_text after successful partition file upload looks like: 248 # { 249 # "Description": "File Created" 250 # } 251 252 ${message}= Evaluate json.loads('''${resp_text}''') json 253 254 [Return] ${message} 255 256 257Redfish Post Acquire Lock 258 [Documentation] Acquire and release lock. 259 [Arguments] ${lock_type} ${status_code}=${HTTP_OK} 260 261 # Description of argument(s): 262 # lock_type Read lock or Write lock. 263 # status_code HTTP status code. 264 265 ${lock_dict_param}= Form Data To Acquire Lock ${lock_type} 266 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param} 267 Should Be Equal As Strings ${resp.status_code} ${status_code} 268 ${resp}= Return Description Of Response ${resp.content} 269 270 [Return] ${resp} 271 272 273Redfish Post Acquire Invalid Lock 274 [Documentation] Redfish to post request to acquire in-valid lock. 275 [Arguments] ${lock_type} ${message} ${status_code}=${HTTP_OK} 276 277 # Description of argument(s): 278 # lock_type Read lock or Write lock. 279 # message Return message from URI. 280 # status_code HTTP status code. 281 282 ${lock_dict_param}= Form Data To Acquire Invalid Lock ${lock_type} 283 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param} 284 Should Be Equal As Strings ${resp.status_code} ${status_code} 285 Valid Value message ['${resp.content}'] 286 287 [Return] ${resp} 288 289 290Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID 291 [Documentation] Redfish to post request to acquire in-valid lock with invalid data type of resource id. 292 [Arguments] ${lock_type} ${status_code}=${HTTP_OK} 293 294 # Description of argument(s): 295 # lock_type Read lock or Write lock. 296 # status_code HTTP status code. 297 298 ${lock_dict_param}= Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID ${lock_type} 299 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param} 300 Should Be Equal As Strings ${resp.status_code} ${status_code} 301 302 [Return] ${resp} 303 304 305Form Data To Acquire Lock 306 [Documentation] Create a dictionay for lock request. 307 [Arguments] ${lock_type} 308 309 # Description of argument(s): 310 # lock_type Read lock or Write lock. 311 312 ${lock_res_info}= Get Lock Resource Information 313 ${resp}= RW General Dictionary 314 ... ${lock_res_info["Valid Case"]["${lock_type}"]} 315 ... ${lock_res_info["Valid Case"]["ResourceID"]} 316 ${temp_list}= Create List ${resp} 317 ${lock_request_dict}= Create Dictionary Request=${temp_list} 318 319 [Return] ${lock_request_dict} 320 321 322Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID 323 [Documentation] Create a dictionay for in-valid lock request. 324 [Arguments] ${lock_type} 325 326 # Description of argument(s): 327 # lock_type Read lock or Write lock. 328 329 ${lock_res_info}= Get Lock Resource Information 330 ${resp}= RW General Dictionary 331 ... ${lock_res_info["Valid Case"]["${lock_type}"]} 332 ... ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]} 333 ${temp_list}= Create List ${resp} 334 ${lock_request_dict}= Create Dictionary Request=${temp_list} 335 336 [Return] ${lock_request_dict} 337 338 339Form Data To Acquire Invalid Lock 340 [Documentation] Create a dictionay for in-valid lock request. 341 [Arguments] ${lock_type} 342 343 # Description of argument(s): 344 # lock_type Read lock or Write lock. 345 346 ${lock_res_info}= Get Lock Resource Information 347 ${resp}= RW General Dictionary 348 ... ${lock_res_info["Invalid Case"]["${lock_type}"]} 349 ... ${lock_res_info["Valid Case"]["ResourceID"]} 350 ${temp_list}= Create List ${resp} 351 ${lock_request_dict}= Create Dictionary Request=${temp_list} 352 353 [Return] ${lock_request_dict} 354 355 356Get Locks List On Resource 357 [Documentation] Get locks list. 358 [Arguments] ${session_info} ${exp_status_code}=${HTTP_OK} 359 360 # Description of argument(s): 361 # session_info Session information in dict. 362 # exp_status_code Expected HTTP status code. 363 364 ${data}= Set Variable {"SessionIDs": ["${session_info['SessionIDs']}"]} 365 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.GetLockList 366 ... data=${data} 367 ${locks}= Evaluate json.loads('''${resp.text}''') json 368 369 [Return] ${locks["Records"]} 370 371 372Verify Lock On Resource 373 [Documentation] Verify lock on resource. 374 [Arguments] ${session_info} ${transaction_id} 375 376 # Description of argument(s): 377 # session_info Session information in dict. 378 # transaction_id Transaction id in list stored in dict. 379 380 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_info['SessionIDs']} 381 Rprint Vars sessions 382 ${lock_list}= Get Locks List On Resource ${session_info} 383 ${lock_length}= Get Length ${lock_list} 384 ${tran_id_length}= Get Length ${transaction_id} 385 Should Be Equal As Integers ${tran_id_length} ${lock_length} 386 387 FOR ${tran_id} ${lock} IN ZIP ${transaction_id} ${lock_list} 388 Valid Value session_info['ClientID'] ['${lock['HMCID']}'] 389 Valid Value session_info['SessionIDs'] ['${lock['SessionID']}'] 390 Should Be Equal As Integers ${tran_id['TransactionID']} ${lock['TransactionID']} 391 END 392 393 394Redfish Delete Session 395 [Documentation] Redfish delete session. 396 [Arguments] ${session_info} 397 398 # Description of argument(s): 399 # session_info Session information in dict. 400 401 Redfish.Delete /redfish/v1/SessionService/Sessions/${session_info["SessionIDs"]} 402 403 404Acquire Lock On Resource 405 [Documentation] Acquire lock on resource. 406 [Arguments] ${client_id} ${lock_type} ${reboot_flag}=False 407 408 # Description of argument(s): 409 # client_id This client id can contain string value 410 # (e.g. 12345, "HMCID"). 411 # lock_type Read lock or Write lock. 412 # reboot_flag Flag is used to run reboot the BMC code. 413 # (e.g. True or False). 414 415 ${trans_id_list}= Create List 416 ${session_info}= Create Redfish Session With ClientID ${client_id} 417 ${trans_id}= Redfish Post Acquire Lock ${lock_type} 418 Append To List ${trans_id_list} ${trans_id} 419 Verify Lock On Resource ${session_info} ${trans_id_list} 420 421 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 422 423 Run Keyword If '${reboot_flag}' == 'True' 424 ... Run Keywords Redfish OBMC Reboot (off) AND 425 ... Redfish Login AND 426 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 427 ... Verify Lock On Resource ${session_info} ${trans_id_list} AND 428 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 429 430 Run Keyword If '${reboot_flag}' == 'False' 431 ... Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 432 433 ${trans_id_emptylist}= Create List 434 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 435 Redfish Delete Session ${session_info} 436 437 438Form Data To Release Lock 439 [Documentation] Create a dictonay to release lock. 440 [Arguments] ${trans_id_list} 441 442 # Description of argument(s): 443 # trans_id_list 444 445 @{tran_ids}= Create List 446 447 FOR ${item} IN @{trans_id_list} 448 Append To List ${tran_ids} ${item['TransactionID']} 449 END 450 451 [Return] ${tran_ids} 452 453 454Release Locks On Resource 455 [Documentation] Redfish request to release a lock. 456 [Arguments] ${session_info} ${trans_id_list} ${release_lock_type}=Transaction ${status_code}=${HTTP_OK} 457 458 # Description of argument(s): 459 # session_info Session information in dict. 460 # trans_id_list Transaction id list. 461 # release_lock_type Release lock by Transaction, Session. 462 # status_code HTTP status code. 463 464 ${tran_ids}= Form Data To Release Lock ${trans_id_list} 465 ${data}= Set Variable {"Type": "${release_lock_type}", "TransactionIDs":${tran_ids}} 466 ${data}= Evaluate json.dumps(${data}) json 467 ${resp}= Redfish Post Request /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock data=${data} 468 Should Be Equal As Strings ${resp.status_code} ${status_code} 469 470 471Acquire Lock On Another Lock 472 [Documentation] Acquire lock on another lock. 473 [Arguments] ${client_id} 474 475 # Description of argument(s): 476 # client_id This client id can contain string value 477 # (e.g. 12345, "HMCID"). 478 479 ${trans_id_list}= Create List 480 ${session_info}= Create Redfish Session With ClientID ${client_id} 481 482 ${trans_id}= Redfish Post Acquire Lock ReadCase1 483 Append To List ${trans_id_list} ${trans_id} 484 485 ${trans_id}= Redfish Post Acquire Lock ReadCase1 486 Append To List ${trans_id_list} ${trans_id} 487 488 Verify Lock On Resource ${session_info} ${trans_id_list} 489 Release Locks On Resource ${session_info} ${trans_id_list} 490 491 ${trans_id_emptylist}= Create List 492 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 493 Redfish Delete Session ${session_info} 494 495 496Verify Empty Lock Records For Invalid Session 497 [Documentation] Verify no lock record found for invalid session. 498 [Arguments] ${client_id} 499 500 # Description of argument(s): 501 # client_id This client id can contain string value 502 # (e.g. 12345, "HMCID"). 503 504 ${session_info1}= Create Redfish Session With ClientID ${client_id} 505 506 ${lock_list1}= Get Locks List On Resource ${session_info1} 507 ${lock_length1}= Get Length ${lock_list1} 508 509 ${session_info2}= Copy Dictionary ${session_info1} deepcopy=True 510 set to dictionary ${session_info2} SessionIDs xxyXyyYZZz 511 512 ${lock_list2}= Get Locks List On Resource ${session_info2} 513 ${lock_length2}= Get Length ${lock_list1} 514 515 Valid Value lock_length1 ${lock_list2} 516 517 Redfish Delete Session ${session_info1} 518 519 520Verify Acquire Lock Fails On Another Lock 521 [Documentation] Verify acquire lock on another lock fails. 522 [Arguments] ${client_id} ${lock_type} 523 524 # Description of argument(s): 525 # client_id This client id can contain string value 526 # (e.g. 12345, "HMCID"). 527 # lock_type Read lock or Write lock. 528 529 @{lock_type_list}= Split String ${lock_type} , 530 ${session_info}= Create Redfish Session With ClientID ${client_id} 531 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 532 533 ${trans_id_list}= Create List 534 Append To List ${trans_id_list} ${trans_id} 535 536 Verify Lock On Resource ${session_info} ${trans_id_list} 537 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] status_code=${HTTP_CONFLICT} 538 Release Locks On Resource ${session_info} ${trans_id_list} 539 540 ${trans_id_emptylist}= Create List 541 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 542 543 Redfish Delete Session ${session_info} 544 545 546Verify Acquire Lock After Reboot 547 [Documentation] Acquire read and write lock after the reboot and release lock. 548 [Arguments] ${client_id} ${lock_type} 549 550 # Description of argument(s): 551 # client_id This client id can contain string value 552 # (e.g. 12345, "HMCID"). 553 # lock_type Read lock or Write lock. 554 555 ${trans_id_list}= Create List 556 ${session_info}= Create Redfish Session With ClientID ${client_id} 557 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 558 Redfish OBMC Reboot (off) 559 Redfish Login 560 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 561 562 ${trans_id}= Redfish Post Acquire Lock ${lock_type} 563 Append To List ${trans_id_list} ${trans_id} 564 Verify Lock On Resource ${session_info} ${trans_id_list} 565 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 566 567 ${trans_id_emptylist}= Create List 568 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 569 Redfish Delete Session ${session_info} 570 571 572Verify Acquire And Release Lock In Loop 573 [Documentation] Acquire lock in loop. 574 [Arguments] ${client_id} ${lock_type} 575 576 # Description of argument(s): 577 # client_id This client id can contain string value 578 # (e.g. 12345, "HMCID"). 579 # lock_type Read lock or Write lock. 580 581 FOR ${count} IN RANGE 1 11 582 ${trans_id_list}= Create List 583 ${session_info}= Create Redfish Session With ClientID ${client_id} 584 ${trans_id}= Redfish Post Acquire Lock ${lock_type} 585 Append To List ${trans_id_list} ${trans_id} 586 Verify Lock On Resource ${session_info} ${trans_id_list} 587 Release Locks On Resource ${session_info} ${trans_id_list} Transaction ${HTTP_OK} 588 ${trans_id_emptylist}= Create List 589 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 590 END 591 592 Redfish Delete Session ${session_info} 593 594 595Acquire And Release Multiple Locks 596 [Documentation] Acquire mutilple locks on resource. 597 [Arguments] ${client_id} ${lock_type} ${release_lock_type} 598 599 # Description of argument(s): 600 # client_id This client id can contain string value 601 # (e.g. 12345, "HMCID"). 602 # lock_type Read lock or Write lock. 603 # release_lock_type The value can be Transaction or Session. 604 605 @{lock_type_list}= Split String ${lock_type} , 606 ${session_info}= Create Redfish Session With ClientID ${client_id} 607 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 608 609 ${trans_id_list}= Create List 610 611 Append To List ${trans_id_list} ${trans_id} 612 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] 613 614 Append To List ${trans_id_list} ${trans_id} 615 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2] 616 617 Append To List ${trans_id_list} ${trans_id} 618 Verify Lock On Resource ${session_info} ${trans_id_list} 619 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=${release_lock_type} 620 621 ${trans_id_emptylist}= Create List 622 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 623 Redfish Delete Session ${session_info} 624 625 626Verify Invalid Locks Fail To Release 627 [Documentation] Verify invalid locks fails to be released. 628 [Arguments] ${client_id} ${lock_type} ${release_lock_type} 629 630 # Description of argument(s): 631 # client_id This client id can contain string value 632 # (e.g. 12345, "HMCID"). 633 # lock_type Read lock or Write lock. 634 # release_lock_type The value can be Transaction or Session. 635 636 ${trans_id_list}= Create List 637 @{lock_type_list}= Split String ${lock_type} , 638 639 ${session_info}= Create Redfish Session With ClientID ${client_id} 640 641 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 642 ${value}= Get From Dictionary ${trans_id} TransactionID 643 ${value}= Evaluate ${value} + 10 644 Set To Dictionary ${trans_id} TransactionID ${value} 645 Append To List ${trans_id_list} ${trans_id} 646 647 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] 648 ${value}= Get From Dictionary ${trans_id} TransactionID 649 ${value}= Evaluate ${value} + 10 650 Set To Dictionary ${trans_id} TransactionID ${value} 651 Append To List ${trans_id_list} ${trans_id} 652 653 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[2] 654 ${value}= Get From Dictionary ${trans_id} TransactionID 655 ${value}= Evaluate ${value} + 10 656 Set To Dictionary ${trans_id} TransactionID ${value} 657 Append To List ${trans_id_list} ${trans_id} 658 659 Release Locks On Resource 660 ... ${session_info} ${trans_id_list} 661 ... release_lock_type=${release_lock_type} status_code=${HTTP_BAD_REQUEST} 662 Release Locks On Resource ${session_info} ${trans_id_list} release_lock_type=Session 663 664 ${trans_id_emptylist}= Create List 665 Verify Lock On Resource ${session_info} ${trans_id_emptylist} 666 Redfish Delete Session ${session_info} 667 668 669Verify Fail To Release Lock For Another Session 670 [Documentation] Verify failed to release the lock form another session. 671 [Arguments] ${client_id} ${lock_type} 672 673 # Description of argument(s): 674 # client_id This client id can contain string value 675 # (e.g. 12345, "HMCID"). 676 # lock_type Read lock or Write lock. 677 678 ${client_ids}= Split String ${client_id} , 679 ${lock_type_list}= Split String ${lock_type} , 680 ${trans_id_list1}= Create List 681 ${trans_id_list2}= Create List 682 683 ${session_info1}= Create Redfish Session With ClientID ${client_ids}[0] 684 685 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[0] 686 Append To List ${trans_id_list1} ${trans_id} 687 Verify Lock On Resource ${session_info1} ${trans_id_list1} 688 689 ${session_info2}= Create Redfish Session With ClientID ${client_ids}[1] 690 ${trans_id}= Redfish Post Acquire Lock ${lock_type_list}[1] 691 Append To List ${trans_id_list2} ${trans_id} 692 Verify Lock On Resource ${session_info2} ${trans_id_list2} 693 694 Release Locks On Resource 695 ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED} 696 Verify Lock On Resource ${session_info1} ${trans_id_list1} 697 Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session 698 Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session 699 Redfish Delete Session ${session_info1} 700 Redfish Delete Session ${session_info2} 701 702 703Verify Fail To Acquire Lock For Invalid Resource ID Data Type 704 [Documentation] Verify fail to acquire the lock with invalid resource id data type. 705 [Arguments] ${client_id} ${lock_type} 706 707 # Description of argument(s): 708 # client_id This client id can contain string value 709 # (e.g. 12345, "HMCID"). 710 # lock_type Read lock or Write lock. 711 712 ${session_info}= Create Redfish Session With ClientID ${client_id} 713 Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID 714 ... ${lock_type} status_code=${HTTP_BAD_REQUEST} 715 Redfish Delete Session ${session_info} 716 717 718Verify Fail To Acquire Lock For Invalid Lock Data 719 [Documentation] Verify fail to acquired lock with invalid lock types, lock flags, segement flags. 720 [Arguments] ${client_id} ${lock_type} ${message} 721 722 # Description of argument(s): 723 # client_id This client id can contain string value 724 # (e.g. 12345, "HMCID"). 725 # lock_type Read lock or Write lock. 726 # message Return message from URI. 727 728 ${session_info}= Create Redfish Session With ClientID ${client_id} 729 ${trans_id}= Redfish Post Acquire Invalid Lock ${lock_type} message=${message} status_code=${HTTP_BAD_REQUEST} 730 Redfish Delete Session ${session_info} 731