Fix dom data broker remote lister scenarion 77/56777/3
authorPeter Gubka <pgubka@cisco.com>
Wed, 10 May 2017 10:11:36 +0000 (12:11 +0200)
committerVratko Polák <vrpolak@cisco.com>
Thu, 11 May 2017 08:22:04 +0000 (08:22 +0000)
Final assert if data match was missing.

Change-Id: I23b750ed6f0ee036c310c67f354224476dc30d5a
Signed-off-by: Peter Gubka <pgubka@cisco.com>
csit/libraries/MdsalLowlevel.robot
csit/libraries/controller/DdbCommons.robot
csit/variables/mdsal/lowlevelrpc/subscribe_ddtl/post_data.xml [new file with mode: 0644]
csit/variables/mdsal/lowlevelrpc/unsubscribe_ddtl/post_data.xml [new file with mode: 0644]

index 0ee7049440ac92853791f2cd5bbce24db117068f..dd3333361e00ef13ce1b6b2b74214b1f41bf032b 100644 (file)
@@ -164,21 +164,27 @@ Unsubscribe_Dtcl
     [Arguments]    ${member_index}
     [Documentation]    Unsubscribe a listener from the data changes. Invoke unsubscribe-dtcl rpc.
     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
-    TemplatedRequests.Post_As_Xml_Templated    ${UNSUBSCRIBE_DTCL_DIR}    session=${session}
+    ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${UNSUBSCRIBE_DTCL_DIR}    session=${session}
+    ${xml} =    XML.Parse_Xml    ${text}
+    ${matches} =    XML.Get_Element_Text    ${xml}    xpath=copy-matches
+    ${matches} =    BuiltIn.Convert_To_Boolean    ${matches}
+    BuiltIn.Return_From_Keyword    ${matches}
 
 Subscribe_Ddtl
     [Arguments]    ${member_index}
     [Documentation]    Subscribe DOMDataTreeListener to listen for the data changes.
     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
-    ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${SUBSCRIBE_DDTL_DIR}    base_name=location    extension=uri
-    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
+    TemplatedRequests.Post_As_Xml_Templated    ${SUBSCRIBE_DDTL_DIR}    session=${session}
 
 Unsubscribe_Ddtl
     [Arguments]    ${member_index}
     [Documentation]    Unsubscribe DOMDataTreeListener from listening to the data changes.
     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
-    ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNSUBSCRIBE_DDTL_DIR}    base_name=location    extension=uri
-    ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
+    ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${UNSUBSCRIBE_DDTL_DIR}    session=${session}
+    ${xml} =    XML.Parse_Xml    ${text}
+    ${matches} =    XML.Get_Element_Text    ${xml}    xpath=copy-matches
+    ${matches} =    BuiltIn.Convert_To_Boolean    ${matches}
+    BuiltIn.Return_From_Keyword    ${matches}
 
 Start_Publish_Notifications
     [Arguments]    ${member_index}    ${gid}    ${seconds}    ${notif_per_sec}
index 6b4d02f1291c026d3d4fe30d178dd303fa112c77..c203504a9eb6cfc99be2205f2c0ad1815b7d0ce1 100644 (file)
@@ -283,12 +283,14 @@ Get_Seconds_To_Time
 Remote_Listener_Test_Templ
     [Arguments]    ${listener_node_role}    ${shard_name}=${SHARD_NAME}    ${shard_type}=${SHARD_TYPE}
     [Documentation]    Implements remote listener test scenario.
+    ${subscribed} =    BuiltIn.Set_Variable    ${False}
     ${all_indices} =    ClusterManagement.List_All_Indices
     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard    shard_name=${shard_name}    shard_type=${shard_type}    member_index_list=${all_indices}
     ${follower1} =    Collections.Get_From_List    ${follower_list}    ${0}
     ${follower2} =    Collections.Get_From_List    ${follower_list}    ${1}
     ${listener_node_dst} =    BuiltIn.Set_Variable_If    "${listener_node_role}" == "leader"    ${leader}    ${follower1}
     MdsalLowlevel.Subscribe_Dtcl    ${listener_node_dst}
