Fix the JSONRPC read service issue
[integration/test.git] / csit / libraries / ClusterOpenFlow.robot
index c2ec5231d8d3a212147ef35d3e9f40f963e2c2d9..ac214ecefac2fea1bb21ecc24ad98f2cb6f6b40b 100644 (file)
@@ -1,8 +1,10 @@
 *** Settings ***
 Documentation     Cluster OpenFlow library. So far this library is only to be used by OpenFlow cluster test as it is very specific for this test.
+Library           Collections
 Library           RequestsLibrary
 Library           ${CURDIR}/ScaleClient.py
 Resource          ClusterManagement.robot
+Resource          CompareStream.robot
 Resource          MininetKeywords.robot
 Resource          Utils.robot
 Variables         ../variables/Variables.py
@@ -26,6 +28,8 @@ Get InventoryConfig Shard Status
 Check OpenFlow Shards Status
     [Arguments]    ${controller_index_list}=${EMPTY}
     [Documentation]    Check Status for all shards in OpenFlow application.
+    CompareStream.Run_Keyword_If_At_Least_Phosphorus    Collections.Remove Values From List    ${SHARD_OPER_LIST}    entity-ownership
+    Log    ${SHARD_OPER_LIST}
     ClusterManagement.Verify_Leader_Exists_For_Each_Shard    shard_name_list=${SHARD_OPER_LIST}    shard_type=operational    member_index_list=${controller_index_list}
     ClusterManagement.Verify_Leader_Exists_For_Each_Shard    shard_name_list=${SHARD_CONF_LIST}    shard_type=config    member_index_list=${controller_index_list}
 
@@ -61,7 +65,9 @@ Check No OpenFlow Network Operational Information
     [Arguments]    ${controller_index_list}=${EMPTY}
     [Documentation]    Check device is not in operational inventory or topology in all cluster instances in ${controller_index_list}.
     ${dictionary}    Create Dictionary    openflow=0
-    Wait Until Keyword Succeeds    5s    1s    ClusterManagement.Check_Item_Occurrence_Member_List_Or_All    uri=${OPERATIONAL_NODES_API}    dictionary=${dictionary}    member_index_list=${controller_index_list}
+    CompareStream.Run_Keyword_If_At_Least_Neon    Wait Until Keyword Succeeds    5s    1s    ClusterManagement.Check_No_Content_Member_List_Or_All    uri=${OPERATIONAL_NODES_API}    member_index_list=${controller_index_list}
+    CompareStream.Run_Keyword_If_At_Most_Fluorine    Wait Until Keyword Succeeds    5s    1s    ClusterManagement.Check_Item_Occurrence_Member_List_Or_All    uri=${OPERATIONAL_NODES_API}    dictionary=${dictionary}
+    ...    member_index_list=${controller_index_list}
     ${dictionary}    Create Dictionary    openflow=0
     Wait Until Keyword Succeeds    5s    1s    ClusterManagement.Check_Item_Occurrence_Member_List_Or_All    uri=${OPERATIONAL_TOPO_API}    dictionary=${dictionary}    member_index_list=${controller_index_list}
 
@@ -134,7 +140,7 @@ Take OpenFlow Device Link Up and Verify
     ${ouput}=    MininetKeywords.Send Mininet Command    ${mininet_conn_id}    link s1 s2 up
     Wait Until Keyword Succeeds    5s    1s    ClusterManagement.Check_Item_Occurrence_Member_List_Or_All    uri=${operational_port_1}    dictionary=${dictionary}    member_index_list=${controller_index_list}
     ${dictionary}    Create Dictionary    openflow:1=21    openflow:2=19    openflow:3=19
-    Wait Until Keyword Succeeds    5s    1s    ClusterManagement.Check_Item_Occurrence_Member_List_Or_All    uri=${OPERATIONAL_TOPO_API}    dictionary=${dictionary}    member_index_list=${controller_index_list}
+    Wait Until Keyword Succeeds    10s    1s    ClusterManagement.Check_Item_Occurrence_Member_List_Or_All    uri=${OPERATIONAL_TOPO_API}    dictionary=${dictionary}    member_index_list=${controller_index_list}
 
 Verify Switch Connections Running On Member
     [Arguments]    ${switch_count}    ${member_index}
