X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fopenflowplugin%2FReconciliation%2F010_Group_Flows.robot;h=8b019d6db45085ae4c438a557d09e88795b62455;hb=HEAD;hp=906e230a1fcdaf2b536168bf9d33e979fed2e641;hpb=c0778e2d7813525714f3d7bd72ea737aa5bdc710;p=integration%2Ftest.git diff --git a/csit/suites/openflowplugin/Reconciliation/010_Group_Flows.robot b/csit/suites/openflowplugin/Reconciliation/010_Group_Flows.robot index 906e230a1f..8b019d6db4 100644 --- a/csit/suites/openflowplugin/Reconciliation/010_Group_Flows.robot +++ b/csit/suites/openflowplugin/Reconciliation/010_Group_Flows.robot @@ -1,40 +1,58 @@ *** Settings *** -Documentation Test reconciliation of chained groups and flows after switch connection and controller are restarted. -Suite Setup Initialization Phase -Suite Teardown Final Phase -Library RequestsLibrary -Resource ../../../libraries/ClusterManagement.robot -Resource ../../../libraries/TemplatedRequests.robot -Resource ../../../libraries/MininetKeywords.robot -Resource ../../../libraries/FlowLib.robot -Resource ../../../libraries/Utils.robot -Resource ../../../variables/Variables.robot +Documentation Test reconciliation of chained groups and flows after switch connection and controller are restarted. + +Library RequestsLibrary +Resource ../../../libraries/ClusterManagement.robot +Resource ../../../libraries/TemplatedRequests.robot +Resource ../../../libraries/MininetKeywords.robot +Resource ../../../libraries/FlowLib.robot +Resource ../../../libraries/Utils.robot +Resource ../../../variables/Variables.robot +Resource ../../../variables/openflowplugin/Variables.robot + +Suite Setup Initialization Phase +Suite Teardown Final Phase + *** Variables *** -${SWITCHES} ${10} -${ITER} ${100} -${VAR_DIR} ${CURDIR}/../../../variables/openflowplugin +${SWITCHES} 3 +${ITER} 100 +${VAR_DIR} ${CURDIR}/../../../variables/openflowplugin -*** Test Cases *** -Enable Stale Flow Entry - [Documentation] Check Flows after mininet starts. - # Stale flows/groups feature is only available in Boron onwards. - CompareStream.Run Keyword If At Least Boron TemplatedRequests.Put As Json Templated folder=${VAR_DIR}/frm-config mapping={"STALE":"true"} session=session +*** Test Cases *** Add Group 1 In Every Switch [Documentation] Add ${ITER} groups of type 1 in every switch. - : FOR ${switch} IN RANGE 1 ${SWITCHES+1} - \ TemplatedRequests.Post As Json Templated folder=${VAR_DIR}/add-group-1 mapping={"SWITCH":"${switch}"} session=session iterations=${ITER} + FOR ${switch} IN RANGE 1 ${switches+1} + &{mapping} BuiltIn.Create_Dictionary NODE=openflow:${switch} + TemplatedRequests.Post As Json Templated + ... folder=${VAR_DIR}/add-group-1 + ... mapping=${mapping} + ... session=session + ... iterations=${iter} + END Add Group 2 In Every Switch [Documentation] Add ${ITER} groups of type 2 in every switch. - : FOR ${switch} IN RANGE 1 ${SWITCHES+1} - \ TemplatedRequests.Post As Json Templated folder=${VAR_DIR}/add-group-2 mapping={"SWITCH":"${switch}"} session=session iterations=${ITER} + FOR ${switch} IN RANGE 1 ${switches+1} + &{mapping} BuiltIn.Create_Dictionary NODE=openflow:${switch} + TemplatedRequests.Post As Json Templated + ... folder=${VAR_DIR}/add-group-2 + ... mapping=${mapping} + ... session=session + ... iterations=${iter} + END Add Flow to Group 2 In Every Switch [Documentation] Add ${ITER} flows to group type 2 in every switch. - : FOR ${switch} IN RANGE 1 ${SWITCHES+1} - \ TemplatedRequests.Post As Json Templated folder=${VAR_DIR}/add-flow mapping={"SWITCH":"${switch}"} session=session iterations=${ITER} + FOR ${switch} IN RANGE 1 ${switches+1} + &{mapping} BuiltIn.Create_Dictionary NODE=openflow:${switch} + TemplatedRequests.Post As Json Templated + ... folder=${VAR_DIR}/add-flow + ... mapping=${mapping} + ... session=session + ... iterations=${ITER} + END Start Mininet Linear [Documentation] Start Mininet Linear with ${SWITCHES} switches. @@ -64,13 +82,6 @@ Check No Switches After Disconnect [Documentation] Check no switches in topology. BuiltIn.Wait Until Keyword Succeeds 30s 1s FlowLib.Check No Switches In Topology ${SWITCHES} -Remove Flows And Groups While Mininet Is Disconnected - [Documentation] Remove some groups and flows while network is down. - : FOR ${switch} IN RANGE 1 ${SWITCHES+1} - \ RequestsLibrary.Delete Request session ${CONFIG_NODES_API}/node/openflow:${switch}/table/0/flow/1 - \ RequestsLibrary.Delete Request session ${CONFIG_NODES_API}/node/openflow:${switch}/group/1 - \ RequestsLibrary.Delete Request session ${CONFIG_NODES_API}/node/openflow:${switch}/group/1000 - Reconnect Mininet [Documentation] Connect Mininet. Disconnect Controller Mininet restore @@ -79,6 +90,20 @@ Check Linear Topology After Mininet Reconnects [Documentation] Check Linear Topology. BuiltIn.Wait Until Keyword Succeeds 30s 1s FlowLib.Check Linear Topology ${SWITCHES} +Remove Flows And Groups After Mininet Reconnects + [Documentation] Remove some groups and flows while network is down. + FOR ${switch} IN RANGE 1 ${switches+1} + RequestsLibrary.DELETE On Session + ... session + ... url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1 + RequestsLibrary.DELETE On Session + ... session + ... url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1 + RequestsLibrary.DELETE On Session + ... session + ... url=${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000 + END + Check Flows In Operational DS After Mininet Reconnects [Documentation] Check Flows after mininet starts. BuiltIn.Wait Until Keyword Succeeds 30s 1s FlowLib.Check Number Of Flows ${less_flows} @@ -94,8 +119,10 @@ Check Flows In Switch After Mininet Reconnects Restart Controller [Documentation] Stop and Start controller. # Try to stop contoller, if stop does not work or takes too long, kill controller. - ${status} ${result}= BuiltIn.Run Keyword And Ignore Error ClusterManagement.Stop_Members_From_List_Or_All - BuiltIn.Run Keyword If '${status}' != 'PASS' ClusterManagement.Kill_Members_From_List_Or_All + ${status} ${result} BuiltIn.Run Keyword And Ignore Error ClusterManagement.Stop_Members_From_List_Or_All + IF '${status}' != 'PASS' + ClusterManagement.Kill_Members_From_List_Or_All + END ClusterManagement.Start_Members_From_List_Or_All wait_for_sync=False Check Linear Topology After Controller Restarts @@ -122,20 +149,23 @@ Check No Switches [Documentation] Check no switches in topology. BuiltIn.Wait Until Keyword Succeeds 5s 1s FlowLib.Check No Switches In Topology ${SWITCHES} + *** Keywords *** Initialization Phase [Documentation] Create controller session and set variables. ClusterManagement.ClusterManagement_Setup # Still need to open controller HTTP session with name session because of old FlowLib.robot library dependency. RequestsLibrary.Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} - ${all_groups}= BuiltIn.Evaluate ${SWITCHES} * ${ITER} * 2 - ${less_groups}= BuiltIn.Evaluate ${all_groups} - ${SWITCHES} * 2 + ${switches} Convert To Integer ${SWITCHES} + ${iter} Convert To Integer ${ITER} + ${all_groups} BuiltIn.Evaluate ${switches} * ${iter} * 2 + ${less_groups} BuiltIn.Evaluate ${all_groups} - ${switches} * 2 # Stale flows/groups feature enabled in Boron onwards. - ${less_groups}= CompareStream.Set Variable If At Least Boron ${less_groups} ${all_groups} - ${all_flows}= BuiltIn.Evaluate ${SWITCHES} * ${ITER+1} - ${less_flows}= BuiltIn.Evaluate ${all_flows} - ${SWITCHES} + ${all_flows} BuiltIn.Evaluate ${switches} * ${iter+1} + ${less_flows} BuiltIn.Evaluate ${all_flows} - ${switches} # Stale flows/groups feature enabled in Boron onwards. - ${less_flows}= CompareStream.Set Variable If At Least Boron ${less_flows} ${all_flows} + BuiltIn.Set Suite Variable ${switches} + BuiltIn.Set Suite Variable ${iter} BuiltIn.Set Suite Variable ${all_groups} BuiltIn.Set Suite Variable ${less_groups} BuiltIn.Set Suite Variable ${all_flows} @@ -144,18 +174,20 @@ Initialization Phase Final Phase [Documentation] Delete all sessions. - ${command} = BuiltIn.Set Variable sudo iptables -v -F + ${command} BuiltIn.Set Variable sudo iptables -v -F Utils.Run Command On Controller cmd=${command} - CompareStream.Run Keyword If At Least Boron TemplatedRequests.Put As Json Templated folder=${VAR_DIR}/frm-config mapping={"STALE":"false"} session=session - BuiltIn.Run Keyword And Ignore Error RequestsLibrary.Delete Request session ${CONFIG_NODES_API} + BuiltIn.Run Keyword And Ignore Error RequestsLibrary.DELETE On Session session url=${RFC8040_NODES_API} RequestsLibrary.Delete All Sessions Disconnect Controller Mininet - [Arguments] ${action}=break [Documentation] Break and restore controller to mininet connection via iptables. - ${rule} = BuiltIn.Set Variable OUTPUT -p all --source ${ODL_SYSTEM_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP - ${command} = BuiltIn.Set Variable If '${action}'=='restore' sudo /sbin/iptables -D ${rule} sudo /sbin/iptables -I ${rule} + [Arguments] ${action}=break + ${rule} BuiltIn.Set Variable OUTPUT -p all --source ${ODL_SYSTEM_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP + ${command} BuiltIn.Set Variable If + ... '${action}'=='restore' + ... sudo /sbin/iptables -D ${rule} + ... sudo /sbin/iptables -I ${rule} Utils.Run Command On Controller cmd=${command} - ${command} = BuiltIn.Set Variable sudo /sbin/iptables -L -n - ${output} = Utils.Run Command On Controller cmd=${command} + ${command} BuiltIn.Set Variable sudo /sbin/iptables -L -n + ${output} Utils.Run Command On Controller cmd=${command} BuiltIn.Log ${output}