X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Ftopoprocessing%2Fbasic-topology-operations%2F070_Underlay_update.robot;h=609c44743ae8801fbfbd690406284a240531d759;hb=HEAD;hp=3d646bf088ada9b80a49734649c756cac278868e;hpb=9f336e2d2dca4ab96d9da56e635ebc515d96eb83;p=integration%2Ftest.git diff --git a/csit/suites/topoprocessing/basic-topology-operations/070_Underlay_update.robot b/csit/suites/topoprocessing/basic-topology-operations/070_Underlay_update.robot index 3d646bf088..609c44743a 100644 --- a/csit/suites/topoprocessing/basic-topology-operations/070_Underlay_update.robot +++ b/csit/suites/topoprocessing/basic-topology-operations/070_Underlay_update.robot @@ -1,73 +1,127 @@ *** Settings *** -Documentation Test suite to verify update behaviour during different topoprocessing operations on NT and inventory models. -... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API. -... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot. -... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational -... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls. -Suite Setup Setup Environment -Suite Teardown Clean Environment -Test Teardown Refresh Underlay Topologies And Delete Overlay Topology -Library RequestsLibrary -Library SSHLibrary -Library XML -Variables ../../../variables/topoprocessing/TopologyRequests.py -Variables ../../../variables/topoprocessing/TargetFields.py -Variables ../../../variables/Variables.py -Resource ../../../libraries/KarafKeywords.robot -Resource ../../../libraries/Utils.robot -Resource ../../../libraries/TopoprocessingKeywords.robot +Documentation Test suite to verify update behaviour during different topoprocessing operations on NT and inventory models. +... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API. +... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot. +... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational +... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls. + +Library RequestsLibrary +Library SSHLibrary +Library XML +Variables ../../../variables/topoprocessing/TopologyRequests.py +Variables ../../../variables/topoprocessing/TargetFields.py +Variables ../../../variables/Variables.py +Resource ../../../libraries/KarafKeywords.robot +Resource ../../../libraries/Utils.robot +Resource ../../../libraries/TopoprocessingKeywords.robot + +Suite Setup Setup Environment +Suite Teardown Clean Environment +Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing +Test Teardown Refresh Underlay Topologies And Delete Overlay Topology + *** Test Cases *** Unification Node Update [Documentation] Test processing of updates using unification operation on Network Topology model #Create the original topology ${model} Set Variable network-topology-model - ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node network-topo:1 network-topo:2 + ${request} Prepare Unification Topology Request + ... ${UNIFICATION_NT} + ... ${model} + ... node + ... network-topo:1 + ... network-topo:2 ${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0 ${request} Insert Target Field ${request} 1 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=10 - ... tp_count=14 tp-ref_count=14 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=8 + ... supporting-node_count=10 + ... tp_count=14 + ... tp-ref_count=14 #Update a node, expecting a unification of two nodes into one ${node} Create Isis Node bgp:1 router-id-ipv4=192.168.1.2 Basic Request Put ${node} network-topology:network-topology/topology/network-topo:1/node/bgp:1 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10 - ... tp_count=11 tp-ref_count=11 - : FOR ${index} IN RANGE 1 11 - \ Should Contain X Times ${resp.content} bgp:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=7 + ... supporting-node_count=10 + ... tp_count=11 + ... tp-ref_count=11 + FOR ${index} IN RANGE 1 11 + Should Contain X Times ${resp.content} bgp:${index} 1 + END Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:2 bgp:1 #Update a unified node, expecting creation of a new overlay node ${node} Create Isis Node bgp:3 router-id-ipv4=192.168.3.1 Basic Request Put ${node} network-topology:network-topology/topology/network-topo:1/node/bgp:3 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=10 - ... tp_count=9 tp-ref_count=9 - : FOR ${index} IN RANGE 1 11 - \ Should Contain X Times ${resp.content} bgp:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=8 + ... supporting-node_count=10 + ... tp_count=9 + ... tp-ref_count=9 + FOR ${index} IN RANGE 1 11 + Should Contain X Times ${resp.content} bgp:${index} 1 + END Unification Node Inventory [Documentation] Test processing of updates using unification operation on Inventory model ${model} Set Variable opendaylight-inventory-model - ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node openflow-topo:1 openflow-topo:2 + ${request} Prepare Unification Topology Request + ... ${UNIFICATION_NT} + ... ${model} + ... node + ... openflow-topo:1 + ... openflow-topo:2 ${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0 ${request} Insert Target Field ${request} 1 ${OPENFLOW_NODE_IP_ADDRESS} 0 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10 - ... tp_count=12 tp-ref_count=12 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=7 + ... supporting-node_count=10 + ... tp_count=12 + ... tp-ref_count=12 #Update a node, expecting unification of two nodes into one ${node} Create Openflow Node openflow:2 192.168.1.1 Basic Request Put ${node} opendaylight-inventory:nodes/node/openflow:2 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=6 supporting-node_count=10 - ... tp_count=12 tp-ref_count=12 - : FOR ${index} IN RANGE 1 11 - \ Should Contain X Times ${resp.content} of-node:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=6 + ... supporting-node_count=10 + ... tp_count=12 + ... tp-ref_count=12 + FOR ${index} IN RANGE 1 11 + Should Contain X Times ${resp.content} of-node:${index} 1 + END Check Aggregated Node in Topology ${model} ${resp.content} 5 of-node:2 of-node:6 of-node:1 #Update a unified node, expecting creation of a new overlay node ${node} Create Openflow Node openflow:4 192.168.3.1 Basic Request Put ${node} opendaylight-inventory:nodes/node/openflow:4 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10 - ... tp_count=12 tp-ref_count=12 - : FOR ${index} IN RANGE 1 11 - \ Should Contain X Times ${resp.content} of-node:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=7 + ... supporting-node_count=10 + ... tp_count=12 + ... tp-ref_count=12 + FOR ${index} IN RANGE 1 11 + Should Contain X Times ${resp.content} of-node:${index} 1 + END Filtration Range Number Node Update Network Topology Model ${model} Set Variable network-topology-model @@ -75,183 +129,490 @@ Filtration Range Number Node Update Network Topology Model ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OVS_VERSION} ${request} Set Range Number Filter ${request} 20 25 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4 - ... node-ref_count=4 tp_count=5 tp-ref_count=5 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=4 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=5 + ... tp-ref_count=5 ${request} Create Isis Node bgp:7 17 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3 - ... node-ref_count=3 tp_count=3 tp-ref_count=3 - : FOR ${index} IN RANGE 8 11 - \ Should Contain X Times ${resp.content} bgp:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=3 + ... supporting-node_count=3 + ... node-ref_count=3 + ... tp_count=3 + ... tp-ref_count=3 + FOR ${index} IN RANGE 8 11 + Should Contain X Times ${resp.content} bgp:${index} 1 + END Should Not Contain ${resp.content} bgp:7 ${topology_id} Set Variable network-topo:2 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:8 tp:8:1 tp:8:1 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:9 tp:9:1 tp:9:1 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:10 tp:10:1 tp:10:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:8 + ... tp:8:1 + ... tp:8:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:9 + ... tp:9:1 + ... tp:9:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:10 + ... tp:10:1 + ... tp:10:1 ${request} Create Isis Node bgp:7 23 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4 - ... node-ref_count=4 tp_count=3 tp-ref_count=3 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=4 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=3 + ... tp-ref_count=3 ${request} Create OVSDB Termination Point tp:7:1 1119 - Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:1 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4 - ... node-ref_count=4 tp_count=4 tp-ref_count=4 - : FOR ${index} IN RANGE 7 11 - \ Should Contain X Times ${resp.content} bgp:${index} 1 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:7 tp:7:1 tp:7:1 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:8 tp:8:1 tp:8:1 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:9 tp:9:1 tp:9:1 - Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:10 tp:10:1 tp:10:1 + Basic Request Put + ... ${request} + ... network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=4 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=4 + ... tp-ref_count=4 + FOR ${index} IN RANGE 7 11 + Should Contain X Times ${resp.content} bgp:${index} 1 + END + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:7 + ... tp:7:1 + ... tp:7:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:8 + ... tp:8:1 + ... tp:8:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:9 + ... tp:9:1 + ... tp:9:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... ${topology_id} + ... bgp:10 + ... tp:10:1 + ... tp:10:1 Filtration Range Number Node Update Inventory Model - ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:2 + ${request} Prepare Filtration Topology Request + ... ${FILTRATION_NT} + ... opendaylight-inventory-model + ... node + ... openflow-topo:2 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_SERIAL_NUMBER} ${request} Set Range Number Filter ${request} 20 25 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3 - ... node-ref_count=3 tp_count=0 tp-ref_count=0 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=3 + ... supporting-node_count=3 + ... node-ref_count=3 + ... tp_count=0 + ... tp-ref_count=0 #Update a Node so it passes filtration ${request} Create Openflow Node openflow:7 192.168.2.3 23 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:7 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4 - ... node-ref_count=4 tp_count=0 tp-ref_count=0 - : FOR ${index} IN RANGE 7 11 - \ Should Contain X Times ${resp.content} of-node:${index} 1 - #Update a Node so it is filtered out + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=4 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=0 + ... tp-ref_count=0 + FOR ${index} IN RANGE 7 11 + Should Contain X Times ${resp.content} of-node:${index} 1 + #Update a Node so it is filtered out + END ${request} Create Openflow Node openflow:7 192.168.2.3 17 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:7 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3 - ... node-ref_count=3 tp_count=0 tp-ref_count=0 - : FOR ${index} IN RANGE 8 11 - \ Should Contain X Times ${resp.content} of-node:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=3 + ... supporting-node_count=3 + ... node-ref_count=3 + ... tp_count=0 + ... tp-ref_count=0 + FOR ${index} IN RANGE 8 11 + Should Contain X Times ${resp.content} of-node:${index} 1 + END Should Not Contain ${resp.content} of-node:7 Filtration Range Number Termination Point Update NT [Documentation] Test processing of updates using range number type of filtration operation on Network Topology model ${model} Set Variable network-topology-model - ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point network-topo:2 + ${request} Prepare Filtration Topology Request + ... ${FILTRATION_NT} + ... ${model} + ... termination-point + ... network-topo:2 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OFPORT} ${request} Set Range Number Filter ${request} 1115 1119 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 tp_count=3 tp-ref_count=3 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... tp_count=3 + ... tp-ref_count=3 #Update a previously out-of-range termination point, so it passes filtration ${terminationPoint} Create OVSDB Termination Point tp:8:1 1115 - Basic Request Put ${terminationPoint} network-topology:network-topology/topology/network-topo:2/node/bgp:8/termination-point/tp:8:1 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 tp_count=4 tp-ref_count=4 - Check Aggregated Termination Point in Node ${model} ${resp.content} network-topo:2 bgp:8 tp:8:1 tp:8:1 + Basic Request Put + ... ${terminationPoint} + ... network-topology:network-topology/topology/network-topo:2/node/bgp:8/termination-point/tp:8:1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... tp_count=4 + ... tp-ref_count=4 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... network-topo:2 + ... bgp:8 + ... tp:8:1 + ... tp:8:1 #Update a previsouly in-range termination point, so it is filtered out ${terminationPoint} Create OVSDB Termination Point tp:7:2 1110 - Basic Request Put ${terminationPoint} network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:2 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 tp_count=3 tp-ref_count=3 - Check Aggregated Termination Point in Node ${model} ${resp.content} network-topo:2 bgp:7 tp:7:1 tp:7:1 + Basic Request Put + ... ${terminationPoint} + ... network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:2 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... tp_count=3 + ... tp-ref_count=3 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... network-topo:2 + ... bgp:7 + ... tp:7:1 + ... tp:7:1 Filtration Range Number Termination Point Update Inventory [Documentation] Test processing of updates using range number type of filtration operation on Inventory model ${model} Set Variable opendaylight-inventory-model - ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point openflow-topo:1 + ${request} Prepare Filtration Topology Request + ... ${FILTRATION_NT} + ... ${model} + ... termination-point + ... openflow-topo:1 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER} ${request} Set Range Number Filter ${request} 2 4 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 tp_count=5 tp-ref_count=5 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... tp_count=5 + ... tp-ref_count=5 #Update a previously out-of-range termination point, so it passes filtration ${nodeConnector} Create Openflow Node Connector openflow:2:1 3 Basic Request Put ${nodeConnector} opendaylight-inventory:nodes/node/openflow:2/node-connector/openflow:2:1 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 tp_count=6 tp-ref_count=6 - Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:1 tp:2:1 - Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:2 tp:2:2 - Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:3 tp:2:3 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... tp_count=6 + ... tp-ref_count=6 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... openflow-topo:1 + ... of-node:2 + ... tp:2:1 + ... tp:2:1 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... openflow-topo:1 + ... of-node:2 + ... tp:2:2 + ... tp:2:2 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... openflow-topo:1 + ... of-node:2 + ... tp:2:3 + ... tp:2:3 #Update an in-range termination point, so it is filtered out ${nodeConnector} Create Openflow Node Connector openflow:3:2 5 Basic Request Put ${nodeConnector} opendaylight-inventory:nodes/node/openflow:3/node-connector/openflow:3:2 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 tp_count=5 tp-ref_count=5 - Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:3 tp:3:1 tp:3:1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... tp_count=5 + ... tp-ref_count=5 + Check Aggregated Termination Point in Node + ... ${model} + ... ${resp.content} + ... openflow-topo:1 + ... of-node:3 + ... tp:3:1 + ... tp:3:1 Filtration Range Number Link Update Network Topology Model [Documentation] Tests the processing of link update requests when using a range-number filtration on NT model - ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1 + ${request} Prepare Filtration Topology Request + ... ${FILTRATION_NT} + ... network-topology-model + ... link + ... network-topo:1 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC} ${request} Set Range Number Filter ${request} 11 13 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... link_count=3 + ... link-ref_count=3 #Filter a link out ${request} Create Link link:1:4 bgp:1 bgp:4 linkA 15 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:1/link/link:1:4 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2 - Should Contain X Times ${resp.content} /network-topology/topology/network-topo:1/link/link:1:3 1 - Should Contain X Times ${resp.content} /network-topology/topology/network-topo:1/link/link:1:2-1 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... link_count=2 + ... link-ref_count=2 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/network-topo:1/link/link:1:3 + ... 1 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/network-topo:1/link/link:1:2-1 + ... 1 Should Not Contain ${resp.content} network-topology/topology/network-topo:1/link/link:1:4 #Put the link back in ${request} Create Link link:1:4 bgp:1 bgp:4 linkA 12 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:1/link/link:1:4 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3 - Should Contain X Times ${resp.content} /network-topology/topology/network-topo:1/link/link:1:4 1 - Should Contain X Times ${resp.content} /network-topology/topology/network-topo:1/link/link:1:3 1 - Should Contain X Times ${resp.content} /network-topology/topology/network-topo:1/link/link:1:2-1 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... link_count=3 + ... link-ref_count=3 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/network-topo:1/link/link:1:4 + ... 1 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/network-topo:1/link/link:1:3 + ... 1 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/network-topo:1/link/link:1:2-1 + ... 1 Filtration Range Number Link Update Inventory Model [Documentation] Tests the processing of link update requests when using a range-number filtration on Inventory model - ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3 + ${request} Prepare Filtration Topology Request + ... ${FILTRATION_NT} + ... opendaylight-inventory-model + ... link + ... openflow-topo:3 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC} ${request} Set Range Number Filter ${request} 14 15 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... link_count=2 + ... link-ref_count=2 ${request} Create Link link:11:12 of-node:11 of-node:12 linkB 14 Basic Request Put ${request} network-topology:network-topology/topology/openflow-topo:3/link/link:11:12 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3 - Should Contain X Times ${resp.content} /network-topology/topology/openflow-topo:3/link/link:14:12 1 - Should Contain X Times ${resp.content} /network-topology/topology/openflow-topo:3/link/link:15:13 1 - Should Contain X Times ${resp.content} /network-topology/topology/openflow-topo:3/link/link:11:12 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... link_count=3 + ... link-ref_count=3 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/openflow-topo:3/link/link:14:12 + ... 1 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/openflow-topo:3/link/link:15:13 + ... 1 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/openflow-topo:3/link/link:11:12 + ... 1 ${request} Create Link link:11:12 of-node:11 of-node:12 linkB 13 Basic Request Put ${request} network-topology:network-topology/topology/openflow-topo:3/link/link:11:12 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2 - Should Contain X Times ${resp.content} /network-topology/topology/openflow-topo:3/link/link:14:12 1 - Should Contain X Times ${resp.content} /network-topology/topology/openflow-topo:3/link/link:15:13 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... link_count=2 + ... link-ref_count=2 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/openflow-topo:3/link/link:14:12 + ... 1 + Should Contain X Times + ... ${resp.content} + ... /network-topology/topology/openflow-topo:3/link/link:15:13 + ... 1 Unification Filtration Node Update Inside Network Topology model ${model} Set Variable network-topology-model - ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${ISIS_NODE_TE_ROUTER_ID_IPV4} network-topo:4 + ${request} Prepare Unification Filtration Inside Topology Request + ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} + ... ${model} + ... node + ... ${ISIS_NODE_TE_ROUTER_ID_IPV4} + ... network-topo:4 ${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1 ${request} Insert Apply Filters ${request} 1 1 ${request} Set IPV4 Filter ${request} 192.168.2.1/24 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3 - ... node-ref_count=3 tp_count=0 tp-ref_count=0 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=2 + ... supporting-node_count=3 + ... node-ref_count=3 + ... tp_count=0 + ... tp-ref_count=0 ${request} Create Isis Node bgp:17 10 192.168.2.1 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:4/node/bgp:17 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4 - ... node-ref_count=4 tp_count=0 tp-ref_count=0 - : FOR ${index} IN RANGE 17 21 - \ Should Contain X Times ${resp.content} bgp:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=2 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=0 + ... tp-ref_count=0 + FOR ${index} IN RANGE 17 21 + Should Contain X Times ${resp.content} bgp:${index} 1 + END Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:18 bgp:17 bgp:20 ${request} Create Isis Node bgp:17 10 192.168.1.2 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:4/node/bgp:17 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3 - ... node-ref_count=3 tp_count=0 tp-ref_count=0 - : FOR ${index} IN RANGE 18 21 - \ Should Contain X Times ${resp.content} bgp:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=2 + ... supporting-node_count=3 + ... node-ref_count=3 + ... tp_count=0 + ... tp-ref_count=0 + FOR ${index} IN RANGE 18 21 + Should Contain X Times ${resp.content} bgp:${index} 1 + END Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:18 bgp:20 Unification Filtration Node Update Inside Inventory model ${model} Set Variable opendaylight-inventory-model - ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:4 + ${request} Prepare Unification Filtration Inside Topology Request + ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} + ... ${model} + ... node + ... ${OPENFLOW_NODE_IP_ADDRESS} + ... openflow-topo:4 ${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS} 1 ${request} Insert Apply Filters ${request} 1 1 ${request} Set IPV4 Filter ${request} 192.168.2.1/24 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4 - ... node-ref_count=4 tp_count=0 tp-ref_count=0 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=2 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=0 + ... tp-ref_count=0 ${request} Create Openflow Node openflow:17 192.168.1.2 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:17 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3 - ... node-ref_count=3 tp_count=0 tp-ref_count=0 - : FOR ${index} IN RANGE 18 21 - \ Should Contain X Times ${resp.content} of-node:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=2 + ... supporting-node_count=3 + ... node-ref_count=3 + ... tp_count=0 + ... tp-ref_count=0 + FOR ${index} IN RANGE 18 21 + Should Contain X Times ${resp.content} of-node:${index} 1 + END ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:19']/.. ${node} Element to String ${node} Should Contain X Times ${node} 2 @@ -260,41 +621,102 @@ Unification Filtration Node Update Inside Inventory model Should Not Contain ${node} of-node:17 ${request} Create Openflow Node openflow:17 192.168.2.3 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:17 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4 - ... node-ref_count=4 tp_count=0 tp-ref_count=0 - : FOR ${index} IN RANGE 17 21 - \ Should Contain X Times ${resp.content} of-node:${index} 1 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=2 + ... supporting-node_count=4 + ... node-ref_count=4 + ... tp_count=0 + ... tp-ref_count=0 + FOR ${index} IN RANGE 17 21 + Should Contain X Times ${resp.content} of-node:${index} 1 + END Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:17 of-node:19 of-node:20 Link Computation Aggregation Inside Update NT [Documentation] Test of link computation with unification type of aggregation inside on updated nodes from network-topology model ${model} Set Variable network-topology-model - ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:6 + ${request} Prepare Unification Inside Topology Request + ... ${UNIFICATION_NT_AGGREGATE_INSIDE} + ... ${model} + ... node + ... network-topo:6 ${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0 - ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6 + ${request} Insert Link Computation Inside + ... ${request} + ... ${LINK_COMPUTATION_INSIDE} + ... n:network-topology-model + ... network-topo:6 Basic Request Put ${request} ${OVERLAY_TOPO_URL} - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5 - ... node-ref_count=5 link_count=4 link-ref_count=4 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=4 + ... supporting-node_count=5 + ... node-ref_count=5 + ... link_count=4 + ... link-ref_count=4 #Divide double nodes from overlay topology ${request} Create Isis Node bgp:29 router-id-ipv4=192.168.1.3 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:6/node/bgp:29 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 link_count=4 link-ref_count=4 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... link_count=4 + ... link-ref_count=4 ${node_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26 ${node_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27 ${node_28} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:28 ${node_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29 ${node_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30 ${topo_id} Set Variable network-topo:6 - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:28:29 ${node_28} ${node_29} - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:26:28 ${node_26} ${node_28} - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-2 ${node_29} ${node_30} - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:28:29 + ... ${node_28} + ... ${node_29} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:26:28 + ... ${node_26} + ... ${node_28} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:29:30-2 + ... ${node_29} + ... ${node_30} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:29:30-1 + ... ${node_29} + ... ${node_30} #Update link to node out of topology ${request} Create Link link:28:29 bgp:28 bgp:31 linkB 11 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:6/link/link:28:29 - ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5 - ... node-ref_count=5 link_count=3 link-ref_count=3 + ${resp} Wait Until Keyword Succeeds + ... 3x + ... 1s + ... Output Topo Should Be Complete + ... node_count=5 + ... supporting-node_count=5 + ... node-ref_count=5 + ... link_count=3 + ... link-ref_count=3 #Refresh node IDs ${node_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26 ${node_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27 @@ -302,7 +724,31 @@ Link Computation Aggregation Inside Update NT ${node_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29 ${node_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30 Should Not Contain ${resp.content} /network-topology/topology/network-topo:6/link/link:28:29 - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:26:28 ${node_26} ${node_28} - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-2 ${node_29} ${node_30} - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30} - Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:26:28 + ... ${node_26} + ... ${node_28} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:29:30-2 + ... ${node_29} + ... ${node_30} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:29:30-1 + ... ${node_29} + ... ${node_30} + Check Overlay Link Source And Destination + ... ${model} + ... ${resp.content} + ... ${topo_id} + ... link:29:30-1 + ... ${node_29} + ... ${node_30}