+    ${subscribed} =    BuiltIn.Set_Variable    ${True}
     ${all_ip_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${all_indices}
     MdsalLowlevelPy.Start_Write_Transactions_On_Nodes    ${all_ip_list}    ${all_indices}    ${ID_PREFIX}    ${DURATION_10S}    ${TRANSACTION_RATE_1K}    chained_flag=${CHAINED_TX}
     ClusterAdmin.Make_Leader_Local    ${follower1}    ${shard_name}    ${shard_type}
@@ -297,17 +299,22 @@ Remote_Listener_Test_Templ
     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
     : FOR    ${resp}    IN    @{resp_list}
     \    TemplatedRequests.Check_Status_Code    ${resp}
-    [Teardown]    MdsalLowlevel.Unsubscribe_Dtcl    ${listener_node_dst}
+    ${copy_matches} =    MdsalLowlevel.Unsubscribe_Dtcl    ${listener_node_dst}
+    ${subscribed} =    BuiltIn.Set_Variable    ${False}
+    BuiltIn.Should_Be_True    ${copy_matches}
+    [Teardown]    BuiltIn.Run_Keyword_If    ${subscribed}    MdsalLowlevel.Unsubscribe_Dtcl    ${listener_node_dst}
 
 Remote_Listener_PrefBasedShard_Test_Templ
     [Arguments]    ${listener_node_role}    ${shard_name}=${PREF_BASED_SHARD}    ${shard_type}=${SHARD_TYPE}
     [Documentation]    Implements listener isolation test scenario.
+    ${subscribed} =    BuiltIn.Set_Variable    ${False}
     ${all_indices} =    ClusterManagement.List_All_Indices
     ${leader}    ${follower_list} =    ClusterManagement.Get_Leader_And_Followers_For_Shard    shard_name=${shard_name}!!    shard_type=${shard_type}    member_index_list=${all_indices}
     ${follower1} =    Collections.Get_From_List    ${follower_list}    ${0}
     ${follower2} =    Collections.Get_From_List    ${follower_list}    ${1}
     ${listener_node_dst} =    BuiltIn.Set_Variable_If    "${listener_node_role}" == "leader"    ${leader}    ${follower1}
     MdsalLowlevel.Subscribe_Ddtl    ${listener_node_dst}
+    ${subscribed} =    BuiltIn.Set_Variable    ${True}
     ${all_ip_list} =    ClusterManagement.Resolve_IP_Address_For_Members    ${all_indices}
     MdsalLowlevelPy.Start_Produce_Transactions_On_Nodes    ${all_ip_list}    ${all_indices}    ${ID_PREFIX}    ${DURATION_10S}    ${TRANSACTION_RATE_1K}
     MdsalLowlevel.Become_Prefix_Leader    ${follower1}    ${shard_name}    ${ID_PREFIX}
@@ -316,7 +323,10 @@ Remote_Listener_PrefBasedShard_Test_Templ
     ${resp_list} =    MdsalLowlevelPy.Wait_For_Transactions
     : FOR    ${resp}    IN    @{resp_list}
     \    TemplatedRequests.Check_Status_Code    ${resp}
-    [Teardown]    MdsalLowlevel.Unsubscribe_Ddtl    ${listener_node_dst}
+    ${copy_matches} =    MdsalLowlevel.Unsubscribe_Ddtl    ${listener_node_dst}
+    ${subscribed} =    BuiltIn.Set_Variable    ${False}
+    BuiltIn.Should_Be_True    ${copy_matches}
+    [Teardown]    BuiltIn.Run_Keyword_If    ${subscribed}    MdsalLowlevel.Unsubscribe_Ddtl    ${listener_node_dst}
 
 Create_Prefix_Based_Shard_And_Verify
     [Arguments]    ${prefix}=${PREF_BASED_SHARD}
diff --git a/csit/variables/mdsal/lowlevelrpc/subscribe_ddtl/post_data.xml b/csit/variables/mdsal/lowlevelrpc/subscribe_ddtl/post_data.xml
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/csit/variables/mdsal/lowlevelrpc/unsubscribe_ddtl/post_data.xml b/csit/variables/mdsal/lowlevelrpc/unsubscribe_ddtl/post_data.xml
new file mode 100644 (file)
index 0000000..e69de29