1*bc331e22SVijay*** Settings *** 2*bc331e22SVijay 3*bc331e22SVijayDocumentation Test Lock Management feature of Management Console on BMC. 4*bc331e22SVijay 5*bc331e22SVijayResource ../../lib/resource.robot 6*bc331e22SVijayResource ../../lib/bmc_redfish_resource.robot 7*bc331e22SVijayResource ../../lib/openbmc_ffdc.robot 8*bc331e22SVijay 9*bc331e22SVijayTest Setup Create New Session 10*bc331e22SVijayTest Teardown Test Teardown Execution 11*bc331e22SVijay 12*bc331e22SVijay*** Variables *** 13*bc331e22SVijay 14*bc331e22SVijay# Data-sets for testing different test cases. 15*bc331e22SVijay&{LOCKALL_LEN1} LockFlag=LockAll SegmentLength=${1} 16*bc331e22SVijay&{LOCKALL_LEN2} LockFlag=LockAll SegmentLength=${2} 17*bc331e22SVijay&{LOCKALL_LEN3} LockFlag=LockAll SegmentLength=${3} 18*bc331e22SVijay&{LOCKALL_LEN4} LockFlag=LockAll SegmentLength=${4} 19*bc331e22SVijay&{LOCKALL_LEN5} LockFlag=LockAll SegmentLength=${5} 20*bc331e22SVijay 21*bc331e22SVijay&{LOCKALL_INVALID_LOCKFLAG1} LockFlag=LocAll SegmentLength=${2} 22*bc331e22SVijay&{LOCKALL_INVALID_LOCKFLAG2} LockFlag=LOCKALL SegmentLength=${3} 23*bc331e22SVijay&{LOCKALL_INVALID_LOCKFLAG3} LOCKFLAG=LockAll SegmentLength=${4} 24*bc331e22SVijay&{LOCKSAME_INVALID_LOCKFLAG3} Lock=LockSame SegmentLength=${1} 25*bc331e22SVijay&{LOCKSAME_INVALID_LOCKFLAG4} Lock=LockSame SegmentLength=${True} 26*bc331e22SVijay 27*bc331e22SVijay&{LOCKSAME_LEN1} LockFlag=LockSame SegmentLength=${1} 28*bc331e22SVijay&{LOCKSAME_LEN2} LockFlag=LockSame SegmentLength=${2} 29*bc331e22SVijay&{LOCKSAME_LEN3} LockFlag=LockSame SegmentLength=${3} 30*bc331e22SVijay&{LOCKSAME_LEN4} LockFlag=LockSame SegmentLength=${4} 31*bc331e22SVijay&{LOCKSAME_INVALID_LEN1} LockFlag=LockSame SegmentLength=${0} 32*bc331e22SVijay&{LOCKSAME_INVALID_LEN2} LockFlag=LockSame SegmentLength=${5} 33*bc331e22SVijay&{LOCKSAME_INVALID_LEN_STR} LockFlag=LockSame SegmentLength=2 34*bc331e22SVijay&{LOCKSAME_INVALID_LEN_NEG} LockFlag=LockSame SegmentLength=${-3} 35*bc331e22SVijay&{LOCKSAME_INVALID_LEN_BOOL} Lock=LockSame SegmentLength=${True} 36*bc331e22SVijay 37*bc331e22SVijay&{DONTLOCK_LEN1} LockFlag=DontLock SegmentLength=${1} 38*bc331e22SVijay&{DONTLOCK_LEN2} LockFlag=DontLock SegmentLength=${2} 39*bc331e22SVijay&{DONTLOCK_LEN3} LockFlag=DontLock SegmentLength=${3} 40*bc331e22SVijay&{DONTLOCK_LEN4} LockFlag=DontLock SegmentLength=${4} 41*bc331e22SVijay&{DONTLOCK_INVALID_LEN} LockFlag=DontLock SegmentLength=${5} 42*bc331e22SVijay&{DONTLOCK_INVALID_LEN_BOOL} LockFlag=DONTLOCK SegmentLength=${False} 43*bc331e22SVijay&{DONTLOCK_INVALID_LOCKFLAG} LOCKFLAG=LockAll SegmentLength=${4} 44*bc331e22SVijay 45*bc331e22SVijay@{ONE_SEG_FLAG_ALL} ${LOCKALL_LEN1} 46*bc331e22SVijay@{ONE_SEG_FLAG_SAME} ${LOCKSAME_LEN3} 47*bc331e22SVijay@{ONE_SEG_FLAG_DONT} ${DONTLOCK_LEN4} 48*bc331e22SVijay 49*bc331e22SVijay@{TWO_SEG_FLAG_1} ${LOCKALL_LEN1} ${LOCKSAME_LEN2} 50*bc331e22SVijay@{TWO_SEG_FLAG_2} ${DONTLOCK_LEN3} ${LOCKALL_LEN1} 51*bc331e22SVijay@{TWO_SEG_FLAG_3} ${DONTLOCK_LEN4} ${LOCKSAME_LEN3} 52*bc331e22SVijay@{TWO_SEG_FLAG_4} ${DONTLOCK_INVALID_LEN} ${LOCKSAME_LEN3} 53*bc331e22SVijay@{TWO_SEG_FLAG_5} ${DONTLOCK_LEN2} ${LOCKSAME_INVALID_LEN1} 54*bc331e22SVijay 55*bc331e22SVijay@{TWO_SEG_FLAG_INVALID1} ${DONTLOCK_LEN4} ${LOCKSAME_INVALID_LEN1} 56*bc331e22SVijay@{TWO_SEG_FLAG_INVALID2} ${LOCKALL_LEN5} ${DONTLOCK_LEN1} 57*bc331e22SVijay@{TWO_SEG_FLAG_INVALID3} ${DONTLOCK_LEN1} ${LOCKALL_INVALID_LOCKFLAG1} 58*bc331e22SVijay@{TWO_SEG_FLAG_INVALID4} ${DONTLOCK_LEN2} ${LOCKALL_INVALID_LOCKFLAG2} 59*bc331e22SVijay@{TWO_SEG_FLAG_INVALID5} ${DONTLOCK_LEN2} ${LOCKALL_INVALID_LOCKFLAG3} 60*bc331e22SVijay@{TWO_SEG_FLAG_INVALID6} ${LOCKALL_LEN3} ${LOCKSAME_INVALID_LOCKFLAG3} 61*bc331e22SVijay@{TWO_SEG_FLAG_INVALID7} ${DONTLOCK_LEN2} ${LOCKSAME_INVALID_LOCKFLAG4} 62*bc331e22SVijay@{TWO_SEG_FLAG_INVALID8} ${DONTLOCK_INVALID_LOCKFLAG} ${LOCKSAME_INVALID_LEN_BOOL} 63*bc331e22SVijay@{TWO_SEG_FLAG_INVALID9} ${DONTLOCK_LEN2} ${LOCKSAME_INVALID_LOCKFLAG4} 64*bc331e22SVijay 65*bc331e22SVijay@{THREE_SEG_FLAG_1} ${LOCKALL_LEN1} @{TWO_SEG_FLAG_3} 66*bc331e22SVijay@{THREE_SEG_FLAG_2} ${LOCKSAME_LEN4} @{TWO_SEG_FLAG_2} 67*bc331e22SVijay@{THREE_SEG_FLAG_3} ${DONTLOCK_LEN3} @{TWO_SEG_FLAG_1} 68*bc331e22SVijay 69*bc331e22SVijay@{FOUR_SEG_FLAG_1} ${LOCKALL_LEN1} @{THREE_SEG_FLAG_2} 70*bc331e22SVijay@{FOUR_SEG_FLAG_2} ${LOCKSAME_LEN4} @{THREE_SEG_FLAG_3} 71*bc331e22SVijay@{FOUR_SEG_FLAG_3} ${DONTLOCK_LEN3} @{THREE_SEG_FLAG_1} 72*bc331e22SVijay 73*bc331e22SVijay@{FIVE_SEG_FLAG_1} ${LOCKALL_LEN1} @{FOUR_SEG_FLAG_2} 74*bc331e22SVijay@{FIVE_SEG_FLAG_2} ${LOCKSAME_LEN4} @{FOUR_SEG_FLAG_3} 75*bc331e22SVijay@{FIVE_SEG_FLAG_3} ${DONTLOCK_LEN3} @{FOUR_SEG_FLAG_1} 76*bc331e22SVijay 77*bc331e22SVijay@{SIX_SEG_FLAG_1} ${LOCKALL_LEN1} @{FIVE_SEG_FLAG_2} 78*bc331e22SVijay@{SIX_SEG_FLAG_2} ${LOCKSAME_LEN4} @{FIVE_SEG_FLAG_3} 79*bc331e22SVijay@{SIX_SEG_FLAG_3} ${DONTLOCK_LEN3} @{FIVE_SEG_FLAG_1} 80*bc331e22SVijay 81*bc331e22SVijay@{SEVEN_SEG_FLAG_1} ${LOCKALL_LEN1} @{SIX_SEG_FLAG_2} 82*bc331e22SVijay@{SEVEN_SEG_FLAG_2} ${LOCKSAME_LEN4} @{SIX_SEG_FLAG_3} 83*bc331e22SVijay@{SEVEN_SEG_FLAG_3} ${DONTLOCK_LEN3} @{SIX_SEG_FLAG_1} 84*bc331e22SVijay 85*bc331e22SVijay# Different messages to be verified. 86*bc331e22SVijay${PROP_REQ_ERR} is a required property and must be included in the request. 87*bc331e22SVijay${PROP_ERR} is not in the list of valid properties for the resource. 88*bc331e22SVijay${PROP_TYPE_ERR} is of a different type than the property can accept. 89*bc331e22SVijay 90*bc331e22SVijay# Build error patterns list. 91*bc331e22SVijay@{EMPTY LIST} 92*bc331e22SVijay@{ERR_PATTERN1} ${PROP_REQ_ERR} ${PROP_ERR} 93*bc331e22SVijay@{ERR_PATTERN2} ${PROP_TYPE_ERR} 94*bc331e22SVijay@{ERR_PATTERN3} ${PROP_REQ_ERR} ${PROP_ERR} ${PROP_TYPE_ERR} 95*bc331e22SVijay 96*bc331e22SVijay# Dictionary of Locks with Transaction ID as key and Session ID as a value. 97*bc331e22SVijay&{LOCKS} 98*bc331e22SVijay 99*bc331e22SVijay 100*bc331e22SVijay*** Test Cases *** 101*bc331e22SVijay 102*bc331e22SVijayAcquire And Release Different Read Locks 103*bc331e22SVijay [Documentation] Acquire and release different read locks. 104*bc331e22SVijay [Tags] Acquire_And_Release_Different_Read_Locks 105*bc331e22SVijay [Template] Acquire And Release Lock 106*bc331e22SVijay 107*bc331e22SVijay # lock seg_flags resource_id hmc_id exp_status_code err_msgs new_sess 108*bc331e22SVijay # type req 109*bc331e22SVijay Read ${ONE_SEG_FLAG_ALL} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 110*bc331e22SVijay Read ${ONE_SEG_FLAG_SAME} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 111*bc331e22SVijay Read ${ONE_SEG_FLAG_DONT} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 112*bc331e22SVijay Read ${TWO_SEG_FLAG_1} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 113*bc331e22SVijay Read ${TWO_SEG_FLAG_2} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 114*bc331e22SVijay Read ${TWO_SEG_FLAG_3} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 115*bc331e22SVijay Read ${TWO_SEG_FLAG_4} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 116*bc331e22SVijay Read ${TWO_SEG_FLAG_5} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 117*bc331e22SVijay Read ${THREE_SEG_FLAG_1} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 118*bc331e22SVijay Read ${THREE_SEG_FLAG_2} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 119*bc331e22SVijay Read ${THREE_SEG_FLAG_3} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 120*bc331e22SVijay Read ${FOUR_SEG_FLAG_1} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 121*bc331e22SVijay Read ${FOUR_SEG_FLAG_2} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 122*bc331e22SVijay Read ${FOUR_SEG_FLAG_3} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 123*bc331e22SVijay Read ${FIVE_SEG_FLAG_1} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 124*bc331e22SVijay Read ${FIVE_SEG_FLAG_2} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 125*bc331e22SVijay Read ${FIVE_SEG_FLAG_3} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 126*bc331e22SVijay Read ${SIX_SEG_FLAG_1} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 127*bc331e22SVijay Read ${SIX_SEG_FLAG_2} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 128*bc331e22SVijay Read ${SIX_SEG_FLAG_3} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 129*bc331e22SVijay Read ${SEVEN_SEG_FLAG_1} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 130*bc331e22SVijay Read ${SEVEN_SEG_FLAG_2} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 131*bc331e22SVijay Read ${SEVEN_SEG_FLAG_3} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 132*bc331e22SVijay Read ${LOCKSAME_INVALID_LEN1} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 133*bc331e22SVijay Read ${LOCKSAME_INVALID_LEN_STR} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 134*bc331e22SVijay Read ${LOCKSAME_INVALID_LEN_NEG} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 135*bc331e22SVijay Read ${LOCKSAME_INVALID_LEN_BOOL} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 136*bc331e22SVijay Read ${DONTLOCK_INVALID_LEN_BOOL} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 137*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID1} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 138*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID2} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 139*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID3} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 140*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID4} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 141*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID5} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN1} ${True} 142*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID6} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN1} ${True} 143*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID7} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN3} ${True} 144*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID8} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN1} ${True} 145*bc331e22SVijay Read ${TWO_SEG_FLAG_INVALID9} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 146*bc331e22SVijay Read ${TWO_SEG_FLAG_3} 234 hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 147*bc331e22SVijay 148*bc331e22SVijay 149*bc331e22SVijayAcquire And Release Different Write Locks 150*bc331e22SVijay [Documentation] Acquire and release different write locks. 151*bc331e22SVijay [Tags] Acquire_And_Release_Different_Write_Locks 152*bc331e22SVijay [Template] Acquire And Release Lock 153*bc331e22SVijay 154*bc331e22SVijay # lock seg_flags resource_id hmc_id exp_status_code err_msgs new_sess 155*bc331e22SVijay # type req 156*bc331e22SVijay Write ${ONE_SEG_FLAG_ALL} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 157*bc331e22SVijay Write ${ONE_SEG_FLAG_SAME} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 158*bc331e22SVijay Write ${ONE_SEG_FLAG_DONT} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 159*bc331e22SVijay Write ${TWO_SEG_FLAG_1} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 160*bc331e22SVijay Write ${TWO_SEG_FLAG_2} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 161*bc331e22SVijay Write ${TWO_SEG_FLAG_3} ${234} hmc-id ${HTTP_OK} ${EMPTY LIST} ${True} 162*bc331e22SVijay Write ${TWO_SEG_FLAG_INVALID4} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 163*bc331e22SVijay Write ${THREE_SEG_FLAG_1} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 164*bc331e22SVijay Write ${THREE_SEG_FLAG_2} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 165*bc331e22SVijay Write ${THREE_SEG_FLAG_3} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 166*bc331e22SVijay Write ${FOUR_SEG_FLAG_1} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 167*bc331e22SVijay Write ${FOUR_SEG_FLAG_2} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 168*bc331e22SVijay Write ${FOUR_SEG_FLAG_3} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 169*bc331e22SVijay Write ${FIVE_SEG_FLAG_1} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 170*bc331e22SVijay Write ${FIVE_SEG_FLAG_2} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 171*bc331e22SVijay Write ${FIVE_SEG_FLAG_3} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 172*bc331e22SVijay Write ${SIX_SEG_FLAG_1} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 173*bc331e22SVijay Write ${SIX_SEG_FLAG_2} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 174*bc331e22SVijay Write ${SIX_SEG_FLAG_3} ${234} hmc-id ${HTTP_CONFLICT} ${EMPTY LIST} ${True} 175*bc331e22SVijay Write ${SEVEN_SEG_FLAG_1} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 176*bc331e22SVijay Write ${SEVEN_SEG_FLAG_2} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 177*bc331e22SVijay Write ${SEVEN_SEG_FLAG_3} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 178*bc331e22SVijay Write ${LOCKSAME_INVALID_LEN1} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 179*bc331e22SVijay Write ${LOCKSAME_INVALID_LEN_STR} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 180*bc331e22SVijay Write ${LOCKSAME_INVALID_LEN_NEG} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 181*bc331e22SVijay Write ${LOCKSAME_INVALID_LEN_BOOL} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 182*bc331e22SVijay Write ${DONTLOCK_INVALID_LEN_BOOL} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 183*bc331e22SVijay Write ${TWO_SEG_FLAG_INVALID1} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 184*bc331e22SVijay Write ${TWO_SEG_FLAG_INVALID2} ${234} hmc-id ${HTTP_BAD_REQUEST} ${EMPTY LIST} ${True} 185*bc331e22SVijay Write ${TWO_SEG_FLAG_INVALID8} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN1} ${True} 186*bc331e22SVijay Write ${TWO_SEG_FLAG_INVALID5} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN1} ${True} 187*bc331e22SVijay Write ${TWO_SEG_FLAG_INVALID9} ${234} hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 188*bc331e22SVijay Write ${TWO_SEG_FLAG_3} 234 hmc-id ${HTTP_BAD_REQUEST} ${ERR_PATTERN2} ${True} 189*bc331e22SVijay 190*bc331e22SVijay 191*bc331e22SVijayVerify GetLockList Returns An Empty Record For An Invalid Session Id 192*bc331e22SVijay [Documentation] Verify GetLockList returns an empty record for an invalid session id. 193*bc331e22SVijay [Tags] Verify_GetLockList_Returns_An_Empty_Record_For_An_Invalid_Session_Id 194*bc331e22SVijay 195*bc331e22SVijay ${session_location}= Redfish.Get Session Location 196*bc331e22SVijay ${session_id}= Evaluate os.path.basename($session_location) modules=os 197*bc331e22SVijay 198*bc331e22SVijay ${records}= Run Keyword Get Locks List ${session_id} 199*bc331e22SVijay ${records}= Run Keyword Get Locks List ZZzZZz9zzZ 200*bc331e22SVijay ${length}= Get Length ${records} 201*bc331e22SVijay Should Be Equal ${length} ${0} 202*bc331e22SVijay 203*bc331e22SVijay 204*bc331e22SVijay*** Keywords *** 205*bc331e22SVijay 206*bc331e22SVijayReturn Data Dictionary For Single Request 207*bc331e22SVijay [Documentation] Return data dictionary for single request. 208*bc331e22SVijay [Arguments] ${lock_type} ${seg_flags} ${resource_id} 209*bc331e22SVijay 210*bc331e22SVijay # Description of argument(s): 211*bc331e22SVijay # lock_type Type of lock (Read/Write). 212*bc331e22SVijay # seg_flags Segmentation Flags to identify lock elements under system level in the hierarchy. 213*bc331e22SVijay # resource_id Decimal +ve integer value of maximum 8 hex bytes. Ex: 134, 2048 etc. 214*bc331e22SVijay 215*bc331e22SVijay ${SEG_FLAGS_LOCK}= Create Dictionary LockType=${lock_type} SegmentFlags=@{seg_flags} 216*bc331e22SVijay ... ResourceID=${resource_id} 217*bc331e22SVijay ${SEG_FLAGS_ENTRIES}= Create List ${SEG_FLAGS_LOCK} 218*bc331e22SVijay ${LOCK_REQUEST}= Create Dictionary Request=${SEG_FLAGS_ENTRIES} 219*bc331e22SVijay Log To Console ${LOCK_REQUEST} 220*bc331e22SVijay 221*bc331e22SVijay [Return] ${LOCK_REQUEST} 222*bc331e22SVijay 223*bc331e22SVijay 224*bc331e22SVijayAcquire Lock On A Given Resource 225*bc331e22SVijay [Documentation] Acquire lock on a given resource. 226*bc331e22SVijay [Arguments] ${lock_type} ${seg_flags} ${resource_id} ${exp_status_code}=${HTTP_OK} 227*bc331e22SVijay ... ${err_msgs}=${EMPTY LIST} 228*bc331e22SVijay 229*bc331e22SVijay # Description of argument(s): 230*bc331e22SVijay # lock_type Type of lock (Read/Write). 231*bc331e22SVijay # seg_flags Segmentation Flags to identify lock elements under system level in the hierarchy. 232*bc331e22SVijay # Ex: [{'LockFlag': 'LockAll', 'SegmentLength': 1}, 233*bc331e22SVijay # {'LockFlag': 'LockSame', 'SegmentLength': 2}] 234*bc331e22SVijay # resource_id Decimal +ve integer value of maximum 8 hex bytes. Ex: 134, 2048 etc. 235*bc331e22SVijay # exp_status_code expected status code from the AcquireLock request for given inputs. 236*bc331e22SVijay 237*bc331e22SVijay ${data}= Return Data Dictionary For Single Request ${lock_type} ${seg_flags} ${resource_id} 238*bc331e22SVijay ${resp}= Redfish.Post /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock 239*bc331e22SVijay ... body=${data} valid_status_codes=[${exp_status_code}] 240*bc331e22SVijay 241*bc331e22SVijay Log To Console ${resp.text} 242*bc331e22SVijay ${transaction_id}= Run Keyword If ${exp_status_code} != ${HTTP_OK} 243*bc331e22SVijay ... Set Variable ${0} 244*bc331e22SVijay ... ELSE Load Lock Record And Build Transaction To Session Map ${resp.text} 245*bc331e22SVijay 246*bc331e22SVijay Run Keyword If ${exp_status_code} != ${HTTP_OK} and ${err_msgs} != ${EMPTY LIST} 247*bc331e22SVijay ... Load Response And Verify Error ${resp.text} err_msgs=${err_msgs} 248*bc331e22SVijay Append Transaction Id And Session Id To Locks Dictionary ${transaction_id} 249*bc331e22SVijay 250*bc331e22SVijay [Return] ${transaction_id} 251*bc331e22SVijay 252*bc331e22SVijay 253*bc331e22SVijayLoad Lock Record And Build Transaction To Session Map 254*bc331e22SVijay [Documentation] Load lock record and build transaction to session map. 255*bc331e22SVijay [Arguments] ${resp_text} 256*bc331e22SVijay 257*bc331e22SVijay # Description of argument(s): 258*bc331e22SVijay # resp_text Response test from a REST request. 259*bc331e22SVijay 260*bc331e22SVijay ${acquire_lock}= Evaluate json.loads('''${resp_text}''') json 261*bc331e22SVijay Append Transaction Id And Session Id To Locks Dictionary ${acquire_lock["TransactionID"]} 262*bc331e22SVijay 263*bc331e22SVijay [Return] ${acquire_lock["TransactionID"]} 264*bc331e22SVijay 265*bc331e22SVijay 266*bc331e22SVijayLoad Response And Verify Error 267*bc331e22SVijay [Documentation] Load response and verify error. 268*bc331e22SVijay [Arguments] ${error_resp} ${err_msgs}=${EMPTY LIST} 269*bc331e22SVijay 270*bc331e22SVijay # Description of argument(s): 271*bc331e22SVijay # error_resp Error response from a REST request. 272*bc331e22SVijay # err_msgs List of error msg patterns. 273*bc331e22SVijay 274*bc331e22SVijay ${error_resp}= Replace String ${error_resp} \" \\" 275*bc331e22SVijay ${error_response}= Evaluate json.loads('''${error_resp}''') json 276*bc331e22SVijay 277*bc331e22SVijay ${errors}= Get Dictionary Values ${error_response} 278*bc331e22SVijay ${extended_errors}= Create List 279*bc331e22SVijay 280*bc331e22SVijay FOR ${error} IN @{errors} 281*bc331e22SVijay Append To List ${extended_errors} ${error[0]["Message"]} 282*bc331e22SVijay END 283*bc331e22SVijay 284*bc331e22SVijay Log To Console EXTENDED = ${extended_errors} 285*bc331e22SVijay 286*bc331e22SVijay FOR ${exp_error} IN @{err_msgs} 287*bc331e22SVijay Run Keyword Expect List Of Errors In An Extended Errors ${exp_error} ${extended_errors} 288*bc331e22SVijay END 289*bc331e22SVijay 290*bc331e22SVijay 291*bc331e22SVijayExpect List Of Errors In An Extended Errors 292*bc331e22SVijay [Documentation] Expect list of errors in an extended errors. 293*bc331e22SVijay [Arguments] ${exp_error} ${extended_errors}=${EMPTY LIST} 294*bc331e22SVijay 295*bc331e22SVijay ${found}= Set Variable ${False} 296*bc331e22SVijay 297*bc331e22SVijay FOR ${error_record} IN @{extended_errors} 298*bc331e22SVijay ${found}= Evaluate '${exp_error}' in '${error_record}' 299*bc331e22SVijay Exit For Loop If ${found} == ${True} 300*bc331e22SVijay END 301*bc331e22SVijay 302*bc331e22SVijay Should Be True ${found} 303*bc331e22SVijay 304*bc331e22SVijay 305*bc331e22SVijayAppend Transaction Id And Session Id To Locks Dictionary 306*bc331e22SVijay [Documentation] Append transaction id and session id to locks dictionary. 307*bc331e22SVijay [Arguments] ${transaction_id} 308*bc331e22SVijay 309*bc331e22SVijay # Description of argument(s): 310*bc331e22SVijay # transaction_id Transaction ID created from acquire lock request. Ex: 8, 9 etc. 311*bc331e22SVijay 312*bc331e22SVijay ${session_location}= Redfish.Get Session Location 313*bc331e22SVijay ${session_key}= Redfish.Get Session Key 314*bc331e22SVijay ${session_id}= Evaluate os.path.basename($session_location) modules=os 315*bc331e22SVijay Set To Dictionary ${LOCKS} ${${transaction_id}} ${session_id} 316*bc331e22SVijay Log To Console session=${session_id} 317*bc331e22SVijay Log To Console X-AUTH-Token=${session_key} 318*bc331e22SVijay Log To Console LOCKS=${LOCKS} 319*bc331e22SVijay 320*bc331e22SVijay 321*bc331e22SVijayGet Locks List 322*bc331e22SVijay [Documentation] Get locks list. 323*bc331e22SVijay [Arguments] @{sessions} ${exp_status_code}=${HTTP_OK} 324*bc331e22SVijay 325*bc331e22SVijay # Description of argument(s): 326*bc331e22SVijay # sessions List of comma separated strings. Ex: ["euHoAQpvNe", "ecTjANqwFr"] 327*bc331e22SVijay # exp_status_code expected status code from the GetLockList request for given inputs. 328*bc331e22SVijay 329*bc331e22SVijay ${sessions}= Evaluate json.dumps(${sessions}) json 330*bc331e22SVijay ${data}= Set Variable {"SessionIDs": ${sessions}} 331*bc331e22SVijay ${resp}= Redfish.Post /ibm/v1/HMC/LockService/Actions/LockService.GetLockList 332*bc331e22SVijay ... body=${data} valid_status_codes=[${exp_status_code}] 333*bc331e22SVijay 334*bc331e22SVijay ${locks}= Evaluate json.loads('''${resp.text}''') json 335*bc331e22SVijay 336*bc331e22SVijay [Return] ${locks["Records"]} 337*bc331e22SVijay 338*bc331e22SVijay 339*bc331e22SVijayRelease Lock 340*bc331e22SVijay [Documentation] Release lock. 341*bc331e22SVijay [Arguments] @{transaction_ids} ${release_type}=Transaction ${exp_status_code}=${HTTP_OK} 342*bc331e22SVijay 343*bc331e22SVijay # Description of argument(s): 344*bc331e22SVijay # transaction_ids List of transaction ids. Ex: [15, 18] 345*bc331e22SVijay # release_type Release all locks acquired using current session or only given transaction numbers. 346*bc331e22SVijay # Ex: Session, Transaction. Default will be Transaction. 347*bc331e22SVijay # exp_status_code expected status code from the ReleaseLock request for given inputs. 348*bc331e22SVijay 349*bc331e22SVijay ${data}= Set Variable {"Type": "${release_type}", "TransactionIDs": ${transaction_ids}} 350*bc331e22SVijay ${data}= Evaluate json.dumps(${data}) json 351*bc331e22SVijay Redfish.Post /ibm/v1/HMC/LockService/Actions/LockService.ReleaseLock 352*bc331e22SVijay ... body=${data} valid_status_codes=[${exp_status_code}] 353*bc331e22SVijay 354*bc331e22SVijay 355*bc331e22SVijayVerify Lock Record 356*bc331e22SVijay [Documentation] Verify lock record. 357*bc331e22SVijay [Arguments] ${lock_found} &{lock_records} 358*bc331e22SVijay 359*bc331e22SVijay # Description of argument(s): 360*bc331e22SVijay # lock_found True if lock record is expected to be present, else False. 361*bc331e22SVijay # lock_records A dictionary containing key value pairs of a lock record. 362*bc331e22SVijay 363*bc331e22SVijay ${session}= Get From Dictionary ${LOCKS} ${lock_records["TransactionID"]} 364*bc331e22SVijay ${locks}= Run Keyword Get Locks List ${session} 365*bc331e22SVijay 366*bc331e22SVijay ${lock_record_found}= Set Variable ${False} 367*bc331e22SVijay 368*bc331e22SVijay FOR ${record} IN @{locks} 369*bc331e22SVijay ${record}= Evaluate json.dumps(${record}) json 370*bc331e22SVijay ${record}= Evaluate json.loads('''${record}''') json 371*bc331e22SVijay ${lock_record_found}= Set Variable If ${record["TransactionID"]} == ${lock_records["TransactionID"]} 372*bc331e22SVijay ... ${True} ${False} 373*bc331e22SVijay 374*bc331e22SVijay Continue For Loop If ${lock_record_found} == ${False} 375*bc331e22SVijay Dictionaries Should Be Equal ${record} ${lock_records} 376*bc331e22SVijay Exit For Loop 377*bc331e22SVijay END 378*bc331e22SVijay 379*bc331e22SVijay Should Be Equal ${lock_record_found} ${lock_found} 380*bc331e22SVijay 381*bc331e22SVijay 382*bc331e22SVijayAcquire And Release Lock 383*bc331e22SVijay [Documentation] Acquire and release lock. 384*bc331e22SVijay [Arguments] ${lock_type} ${seg_flags} ${resource_id} ${hmc_id} ${exp_status_code}=${HTTP_OK} 385*bc331e22SVijay ... ${err_msgs}=${EMPTY LIST} ${new_sess_req}=${True} 386*bc331e22SVijay 387*bc331e22SVijay # Description of argument(s): 388*bc331e22SVijay # lock_type Type of lock (Read/Write). 389*bc331e22SVijay # seg_flags Segmentation Flags to identify lock elements under system level in the hierarchy. 390*bc331e22SVijay # Ex: [{'LockFlag': 'LockAll', 'SegmentLength': 1}, 391*bc331e22SVijay # {'LockFlag': 'LockSame', 'SegmentLength': 2}] 392*bc331e22SVijay # resource_id Decimal +ve integer value of maximum 8 hex bytes. Ex: 134, 2048 etc. 393*bc331e22SVijay # hmc_id Hardware management console id. 394*bc331e22SVijay # exp_status_code Expected status code from the AcquireLock request for given inputs. 395*bc331e22SVijay 396*bc331e22SVijay # Get REST session to BMC. 397*bc331e22SVijay Run Keyword If ${new_sess_req} == ${True} Create New Session 398*bc331e22SVijay 399*bc331e22SVijay ${inputs}= Create Dictionary LockType=${lock_type} ResourceID=${resource_id} 400*bc331e22SVijay ... SegmentFlags=${seg_flags} HMCID=${hmc_id} 401*bc331e22SVijay 402*bc331e22SVijay ${transaction_id}= Run Keyword Acquire Lock On A Given Resource ${inputs["LockType"]} 403*bc331e22SVijay ... ${inputs["SegmentFlags"]} ${inputs["ResourceID"]} ${exp_status_code} err_msgs=${err_msgs} 404*bc331e22SVijay 405*bc331e22SVijay ${session}= Get From Dictionary ${LOCKS} ${transaction_id} 406*bc331e22SVijay ${locks}= Run Keyword Get Locks List ${session} 407*bc331e22SVijay 408*bc331e22SVijay Set To Dictionary ${inputs} TransactionID=${${transaction_id}} SessionID=${session} 409*bc331e22SVijay ${lock_found}= Set Variable If ${exp_status_code} == ${HTTP_OK} ${True} ${False} 410*bc331e22SVijay Verify Lock Record ${lock_found} &{inputs} 411*bc331e22SVijay 412*bc331e22SVijay Return From Keyword If ${exp_status_code} != ${HTTP_OK} 413*bc331e22SVijay 414*bc331e22SVijay Release Lock ${transaction_id} 415*bc331e22SVijay ${locks}= Run Keyword Get Locks List ${session} 416*bc331e22SVijay Verify Lock Record ${False} &{inputs} 417*bc331e22SVijay 418*bc331e22SVijay # Delete the session. 419*bc331e22SVijay Redfish.Logout 420*bc331e22SVijay 421*bc331e22SVijay 422*bc331e22SVijayCreate New Session 423*bc331e22SVijay [Documentation] Create new session. 424*bc331e22SVijay 425*bc331e22SVijay # Delete current session if any. 426*bc331e22SVijay Redfish.Logout 427*bc331e22SVijay 428*bc331e22SVijay # Get a redfish session to BMC. 429*bc331e22SVijay Redfish.Login 430*bc331e22SVijay ${session_location}= Redfish.Get Session Location 431*bc331e22SVijay ${session_key}= Redfish.Get Session Key 432*bc331e22SVijay 433*bc331e22SVijay 434*bc331e22SVijayTest Teardown Execution 435*bc331e22SVijay [Documentation] Test teardown execution. 436*bc331e22SVijay 437*bc331e22SVijay FFDC On Test Case Fail 438*bc331e22SVijay Redfish.Logout 439*bc331e22SVijay 440