Added test case for lock management

changes:
   - Acquire Lock After Reboot
   - Fail To Acquire Lock For Invalid Resource ID Data Type

Change-Id: Iaebb8c6f0a8b936c9f0fa7bda2106600f41ad317
Signed-off-by: Sushil Singh <susilsi7@in.ibm.com>
diff --git a/data/resource_lock_table.json b/data/resource_lock_table.json
index 639a323..b6de70b 100644
--- a/data/resource_lock_table.json
+++ b/data/resource_lock_table.json
@@ -58,6 +58,7 @@
 
     },
     "Invalid Case": {
+        "ResourceIDInvalidDataType": "234",
         "ReadCase1": {
             "read": [{
                 "LockFlag": "DontLock",
diff --git a/openpower/ext_interfaces/test_lock_management.robot b/openpower/ext_interfaces/test_lock_management.robot
index e2393ef..622a73b 100644
--- a/openpower/ext_interfaces/test_lock_management.robot
+++ b/openpower/ext_interfaces/test_lock_management.robot
@@ -75,6 +75,20 @@
     HMCID-01       WriteCase2,ReadCase2
 
 
+Acquire Lock After Reboot
+    [Documentation]  Acquire and release read and write locks after reboot.
+    [Tags]  Acquire_Lock_After_Reboot
+    [Template]  Verify Acquire Lock After Reboot
+
+    # client_id    lock_type
+    HMCID-01       ReadCase1
+    HMCID-01       ReadCase2
+    HMCID-01       ReadCase3
+    HMCID-01       WriteCase1
+    HMCID-01       WriteCase2
+    HMCID-01       WriteCase3
+
+
 Acquire And Release Lock In Loop
     [Documentation]  Acquire and release read, write locks in loop.
     [Tags]  Acquire_And_Release_Lock_In_Loop
@@ -119,6 +133,20 @@
     HMCID-01,HMCID-02    ReadCase1,ReadCase1
 
 
+Test Invalid Resource ID Data Type Locking
+    [Documentation]  Failed to acquire lock for invalid resource id data type.
+    [Tags]  Test_Invalid_Resource_ID_Data_Type_Locking
+    [Template]  Verify Fail To Acquire Lock For Invalid Resource ID Data Type
+
+    # client_id    lock_type
+    HMCID-01       ReadCase1
+    HMCID-01       ReadCase2
+    HMCID-01       ReadCase3
+    HMCID-01       WriteCase1
+    HMCID-01       WriteCase2
+    HMCID-01       WriteCase3
+
+
 Fail To Acquire Lock For Invalid Lock Type
     [Documentation]  Failed to acquire read, write lock for invalid lock data passed.
     [Tags]  Fail_To_Acquire_Lock_For_Invalid_Lock_Type
@@ -234,8 +262,8 @@
     # lock_type      Read lock or Write lock.
     # status_code    HTTP status code.
 
-    ${resp}=  Form Data To Acquire Lock  ${lock_type}
-    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${resp}
+    ${lock_dict_param}=  Form Data To Acquire Lock  ${lock_type}
+    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${lock_dict_param}
     Should Be Equal As Strings  ${resp.status_code}  ${status_code}
     ${resp}=  Return Description Of Response  ${resp.content}
 
@@ -251,14 +279,29 @@
     # message        Return message from URI.
     # status_code    HTTP status code.
 
-    ${resp}=  Form Data To Acquire Invalid Lock  ${lock_type}
-    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${resp}
+    ${lock_dict_param}=  Form Data To Acquire Invalid Lock  ${lock_type}
+    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${lock_dict_param}
     Should Be Equal As Strings  ${resp.status_code}  ${status_code}
     Valid Value  message  ['${resp.content}']
 
     [Return]  ${resp}
 
 
+Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
+    [Documentation]  Redfish to post request to acquire in-valid lock with invalid data type of resource id.
+    [Arguments]  ${lock_type}  ${status_code}=${HTTP_OK}
+
+    # Description of argument(s):
+    # lock_type      Read lock or Write lock.
+    # status_code    HTTP status code.
+
+    ${lock_dict_param}=  Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID  ${lock_type}
+    ${resp}=  Redfish Post Request  /ibm/v1/HMC/LockService/Actions/LockService.AcquireLock  data=${lock_dict_param}
+    Should Be Equal As Strings  ${resp.status_code}  ${status_code}
+
+    [Return]  ${resp}
+
+
 Form Data To Acquire Lock
     [Documentation]  Create a dictionay for lock request.
     [Arguments]  ${lock_type}
@@ -271,9 +314,26 @@
     ...    ${lock_res_info["Valid Case"]["${lock_type}"]}
     ...    ${lock_res_info["Valid Case"]["ResourceID"]}
     ${temp_list}=  Create List  ${resp}
-    ${lock_request}=  Create Dictionary  Request=${temp_list}
+    ${lock_request_dict}=  Create Dictionary  Request=${temp_list}
 
-    [Return]  ${lock_request}
+    [Return]  ${lock_request_dict}
+
+
+Form Data To Acquire Invalid Lock With Invalid Data Type Of Resource ID
+    [Documentation]  Create a dictionay for in-valid lock request.
+    [Arguments]  ${lock_type}
+
+    # Description of argument(s):
+    # lock_type      Read lock or Write lock.
+
+    ${lock_res_info}=  Get Lock Resource Information
+    ${resp}=  RW General Dictionary
+    ...    ${lock_res_info["Valid Case"]["${lock_type}"]}
+    ...    ${lock_res_info["Invalid Case"]["ResourceIDInvalidDataType"]}
+    ${temp_list}=  Create List  ${resp}
+    ${lock_request_dict}=  Create Dictionary  Request=${temp_list}
+
+    [Return]  ${lock_request_dict}
 
 
 Form Data To Acquire Invalid Lock
@@ -288,9 +348,9 @@
     ...    ${lock_res_info["Invalid Case"]["${lock_type}"]}
     ...    ${lock_res_info["Valid Case"]["ResourceID"]}
     ${temp_list}=  Create List  ${resp}
-    ${lock_request}=  Create Dictionary  Request=${temp_list}
+    ${lock_request_dict}=  Create Dictionary  Request=${temp_list}
 
-    [Return]  ${lock_request}
+    [Return]  ${lock_request_dict}
 
 
 Get Locks List On Resource
@@ -358,12 +418,12 @@
     Append To List  ${trans_id_list}  ${trans_id}
     Verify Lock On Resource  ${session_info}  ${trans_id_list}
 
-    ${BEROFE_REBOOT_XAUTH_TOKEN}=  Set Variable  ${XAUTH_TOKEN}
+    ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
 
     Run Keyword If  '${reboot_flag}' == 'True'
     ...  Run Keywords  Redfish OBMC Reboot (off)  AND
     ...  Redfish Login  AND
-    ...  Set Global Variable  ${XAUTH_TOKEN}  ${BEROFE_REBOOT_XAUTH_TOKEN}  AND
+    ...  Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}  AND
     ...  Verify Lock On Resource  ${session_info}  ${trans_id_list}  AND
     ...  Release Locks On Resource  ${session_info}  ${trans_id_list}  Transaction  ${HTTP_OK}
 
@@ -483,6 +543,32 @@
     Redfish Delete Session  ${session_info}
 
 
+Verify Acquire Lock After Reboot
+    [Documentation]  Acquire read and write lock after the reboot and release lock.
+    [Arguments]  ${client_id}  ${lock_type}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+
+    ${trans_id_list}=  Create List
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+    ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
+    Redfish OBMC Reboot (off)
+    Redfish Login
+    Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}
+
+    ${trans_id}=  Redfish Post Acquire Lock  ${lock_type}
+    Append To List  ${trans_id_list}  ${trans_id}
+    Verify Lock On Resource  ${session_info}  ${trans_id_list}
+    Release Locks On Resource  ${session_info}  ${trans_id_list}  Transaction  ${HTTP_OK}
+
+    ${trans_id_emptylist}=  Create List
+    Verify Lock On Resource  ${session_info}  ${trans_id_emptylist}
+    Redfish Delete Session  ${session_info}
+
+
 Verify Acquire And Release Lock In Loop
     [Documentation]  Acquire lock in loop.
     [Arguments]  ${client_id}  ${lock_type}
@@ -614,8 +700,23 @@
     Redfish Delete Session  ${session_info2}
 
 
+Verify Fail To Acquire Lock For Invalid Resource ID Data Type
+    [Documentation]  Verify fail to acquire the lock with invalid resource id data type.
+    [Arguments]  ${client_id}  ${lock_type}
+
+    # Description of argument(s):
+    # client_id    This client id can contain string value
+    #              (e.g. 12345, "HMCID").
+    # lock_type    Read lock or Write lock.
+
+    ${session_info}=  Create Redfish Session With ClientID  ${client_id}
+    Redfish Post Acquire Invalid Lock With Invalid Data Type Of Resource ID
+    ...  ${lock_type}  status_code=${HTTP_BAD_REQUEST}
+    Redfish Delete Session  ${session_info}
+
+
 Verify Fail To Acquire Lock For Invalid Lock Data
-    [Documentation]  Verify fail to quired lock with invalid lock types, lock flags, segement flags.
+    [Documentation]  Verify fail to acquired lock with invalid lock types, lock flags, segement flags.
     [Arguments]  ${client_id}  ${lock_type}  ${message}
 
     # Description of argument(s):