*** Settings ***
Documentation Test suite to verify fitration operation on different models.
... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, 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 Filtration Termination Points Test Teardown
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 ***
Filtration IPV4 Network Topology Model
[Documentation] Test of ipv4 type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:1
${request} Insert Filter ${request} ${FILTER_IPV4} l3-unicast-igp-topology:igp-termination-point-attributes/l3-unicast-igp-topology:ip-address
${request} Set IPV4 Filter ${request} 192.168.1.1/24
${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: 5
Should Contain X Times ${resp.content} 4
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:1']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
Should Contain ${node} tp:1:1
Should Contain ${node} tp:1:2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:3']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
Should Contain ${node} tp:3:1
Should Contain ${node} tp:3:2
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Range Number Network Topology Model
[Documentation] Test of range number type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ovsdb:ofport
${request} Set Range Number Filter ${request} 1115 1119
${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: 5
Should Contain X Times ${resp.content} 3
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:7']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
Should Contain ${node} tp:7:1
Should Contain ${node} tp:7:2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:6']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
Should Contain ${node} tp:6:1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Range Number Inventory Model
[Documentation] Test of range number type of filtration operation on Inventory model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} flow-node-inventory:port-number
${request} Set Range Number Filter ${request} 2 4
${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: 5
Should Contain X Times ${resp.content} 5
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:2']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:3']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:5']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4674
Filtration Specific Number Network Topology Model
[Documentation] Test of specific number type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
${request} Insert Filter ${request} ${FILTER_SPECIFIC_NUMBER} ovsdb:ofport
${request} Set Specific Number Filter ${request} 1119
${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: 5
Should Contain X Times ${resp.content} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:7']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
Should Contain ${node} tp:7:1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Specific Number Inventory Model
[Documentation] Test of specific number type of filtration operation on Inventory model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SPECIFIC_NUMBER} flow-node-inventory:port-number
${request} Set Specific Number Filter ${request} 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: 5
Should Contain X Times ${resp.content} 7
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:1']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:2']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:3']/..
${node} Element to String ${node}
Should Contain X Times ${node} 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} 3
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4674
Filtration Specific String Network Topology Model
[Documentation] Test of specific string type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ovsdb:name
${request} Set Specific String Filter ${request} portC
${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: 5
Should Contain X Times ${resp.content} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:7']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Specific String Inventory Model
[Documentation] Test of specific string type of filtration operation on Inventory model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} flow-node-inventory:name
${request} Set Specific String Filter ${request} portB
${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1
Should Contain X Times ${resp.content} node: 5
Should Contain X Times ${resp.content} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:2']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:5']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4674
Filtration Range String Network Topology Model
[Documentation] Test of range string type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ovsdb:name
${request} Set Range String Filter ${request} portA portC
${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: 5
Should Contain X Times ${resp.content} 3
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:6']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:7']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:10']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Range String Inventory Model
[Documentation] Test of range string type of filtration operation on Inventory model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} flow-node-inventory:name
${request} Set Range String Filter ${request} portA portB
${resp} Send Basic Request ${request} network-topology:network-topology/topology/topo:1
Should Contain X Times ${resp.content} node: 5
Should Contain X Times ${resp.content} 3
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:2']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:5']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4674
Filtration IPV6 Network Topology Model
[Documentation] Test of ipv6 type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:3
${request} Insert Filter ${request} ${FILTER_IPV6} l3-unicast-igp-topology:igp-termination-point-attributes/l3-unicast-igp-topology:ip-address
${request} Set IPV6 Filter ${request} fe80:0:0:0:0:0:c0a8:101/120
${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: 5
Should Contain X Times ${resp.content} 1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:11']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Script Network Topology Model
[Documentation] Test of script type of filtration operation on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} l3-unicast-igp-topology:igp-termination-point-attributes/l3-unicast-igp-topology:ip-address
${script} Set Variable if (node.getValue().indexOf("192.168.1") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
${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: 5
Should Contain X Times ${resp.content} 3
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:4']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:5']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4750
Filtration Script Inventory Model
[Documentation] Test of script type of filtration operation on Inventory model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} flow-node-inventory:name
${script} Set Variable if (node.getValue().indexOf("portB") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
${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: 5
Should Contain X Times ${resp.content} 3
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:2']/..
${node} Element to String ${node}
Should Contain X Times ${node} 2
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:1']/..
${node} Element to String ${node}
Should Contain X Times ${node} 1
[Teardown] Run Keywords Filtration Termination Points Test Teardown
... AND Report_Failure_Due_To_Bug 4674
*** Keywords ***
Filtration Termination Points Test Teardown
Test Teardown network-topology:network-topology/topology/topo:1
Report_Failure_Due_To_Bug 4673