@@ -153,37 +159,39 @@ Check Linear Topology On Member
     [Documentation]    Check Linear topology.
     ${session} =    Resolve_Http_Session_For_Member    member_index=${member_index}
     ${resp}    RequestsLibrary.Get Request    ${session}    ${OPERATIONAL_TOPO_API}
-    Log    ${resp.content}
+    Log    ${resp.text}
     Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${switch}    IN RANGE    1    ${switches+1}
-    \    Should Contain    ${resp.content}    "node-id":"openflow:${switch}"
-    \    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:1"
-    \    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:2"
-    \    Should Contain    ${resp.content}    "source-tp":"openflow:${switch}:2"
-    \    Should Contain    ${resp.content}    "dest-tp":"openflow:${switch}:2"
-    \    ${edge}    Evaluate    ${switch}==1 or ${switch}==${switches}
-    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "tp-id":"openflow:${switch}:3"
-    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "source-tp":"openflow:${switch}:3"
-    \    Run Keyword Unless    ${edge}    Should Contain    ${resp.content}    "dest-tp":"openflow:${switch}:3
+    FOR    ${switch}    IN RANGE    1    ${switches+1}
+        Should Contain    ${resp.text}    "node-id":"openflow:${switch}"
+        Should Contain    ${resp.text}    "tp-id":"openflow:${switch}:1"
+        Should Contain    ${resp.text}    "tp-id":"openflow:${switch}:2"
+        Should Contain    ${resp.text}    "source-tp":"openflow:${switch}:2"
+        Should Contain    ${resp.text}    "dest-tp":"openflow:${switch}:2"
+        ${edge}    Evaluate    ${switch}==1 or ${switch}==${switches}
+        Run Keyword Unless    ${edge}    Should Contain    ${resp.text}    "tp-id":"openflow:${switch}:3"
+        Run Keyword Unless    ${edge}    Should Contain    ${resp.text}    "source-tp":"openflow:${switch}:3"
+        Run Keyword Unless    ${edge}    Should Contain    ${resp.text}    "dest-tp":"openflow:${switch}:3
+    END
 
 Check No Switches On Member
     [Arguments]    ${switches}    ${member_index}=1
     [Documentation]    Check no switch is in topology
     ${session} =    Resolve_Http_Session_For_Member    member_index=${member_index}
     ${resp}    RequestsLibrary.Get Request    ${session}    ${OPERATIONAL_TOPO_API}
-    Log    ${resp.content}
+    Log    ${resp.text}
     Should Be Equal As Strings    ${resp.status_code}    200
-    : FOR    ${switch}    IN RANGE    1    ${switches+1}
-    \    Should Not Contain    ${resp.content}    openflow:${switch}
+    FOR    ${switch}    IN RANGE    1    ${switches+1}
+        Should Not Contain    ${resp.text}    openflow:${switch}
+    END
 
 Check Number Of Flows On Member
     [Arguments]    ${flows}    ${member_index}=1
     [Documentation]    Check number of flows in the inventory.
     ${session} =    Resolve_Http_Session_For_Member    member_index=${member_index}
     ${resp}=    RequestsLibrary.Get Request    ${session}    ${OPERATIONAL_NODES_API}
-    Log    ${resp.content}
+    Log    ${resp.text}
     Should Be Equal As Strings    ${resp.status_code}    200
-    ${count}=    Get Count    ${resp.content}    "priority"
+    ${count}=    Get Count    ${resp.text}    "priority"
     Should Be Equal As Integers    ${count}    ${flows}
 
 Check Number Of Groups On Member
@@ -191,8 +199,7 @@ Check Number Of Groups On Member
     [Documentation]    Check number of groups in the inventory.
     ${session} =    Resolve_Http_Session_For_Member    member_index=${member_index}
     ${resp}=    RequestsLibrary.Get Request    ${session}    ${OPERATIONAL_NODES_API}
-    Log    ${resp.content}
+    Log    ${resp.text}
     Should Be Equal As Strings    ${resp.status_code}    200
-    ${group_count}=    Get Count    ${resp.content}    "group-type"
-    ${count}=    CompareStream.Set_Variable_If_At Least_Boron    ${group_count}    ${group_count/2}
-    Should Be Equal As Integers    ${count}    ${groups}
+    ${group_count}=    Get Count    ${resp.text}    "group-type"
+    Should Be Equal As Integers    ${group_count}    ${groups}