Code for lock management
Changes:
- Multiple lock-ins a single request can throw
conflict in case of read and write.
- Multiple locks in a single request can be
acquired in case of read.
- one session tries to release the lock on
another session can return a response
bad request instead of un-authorized.
Tested:
Ran successfully
openpower/ext_interfaces/test_lock_management.robot
Change-Id: I946fdf04612d781eee32c65af194c6bf5a6d0828
Signed-off-by: Sushil Singh <susilsi7@in.ibm.com>
diff --git a/openpower/ext_interfaces/test_lock_management.robot b/openpower/ext_interfaces/test_lock_management.robot
index 92a8c1e..4ca37e5 100644
--- a/openpower/ext_interfaces/test_lock_management.robot
+++ b/openpower/ext_interfaces/test_lock_management.robot
@@ -16,6 +16,7 @@
*** Variables ***
+${CONFLICT_RQUEST} Conflict
${BAD_REQUEST} Bad Request
&{default_trans_id} TransactionID=${1}
@@ -114,9 +115,19 @@
[Tags] Fail_To_Acquire_Read_And_Write_In_Single_Request
[Template] Verify Fail To Acquire Read And Write In Single Request
+ # client_id lock_type status_code
+ HMCID-01 ReadCase1,WriteCase1 ${HTTP_CONFLICT}
+ HMCID-01 WriteCase1,ReadCase1 ${HTTP_CONFLICT}
+ HMCID-01 WriteCase1,WriteCase1 ${HTTP_CONFLICT}
+
+
+Acquire Read In Single Request
+ [Documentation] Acquire read in single request.
+ [Tags] Acquire_Read_In_Single_Request
+ [Template] Verify Acquire Read In Single Request
+
# client_id lock_type
- HMCID-01 ReadCase1,WriteCase1
- HMCID-01 WriteCase1,ReadCase1
+ HMCID-01 ReadCase1,ReadCase1
Acquire Multiple Lock Request At CEC Level
@@ -468,6 +479,11 @@
... /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock data=${lock_dict_param}
Should Be Equal As Strings ${resp.status_code} ${status_code}
+ Run Keyword If ${status_code} == ${HTTP_CONFLICT}
+ ... Should Be Equal As Strings ${CONFLICT_RQUEST} ${resp.content}
+ ... ELSE
+ ... Run Keyword And Return Return Description Of Response ${resp.content}
+
[Return] ${resp}
@@ -724,6 +740,23 @@
Verify Fail To Acquire Read And Write In Single Request
[Documentation] Verify fail to acquire read and write lock passed in single request.
+ [Arguments] ${client_id} ${lock_type} ${status_code}
+
+ # Description of argument(s):
+ # client_id This client id can contain string value
+ # (e.g. 12345, "HMCID").
+ # lock_type Read lock or Write lock.
+ # status_code HTTP status code
+
+ ${lock_type_list}= Split String ${lock_type} ,
+
+ ${session_info}= Create Redfish Session With ClientID ${client_id}
+ ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list} status_code=${status_code}
+ Redfish Delete Session ${session_info}
+
+
+Verify Acquire Read In Single Request
+ [Documentation] Verify acquire read in single request.
[Arguments] ${client_id} ${lock_type}
# Description of argument(s):
@@ -731,10 +764,18 @@
# (e.g. 12345, "HMCID").
# lock_type Read lock or Write lock.
+ ${trans_id_list}= Create List
${lock_type_list}= Split String ${lock_type} ,
${session_info}= Create Redfish Session With ClientID ${client_id}
- ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list} status_code=${HTTP_BAD_REQUEST}
+ ${trans_id}= Redfish Post Acquire List Lock ${lock_type_list}
+ Append To List ${trans_id_list} ${trans_id}
+ Append To List ${trans_id_list} ${trans_id}
+
+ Verify Lock On Resource ${session_info} ${trans_id_list}
+ Remove From List ${trans_id_list} 1
+ Release Locks On Resource ${session_info} ${trans_id_list}
+
Redfish Delete Session ${session_info}
@@ -1112,7 +1153,7 @@
Verify Lock On Resource ${session_info2} ${trans_id_list2}
Release Locks On Resource
- ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_UNAUTHORIZED}
+ ... ${session_info1} ${trans_id_list1} Transaction status_code=${HTTP_BAD_REQUEST}
Verify Lock On Resource ${session_info1} ${trans_id_list1}
Release Locks On Resource ${session_info1} ${trans_id_list1} release_lock_type=Session
Release Locks On Resource ${session_info2} ${trans_id_list2} release_lock_type=Session