--- /dev/null
+*** Settings ***
+Documentation Library containing Keywords used for SXP filtering test checks
+Resource ../SxpLib.robot
+
+*** Keywords ***
+Setup Nodes
+ [Arguments] ${version}=version4 ${password}=none
+ : FOR ${node} IN RANGE 1 5
+ \ Add Binding ${node}0 10.10.10.${node}0/32 127.0.0.${node}
+ \ Add Binding ${node}0 10.10.${node}0.0/24 127.0.0.${node}
+ \ Add Binding ${node}0 10.${node}0.0.0/16 127.0.0.${node}
+ \ Add Binding ${node}0 ${node}0.0.0.0/8 127.0.0.${node}
+ Add Connection ${version} both 127.0.0.1 64999 127.0.0.2 ${password}
+ Add Connection ${version} both 127.0.0.2 64999 127.0.0.1 ${password}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} both 127.0.0.2
+ Add Connection ${version} speaker 127.0.0.1 64999 127.0.0.3 ${password}
+ Add Connection ${version} listener 127.0.0.3 64999 127.0.0.1 ${password}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.3
+ Add Connection ${version} both 127.0.0.1 64999 127.0.0.4 ${password}
+ Add Connection ${version} both 127.0.0.4 64999 127.0.0.1 ${password}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} both 127.0.0.4
+ Add Connection ${version} listener 127.0.0.1 64999 127.0.0.5 ${password}
+ Add Connection ${version} speaker 127.0.0.5 64999 127.0.0.1 ${password}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.5
+
+Clean Nodes
+ Clean Bindings 127.0.0.1
+ Clean Bindings 127.0.0.2
+ Clean Bindings 127.0.0.3
+ Clean Bindings 127.0.0.4
+ Clean Bindings 127.0.0.5
+ Clean Peer Groups 127.0.0.1
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
+ Clean Connections 127.0.0.4
+ Clean Connections 127.0.0.5
+
+Check One Group 4-5
+ [Documentation] Check if only bindings matching filter nodes 4 and 5
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit ACL 10.10.10.0 0.0.0.255
+ ... deny ACL 10.10.0.0 0.0.255.0
+ ... permit ACL 10.0.0.0 0.255.255.0
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ : FOR ${node} IN RANGE 4 6
+ \ ${resp} Get Bindings 127.0.0.${node}
+ \ Log ${resp}
+ \ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ \ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ \ Should Not Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ \ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ \ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ \ Should Not Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ \ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ \ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ \ Should Not Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ \ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.2
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Contain Binding ${resp} 40 40.0.0.0/8 sxp
+
+Check Two Group 4-5
+ [Documentation] Check if only bindings matching filter nodes 4 and 5
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit ACL 10.20.0.0 0.0.255.255
+ ... permit ACL 10.10.0.0 0.0.255.0
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ : FOR ${node} IN RANGE 4 6
+ \ ${resp} Get Bindings 127.0.0.${node}
+ \ Log ${resp}
+ \ Should Not Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ \ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ \ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ \ Should Not Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ \ Should Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ \ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ \ Should Not Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ \ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ \ Should Not Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.2
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Contain Binding ${resp} 40 40.0.0.0/8 sxp
+
+Check One Group 2-5
+ [Documentation] Check if only bindings matching filter nodes 2 and 5
+ ... Database should contains only Bindings regarding to these matches:
+ ... deny ACL 10.10.20.0 0.0.0.255
+ ... permit ACL 10.10.0.0 0.0.255.0
+ ... permit SGT 30 ACL 10.10.10.0 0.0.0.255
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ @{list} Create List 127.0.0.2 127.0.0.5
+ : FOR ${node} IN @{list}
+ \ ${resp} Get Bindings ${node}
+ \ Log ${resp}
+ \ Should Not Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ \ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ \ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ \ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ \ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ \ Should Not Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ \ Should Not Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ \ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ \ Should Not Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 40 40.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.4
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+
+Check Two Group 2-5
+ [Documentation] Check if only bindings matching filter nodes 2 and 5
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit SGT 20,40 ACL 10.10.0.0 0.0.255.255
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ @{list} Create List 127.0.0.2 127.0.0.5
+ : FOR ${node} IN @{list}
+ \ ${resp} Get Bindings ${node}
+ \ Log ${resp}
+ \ Should Not Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ \ Should Not Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ \ Should Not Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ \ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ \ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ \ Should Not Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ \ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ \ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ \ Should Not Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ \ Should Not Contain Binding ${resp} 40 40.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.4
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+
+Check One Group 4-2
+ [Documentation] Check if only bindings matching filter from node 4 and 2 are propagated to SXP-DB other nodes
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit ACL 10.10.10.0 0.0.0.255
+ ... permit ACL 10.0.0.0 0.254.0.0
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ ${resp} Get Bindings 127.0.0.5
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Not Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Not Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Not Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Not Contain Binding ${resp} 40 40.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.3
+ Log ${resp}
+ Should Contain Binding ${resp} 50 10.10.10.50/32 sxp
+ Should Contain Binding ${resp} 50 10.10.50.0/24 sxp
+ Should Contain Binding ${resp} 50 10.50.0.0/16 sxp
+ Should Contain Binding ${resp} 50 50.0.0.0/8 sxp
+
+Check Two Group 4-2
+ [Documentation] Check if only bindings matching filter from node 4 and 2 are propagated to SXP-DB of other nodes
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit ACL 10.0.0.0 0.255.255.255
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ ${resp} Get Bindings 127.0.0.5
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Not Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Not Contain Binding ${resp} 40 40.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.3
+ Log ${resp}
+ Should Contain Binding ${resp} 50 10.10.10.50/32 sxp
+ Should Contain Binding ${resp} 50 10.10.50.0/24 sxp
+ Should Contain Binding ${resp} 50 10.50.0.0/16 sxp
+ Should Contain Binding ${resp} 50 50.0.0.0/8 sxp
+
+Check Three Group 4-2
+ [Documentation] Check if only bindings matching filter from node 4 and 2 are propagated to SXP-DB of other nodes
+ ... Database should contains only Bindings regarding to these matches:
+ ... deny ACL 10.0.0.0 0.255.255.255
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ ${resp} Get Bindings 127.0.0.5
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Not Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Not Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Not Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Not Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Not Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Not Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Not Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Not Contain Binding ${resp} 40 40.0.0.0/8 sxp
+
+Check One Group 5-3
+ [Documentation] Check if only bindings matching filter from node 5 and 3 are propagated to SXP-DB of other nodes
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit SGT 30 ACL 10.10.10.0 0.0.0.255
+ ... permit SGT 50 ACL 10.0.0.0 0.254.0.0
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ ${resp} Get Bindings 127.0.0.4
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Not Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Not Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Not Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Not Contain Binding ${resp} 50 10.10.10.50/32 sxp
+ Should Not Contain Binding ${resp} 50 10.10.50.0/24 sxp
+ Should Contain Binding ${resp} 50 10.50.0.0/16 sxp
+ Should Not Contain Binding ${resp} 50 50.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.2
+ Log ${resp}
+ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Contain Binding ${resp} 40 40.0.0.0/8 sxp
+
+Check Two Group 5-3
+ [Documentation] Check if only bindings matching filter from node 5 and 3 are propagated to SXP-DB of other nodes
+ ... Database should contains only Bindings regarding to these matches:
+ ... permit ESGT 20,40 ACL 10.0.0.0 0.255.255.255
+ ... Info regarding filtering https://wiki.opendaylight.org/view/SXP:Beryllium:Developer_Guide
+ ${resp} Get Bindings 127.0.0.4
+ Log ${resp}
+ Should Contain Binding ${resp} 10 10.10.10.10/32 sxp
+ Should Contain Binding ${resp} 10 10.10.10.0/24 sxp
+ Should Contain Binding ${resp} 10 10.10.0.0/16 sxp
+ Should Contain Binding ${resp} 10 10.0.0.0/8 sxp
+ Should Contain Binding ${resp} 20 10.10.10.20/32 sxp
+ Should Contain Binding ${resp} 20 10.10.20.0/24 sxp
+ Should Contain Binding ${resp} 20 10.20.0.0/16 sxp
+ Should Contain Binding ${resp} 20 20.0.0.0/8 sxp
+ Should Contain Binding ${resp} 30 10.10.10.30/32 sxp
+ Should Contain Binding ${resp} 30 10.10.30.0/24 sxp
+ Should Contain Binding ${resp} 30 10.30.0.0/16 sxp
+ Should Not Contain Binding ${resp} 30 30.0.0.0/8 sxp
+ Should Not Contain Binding ${resp} 50 10.10.10.50/32 sxp
+ Should Not Contain Binding ${resp} 50 10.10.50.0/24 sxp
+ Should Not Contain Binding ${resp} 50 10.50.0.0/16 sxp
+ Should Not Contain Binding ${resp} 50 50.0.0.0/8 sxp
+ ${resp} Get Bindings 127.0.0.2
+ Log ${resp}
+ Should Contain Binding ${resp} 40 10.10.10.40/32 sxp
+ Should Contain Binding ${resp} 40 10.10.40.0/24 sxp
+ Should Contain Binding ${resp} 40 10.40.0.0/16 sxp
+ Should Contain Binding ${resp} 40 40.0.0.0/8 sxp