*** Settings *** Documentation Test suite to verify unification operation on different 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 install features required for tested models, clear 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 Test Teardown network-topology:network-topology/topology/topo:1 Library RequestsLibrary Library SSHLibrary Library XML Variables ../../../variables/topoprocessing/TopologyRequests.py Variables ../../../variables/Variables.py Resource ../../../libraries/KarafKeywords.robot Resource ../../../libraries/Utils.robot Resource ../../../libraries/TopoprocessingKeywords.robot *** Test Cases *** Unification Node [Documentation] Test unification operation on Network Topology model ${request} Prepare Unification Topology Request ${UNIFICATION_NT} network-topology-model node l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/isis-topology:ted/isis-topology:te-router-id-ipv4 network-topo:1 ... network-topo:2 ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 Should Contain X Times ${resp.content} node: 9 : FOR ${index} IN RANGE 1 9 \ Should Contain X Times ${resp.content} bgp:${index} 1 ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:10']/.. ${node} Element to String ${node} Should Contain X Times ${node} bgp:10 1 Should Contain X Times ${node} bgp:5 1 Unification Node Inventory [Documentation] Test unification operation on inventory model ${request} Prepare Unification Topology Request ${UNIFICATION_NT} opendaylight-inventory-model node flow-node-inventory:ip-address openflow-topo:1 ... openflow-topo:2 ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 Should Contain X Times ${resp.content} node: 8 : FOR ${index} IN RANGE 1 10 \ Should Contain X Times ${resp.content} of-node:${index} 1 ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:1']/.. ${node} Element to String ${node} Should Contain X Times ${node} of-node:6 1 Should Contain X Times ${node} of-node:1 1 ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:4']/.. ${node} Element to String ${node} Should Contain X Times ${node} of-node:10 1 Should Contain X Times ${node} of-node:4 1 Unification Scripting Node [Documentation] Test unification operation on Network Topology model using scripting ${request} Prepare Unification Topology Request ${UNIFICATION_NT} network-topology-model node l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/isis-topology:ted/isis-topology:te-router-id-ipv4 network-topo:1 ... network-topo:2 ${request} Insert Scripting into Request ${request} javascript if (originalItem.getLeafNode().getValue().indexOf("192.168.1.1") > -1 && newItem.getLeafNode().getValue().indexOf("192.168.1.3") > -1 || originalItem.getLeafNode().getValue().indexOf("192.168.1.3") > -1 && newItem.getLeafNode().getValue().indexOf("192.168.1.1") > -1) {aggregable.setResult(true);} else { aggregable.setResult(false);} ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 Should Contain X Times ${resp.content} node: 9 : FOR ${index} IN RANGE 1 10 \ Should Contain X Times ${resp.content} bgp:${index} 1 ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:1']/.. ${node} Element to String ${node} Should Contain X Times ${node} bgp:1 1 Should Contain X Times ${node} bgp:6 1 Unification Scripting Node Inventory [Documentation] Test unification operation on inventory model using scripting ${request} Prepare Unification Topology Request ${UNIFICATION_NT} opendaylight-inventory-model node flow-node-inventory:ip-address openflow-topo:1 ... openflow-topo:2 ${request} Insert Scripting into Request ${request} javascript if (originalItem.getLeafNode().getValue().indexOf("192.168.1.2") > -1 && newItem.getLeafNode().getValue().indexOf("192.168.1.4") > -1 || originalItem.getLeafNode().getValue().indexOf("192.168.1.4") > -1 && newItem.getLeafNode().getValue().indexOf("192.168.1.2") > -1) {aggregable.setResult(true);} else { aggregable.setResult(false);} ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 Should Contain X Times ${resp.content} node: 9 : FOR ${index} IN RANGE 1 10 \ Should Contain X Times ${resp.content} of-node:${index} 1 ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:2']/.. ${node} Element to String ${node} Should Contain X Times ${node} of-node:2 1 Should Contain X Times ${node} of-node:8 1 Unification Node Inside [Documentation] Test of unification type of aggregation inside on nodes on Network Topology model ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} network-topology-model node l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/isis-topology:ted/isis-topology:te-router-id-ipv4 network-topo:1 ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 Should Contain X Times ${resp.content} node: 4 ${response_xml} Parse XML ${resp.content} ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='bgp:3']/.. ${node} Element To String ${node} Should Contain X Times ${node} 2 Should Contain ${node} bgp:3 Should Contain ${node} bgp:4 Unification Node Inside Inventory [Documentation] Test of unification type of aggregation inside on nodes on Inventory model ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} opendaylight-inventory-model node flow-node-inventory:ip-address openflow-topo:2 ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 Should Contain X Times ${resp.content} node: 4 ${response_xml} Parse XML ${resp.content} ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='of-node:7']/.. ${node} Element To String ${node} Should Contain X Times ${node} 2 Should Contain ${node} of-node:7 Should Contain ${node} of-node:9 Unification Termination Point Inside [Documentation] Test aggregate inside operation on termination points ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} network-topology-model termination-point ovsdb:ofport network-topo:1 ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 ${response_xml} Get Element ${resp.content} xpath=.//topology[topology-id='topo:1'] ${response_xml} Element to String ${response_xml} Should Contain X Times ${resp.content} node: 5 Should Contain X Times ${response_xml} 6 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='bgp:1']/.. ${node} Element to String ${node} Should Contain X Times ${node} 2 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='bgp:3']/.. ${node} Element to String ${node} Should Contain X Times ${node} 2 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='bgp:4']/.. ${node} Element to String ${node} Should Contain X Times ${node} 1 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='bgp:5']/.. ${node} Element to String ${node} Should Contain X Times ${node} 1 Unification Termination Point Inside Inventory [Documentation] Test aggregate inside operation on termination points ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} opendaylight-inventory-model termination-point flow-node-inventory:port-number openflow-topo:1 ${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1 Should Contain ${resp.content} topo:1 ${response_xml} Get Element ${resp.content} xpath=.//topology[topology-id='topo:1'] ${response_xml} Element to String ${response_xml} Should Contain X Times ${resp.content} node: 5 Should Contain X Times ${response_xml} 7 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='of-node:1']/.. ${node} Element to String ${node} Should Contain X Times ${node} 1 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='of-node:2']/.. ${node} Element to String ${node} Should Contain X Times ${node} 2 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='of-node:3']/.. ${node} Element to String ${node} Should Contain X Times ${node} 2 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='of-node:4']/.. ${node} Element to String ${node} Should Contain X Times ${node} 1 ${node} Get Element ${response_xml} xpath=.//node/supporting-node[node-ref='of-node:5']/.. ${node} Element to String ${node} Should Contain X Times ${node} 1