[ONOS-7524] Mininet based SRMulticast tests
Change-Id: I92f69417f10b24fad386fe348fa4ed148ad173e7
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/SRMulticastTest.py b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/SRMulticastTest.py
index e822c29..734dc52 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/SRMulticastTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/SRMulticastTest.py
@@ -19,19 +19,16 @@
along with TestON. If not, see <http://www.gnu.org/licenses/>.
"""
+import time
from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as run
class SRMulticastTest ():
def __init__( self ):
self.default = ''
- self.topo = dict()
- # (number of spine switch, number of leaf switch, dual-homed, description, minFlowCount - leaf)
- self.topo[ '2x2' ] = ( 2, 2, False, '2x2 leaf-spine topology', 1 )
- self.switchNames = {}
- self.switchNames[ '2x2' ] = [ "leaf205", "leaf206", "spine227", "spine228" ]
+ self.switchNames = [ "leaf205", "leaf206", "spine227", "spine228" ]
- def runTest( self, main, test_idx, topology, onosNodes, description, vlan = [] ):
+ def runTest( self, main, test_idx, onosNodes, description, removeRoute=False, linkFailure=False, switchFailure=False ):
skipPackage = False
init = False
if not hasattr( main, 'apps' ):
@@ -41,21 +38,76 @@
if not init and onosNodes == main.Cluster.numCtrls:
skipPackage = True
- main.case( '%s, with %s and %d ONOS instance%s' %
- ( description, self.topo[ topology ][ 3 ], onosNodes, 's' if onosNodes > 1 else '' ) )
-
- main.cfgName = 'CASE%01d%01d' % ( test_idx / 10, ( ( test_idx - 1 ) % 10 ) % 4 + 1 )
+ main.resultFileName = 'CASE%03d' % test_idx
main.Cluster.setRunningNode( onosNodes )
run.installOnos( main, skipPackage=skipPackage, cliSleep=5 )
+ # Load configuration files
+ main.step("Load configurations")
+ main.cfgName = 'TEST_CONFIG_ipv4=1_ipv6=1_dhcp=1_routers=1'
+ run.loadJson( main )
+ main.cfgName = 'CASE%03d' % test_idx
+ run.loadMulticastConfig( main )
+ if linkFailure:
+ run.loadLinkFailureChart( main )
+ if switchFailure:
+ run.loadSwitchFailureChart( main )
+ time.sleep( float( main.params[ 'timers' ][ 'loadNetcfgSleep' ] ) )
+
if hasattr( main, 'Mininet1' ):
- # TODO Mininet implementation
- pass
+ # Run the test with Mininet
+ mininet_args = ' --dhcp=1 --routers=1 --ipv6=1 --ipv4=1'
+ run.startMininet( main, main.params['DEPENDENCY']['topology'], args=mininet_args )
+ time.sleep( float( main.params[ 'timers' ][ 'startMininetSleep' ] ) )
else:
# Run the test with physical devices
- run.connectToPhysicalNetwork( main, self.switchNames[ topology ] )
- # Check if the devices are up
- run.checkDevices( main, switches=len(self.switchNames[ topology ]))
- # Check the flows against the devices
- run.checkFlows( main, minFlowCount=self.topo[ topology ][ 4 ] * self.topo[ topology ][ 1 ], sleep=5 )
+ run.connectToPhysicalNetwork( main, self.switchNames )
+ # Check if the devices are up
+ run.checkDevices( main, switches=len( self.switchNames ) )
+
+ # Create scapy components
+ run.startScapyHosts( main )
+
+ for entry in main.multicastConfig:
+ main.step("Verify adding multicast route with group IP {}".format(entry["group"]))
+ # Create a multicast route
+ main.Cluster.active( 0 ).CLI.mcastHostJoin( entry["sIP"], entry["group"], entry["sPorts"], entry["dHosts"] )
+ time.sleep( float( main.params[ 'timers' ][ 'mcastSleep' ] ) )
+ # Check the flows against the devices
+ # run.checkFlows( main, minFlowCount=2, sleep=5 )
+ # Verify multicast traffic
+ run.verifyMulticastTraffic( main, entry, True, skipOnFail=True )
+
+ # Test switch failures
+ if switchFailure:
+ for switch, expected in main.switchFailureChart.items():
+ run.killSwitch( main, switch, expected['switches_after_failure'], expected['links_after_failure'] )
+ run.verifyMulticastTraffic( main, entry, True, skipOnFail=True )
+
+ run.recoverSwitch( main, switch, expected['switches_before_failure'], expected['links_before_failure'] )
+ run.verifyMulticastTraffic( main, entry, True, skipOnFail=True )
+
+ # Test link failures
+ if linkFailure:
+ for link_batch_name, info in main.linkFailureChart.items():
+ linksToRemove = info['links'].values()
+ linksBefore = info['links_before']
+ linksAfter = info['links_after']
+
+ run.killLinkBatch( main, linksToRemove, linksAfter, switches=10 )
+ run.verifyMulticastTraffic( main, entry, True, skipOnFail=True )
+
+ run.restoreLinkBatch( main, linksToRemove, linksBefore, switches=10 )
+ run.verifyMulticastTraffic( main, entry, True, skipOnFail=True )
+
+ if removeRoute:
+ main.step("Verify deleting multicast route with group IP {}".format(entry["group"]))
+ # delete a multicast route
+ main.Cluster.active( 0 ).CLI.mcastHostDelete( entry["sIP"], entry["group"] )
+ time.sleep( float( main.params[ 'timers' ][ 'mcastSleep' ] ) )
+ # Check the flows against the devices
+ # run.checkFlows( main, minFlowCount=2, sleep=5 )
+ # Verify multicast traffic (traffic check is expected to fail)
+ run.verifyMulticastTraffic( main, entry, False, skipOnFail=True )
+
# Clean up the environment
- run.cleanup( main, physical=(not hasattr( main, 'Mininet1' )))
+ run.cleanup( main, copyKarafLog=False )
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp1.conf b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp1.conf
index 8870fb4..474bf02 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp1.conf
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp1.conf
@@ -8,6 +8,21 @@
ip prefix-list 1 seq 20 permit 10.1.2.0/24
ip prefix-list 1 seq 30 permit 10.0.3.0/24
ip prefix-list 1 seq 40 permit 10.0.4.0/24
+
+ip prefix-list 1 seq 50 permit 10.1.0.0/24
+ip prefix-list 1 seq 70 permit 10.1.10.0/24
+ip prefix-list 1 seq 80 permit 10.2.0.0/24
+ip prefix-list 1 seq 90 permit 10.2.30.0/24
+ip prefix-list 1 seq 100 permit 10.2.20.0/24
+ip prefix-list 1 seq 110 permit 10.2.10.0/24
+ip prefix-list 1 seq 120 permit 10.2.40.0/24
+ip prefix-list 1 seq 130 permit 10.3.0.0/24
+ip prefix-list 1 seq 140 permit 10.3.30.0/24
+ip prefix-list 1 seq 150 permit 10.3.10.0/24
+ip prefix-list 1 seq 160 permit 10.3.20.0/24
+ip prefix-list 1 seq 170 permit 10.5.10.0/24
+ip prefix-list 1 seq 180 permit 10.5.20.0/24
+
!
route-map NEXTHOP41 permit 10
match ip address prefix-list 1
@@ -22,6 +37,20 @@
!
ipv6 prefix-list 2 seq 10 permit 2000::200/120
ipv6 prefix-list 2 seq 20 permit 2000::300/120
+
+ipv6 prefix-list 2 seq 30 permit 1000::300/120
+ipv6 prefix-list 2 seq 40 permit 1001::300/120
+ipv6 prefix-list 2 seq 50 permit 1002::300/120
+ipv6 prefix-list 2 seq 60 permit 1003::300/120
+ipv6 prefix-list 2 seq 70 permit 1004::300/120
+ipv6 prefix-list 2 seq 80 permit 1005::300/120
+ipv6 prefix-list 2 seq 90 permit 1006::300/120
+ipv6 prefix-list 2 seq 100 permit 1007::300/120
+ipv6 prefix-list 2 seq 110 permit 1008::300/120
+ipv6 prefix-list 2 seq 120 permit 1009::300/120
+ipv6 prefix-list 2 seq 130 permit 1010::300/120
+ipv6 prefix-list 2 seq 140 permit 1011::300/120
+ipv6 prefix-list 2 seq 150 permit 1012::300/120
!
route-map NEXTHOP61 permit 10
match ipv6 address prefix-list 2
@@ -64,6 +93,21 @@
neighbor 2000::701 advertisement-interval 1
no neighbor 2000::701 activate
!
+
+network 10.1.0.0/24
+network 10.1.10.0/24
+network 10.2.0.0/24
+network 10.2.30.0/24
+network 10.2.20.0/24
+network 10.2.10.0/24
+network 10.2.40.0/24
+network 10.3.0.0/24
+network 10.3.30.0/24
+network 10.3.10.0/24
+network 10.3.20.0/24
+network 10.5.10.0/24
+network 10.5.20.0/24
+
network 10.0.2.0/24
network 10.1.2.0/24
network 10.0.3.0/24
@@ -72,8 +116,24 @@
! IPv6
!
address-family ipv6
+
+network 1000::300/120
+network 1001::300/120
+network 1002::300/120
+network 1003::300/120
+network 1004::300/120
+network 1005::300/120
+network 1006::300/120
+network 1007::300/120
+network 1008::300/120
+network 1009::300/120
+network 1010::300/120
+network 1011::300/120
+network 1012::300/120
+
network 2000::200/120
network 2000::300/120
+
neighbor 2000::101 activate
neighbor 2000::101 route-map NEXTHOP61 out
neighbor 2000::701 activate
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp2.conf b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp2.conf
index e554de4..421d5c2 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp2.conf
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/bgpdbgp2.conf
@@ -8,6 +8,21 @@
ip prefix-list 1 seq 20 permit 10.1.2.0/24
ip prefix-list 1 seq 30 permit 10.0.3.0/24
ip prefix-list 1 seq 40 permit 10.0.4.0/24
+
+ip prefix-list 1 seq 50 permit 10.1.0.0/24
+ip prefix-list 1 seq 60 permit 10.1.10.0/24
+ip prefix-list 1 seq 70 permit 10.2.0.0/24
+ip prefix-list 1 seq 80 permit 10.2.30.0/24
+ip prefix-list 1 seq 90 permit 10.2.20.0/24
+ip prefix-list 1 seq 100 permit 10.2.10.0/24
+ip prefix-list 1 seq 110 permit 10.2.40.0/24
+ip prefix-list 1 seq 120 permit 10.3.0.0/24
+ip prefix-list 1 seq 130 permit 10.3.30.0/24
+ip prefix-list 1 seq 140 permit 10.3.10.0/24
+ip prefix-list 1 seq 150 permit 10.3.20.0/24
+ip prefix-list 1 seq 160 permit 10.5.10.0/24
+ip prefix-list 1 seq 170 permit 10.5.20.0/24
+
!
route-map NEXTHOP45 permit 10
match ip address prefix-list 1
@@ -22,6 +37,22 @@
!
ipv6 prefix-list 2 seq 10 permit 2000::200/120
ipv6 prefix-list 2 seq 20 permit 2000::300/120
+
+ipv6 prefix-list 2 seq 30 permit 1000::300/120
+ipv6 prefix-list 2 seq 40 permit 1001::300/120
+ipv6 prefix-list 2 seq 50 permit 1002::300/120
+ipv6 prefix-list 2 seq 60 permit 1003::300/120
+ipv6 prefix-list 2 seq 70 permit 1004::300/120
+ipv6 prefix-list 2 seq 80 permit 1005::300/120
+ipv6 prefix-list 2 seq 90 permit 1006::300/120
+ipv6 prefix-list 2 seq 100 permit 1007::300/120
+ipv6 prefix-list 2 seq 110 permit 1008::300/120
+ipv6 prefix-list 2 seq 120 permit 1009::300/120
+ipv6 prefix-list 2 seq 130 permit 1010::300/120
+ipv6 prefix-list 2 seq 140 permit 1011::300/120
+ipv6 prefix-list 2 seq 150 permit 1012::300/120
+!
+
!
route-map NEXTHOP65 permit 10
match ipv6 address prefix-list 2
@@ -64,6 +95,22 @@
neighbor 2000::601 advertisement-interval 1
no neighbor 2000::601 activate
!
+
+network 10.1.0.0/24
+network 10.1.10.0/24
+network 10.2.0.0/24
+network 10.2.30.0/24
+network 10.2.20.0/24
+network 10.2.10.0/24
+network 10.2.40.0/24
+network 10.3.0.0/24
+network 10.3.30.0/24
+network 10.3.10.0/24
+network 10.3.20.0/24
+network 10.5.10.0/24
+network 10.5.20.0/24
+
+network 10.1.0.0/24
network 10.0.2.0/24
network 10.1.2.0/24
network 10.0.3.0/24
@@ -72,6 +119,21 @@
! IPv6
!
address-family ipv6
+
+network 1000::300/120
+network 1001::300/120
+network 1002::300/120
+network 1003::300/120
+network 1004::300/120
+network 1005::300/120
+network 1006::300/120
+network 1007::300/120
+network 1008::300/120
+network 1009::300/120
+network 1010::300/120
+network 1011::300/120
+network 1012::300/120
+
network 2000::200/120
network 2000::300/120
neighbor 2000::501 activate
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd.conf b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd.conf
index aa559d2..2676b07 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd.conf
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd.conf
@@ -6,50 +6,138 @@
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "trellis.local";
-subnet 10.0.2.0 netmask 255.255.255.0 {
- range 10.0.2.100 10.0.2.240;
- option routers 10.0.2.254;
-}
-
-subnet 10.1.2.0 netmask 255.255.255.0 {
- range 10.1.2.100 10.1.2.240;
- option routers 10.1.2.254;
-}
-
subnet 10.0.3.0 netmask 255.255.255.0 {
range 10.0.3.100 10.0.3.240;
option routers 10.0.3.254;
}
-subnet 10.0.4.0 netmask 255.255.255.0 {
- range 10.0.4.100 10.0.4.240;
- option routers 10.0.4.254;
+subnet 10.1.0.0 netmask 255.255.255.0 {
+ range 10.1.0.1 10.1.0.100;
+ option routers 10.1.0.254;
}
-subnet 10.0.99.3 netmask 255.255.255.255 {
+subnet 10.1.10.0 netmask 255.255.255.0 {
+ range 10.1.10.1 10.1.10.100;
+ option routers 10.1.10.254;
}
-host h1 {
+subnet 10.2.0.0 netmask 255.255.255.0 {
+ range 10.2.0.1 10.2.0.100;
+ option routers 10.2.0.254;
+}
+
+subnet 10.2.30.0 netmask 255.255.255.0 {
+ range 10.2.30.1 10.2.30.100;
+ option routers 10.2.30.254;
+}
+
+subnet 10.2.20.0 netmask 255.255.255.0 {
+ range 10.2.20.1 10.2.20.100;
+ option routers 10.2.20.254;
+}
+
+subnet 10.2.10.0 netmask 255.255.255.0 {
+ range 10.2.10.1 10.2.10.100;
+ option routers 10.2.10.254;
+}
+
+subnet 10.2.40.0 netmask 255.255.255.0 {
+ range 10.2.40.1 10.2.40.100;
+ option routers 10.2.40.254;
+}
+
+subnet 10.3.0.0 netmask 255.255.255.0 {
+ range 10.3.0.1 10.3.0.100;
+ option routers 10.3.0.254;
+}
+
+subnet 10.3.10.0 netmask 255.255.255.0 {
+ range 10.3.10.1 10.3.10.100;
+ option routers 10.3.10.254;
+}
+
+subnet 10.3.30.0 netmask 255.255.255.0 {
+ range 10.3.30.1 10.3.30.100;
+ option routers 10.3.30.254;
+}
+
+subnet 10.3.20.0 netmask 255.255.255.0 {
+ range 10.3.20.1 10.3.20.100;
+ option routers 10.3.20.254;
+}
+
+subnet 10.5.10.0 netmask 255.255.255.0 {
+ range 10.5.10.1 10.5.10.100;
+ option routers 10.5.10.254;
+}
+
+subnet 10.5.20.0 netmask 255.255.255.0 {
+ range 10.5.20.1 10.5.20.100;
+ option routers 10.5.20.254;
+}
+
+host h1v4 {
hardware ethernet 00:aa:00:00:00:01;
- fixed-address 10.0.2.1;
+ fixed-address 10.1.0.1;
}
-host h2 {
+host h2v4 {
+ hardware ethernet 00:aa:00:00:01:01;
+ fixed-address 10.1.10.1;
+}
+
+host h3v4 {
hardware ethernet 00:aa:00:00:00:02;
- fixed-address 10.0.2.2;
+ fixed-address 10.2.0.1;
}
-host h3 {
+host h4v4 {
hardware ethernet 00:aa:00:00:00:03;
- fixed-address 10.0.3.1;
+ fixed-address 10.2.30.1;
}
-host h4 {
+host h5v4 {
hardware ethernet 00:aa:00:00:00:04;
- fixed-address 10.0.3.2;
+ fixed-address 10.2.20.1;
}
-host dh1 {
- hardware ethernet 00:cc:00:00:00:01;
- fixed-address 10.1.2.1;
+host h6v4 {
+ hardware ethernet 00:aa:00:00:00:05;
+ fixed-address 10.2.10.1;
}
+
+host h7v4 {
+ hardware ethernet 00:aa:00:00:01:05;
+ fixed-address 10.2.40.1;
+}
+
+host h8v4 {
+ hardware ethernet 00:aa:00:00:00:06;
+ fixed-address 10.3.0.1;
+}
+
+host h9v4 {
+ hardware ethernet 00:aa:00:00:00:07;
+ fixed-address 10.3.10.1;
+}
+
+host h10v4 {
+ hardware ethernet 00:aa:00:00:00:08;
+ fixed-address 10.3.30.1;
+}
+
+host h11v4 {
+ hardware ethernet 00:aa:00:00:00:0a;
+ fixed-address 10.3.20.1;
+}
+
+host h12v4 {
+ hardware ethernet 00:aa:00:00:02:01;
+ fixed-address 10.5.10.1;
+}
+
+host h13v4 {
+ hardware ethernet 00:aa:00:00:02:02;
+ fixed-address 10.5.20.1;
+}
+
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd6.conf b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd6.conf
index 526de85..3afa617 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd6.conf
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/dhcpd6.conf
@@ -3,35 +3,143 @@
option dhcp6.next-hop code 242 = ip6-address;
-subnet6 2000::200/120 {
- range6 2000::260 2000::2fe;
- option dhcp6.next-hop 2000::02ff;
-}
-
subnet6 2000::300/120 {
range6 2000::360 2000::3fe;
option dhcp6.next-hop 2000::03ff;
}
-subnet6 2000::9903/128 {
+subnet6 1000::300/120 {
+ range6 1000::360 1000::3fe;
+ option dhcp6.next-hop 1000::03ff;
+}
+
+subnet6 1001::300/120 {
+ range6 1001::360 1001::3fe;
+ option dhcp6.next-hop 1001::03ff;
+}
+
+subnet6 1002::300/120 {
+ range6 1002::360 1002::3fe;
+ option dhcp6.next-hop 1002::03ff;
+}
+
+subnet6 1003::300/120 {
+ range6 1003::360 1003::3fe;
+ option dhcp6.next-hop 1003::03ff;
+}
+
+subnet6 1004::300/120 {
+ range6 1004::360 1004::3fe;
+ option dhcp6.next-hop 1004::03ff;
+}
+
+subnet6 1005::300/120 {
+ range6 1005::360 1005::3fe;
+ option dhcp6.next-hop 1005::03ff;
+}
+
+subnet6 1006::300/120 {
+ range6 1006::360 1006::3fe;
+ option dhcp6.next-hop 1006::03ff;
+}
+
+subnet6 1007::300/120 {
+ range6 1007::360 1007::3fe;
+ option dhcp6.next-hop 1007::03ff;
+}
+
+subnet6 1008::300/120 {
+ range6 1008::360 1008::3fe;
+ option dhcp6.next-hop 1008::03ff;
+}
+
+subnet6 1009::300/120 {
+ range6 1009::360 1009::3fe;
+ option dhcp6.next-hop 1009::03ff;
+}
+
+subnet6 1010::300/120 {
+ range6 1010::360 1010::3fe;
+ option dhcp6.next-hop 1010::03ff;
+}
+
+subnet6 1011::300/120 {
+ range6 1011::360 1011::3fe;
+ option dhcp6.next-hop 1011::03ff;
+}
+
+subnet6 1012::300/120 {
+ range6 1012::360 1012::3fe;
+ option dhcp6.next-hop 1012::03ff;
}
host h1v6 {
hardware ethernet 00:bb:00:00:00:01;
- fixed-address6 2000::201;
+ fixed-address6 1000::3fe;
}
host h2v6 {
- hardware ethernet 00:bb:00:00:00:02;
- fixed-address6 2000::202;
+ hardware ethernet 00:bb:00:00:01:01;
+ fixed-address6 1001::3fe;
}
host h3v6 {
- hardware ethernet 00:bb:00:00:00:03;
- fixed-address6 2000::301;
+ hardware ethernet 00:bb:00:00:00:02;
+ fixed-address6 1002::3fe;
}
host h4v6 {
- hardware ethernet 00:bb:00:00:00:04;
- fixed-address6 2000::302;
+ hardware ethernet 00:bb:00:00:00:03;
+ fixed-address6 1003::3fe;
}
+
+host h5v6 {
+ hardware ethernet 00:bb:00:00:00:04;
+ fixed-address6 1004::3fe;
+}
+
+host h6v6 {
+ hardware ethernet 00:bb:00:00:00:05;
+ fixed-address6 1005::3fe;
+}
+
+host h7v6 {
+ hardware ethernet 00:bb:00:00:01:05;
+ fixed-address6 1006::3fe;
+}
+
+host h8v6 {
+ hardware ethernet 00:bb:00:00:00:06;
+ fixed-address6 1007::3fe;
+}
+
+host h9v6 {
+ hardware ethernet 00:bb:00:00:00:07;
+ fixed-address6 1008::3fe;
+}
+
+host h10v6 {
+ hardware ethernet 00:bb:00:00:00:08;
+ fixed-address6 1009::3fe;
+}
+
+host h11v6 {
+ hardware ethernet 00:bb:00:00:00:0a;
+ fixed-address6 1010::3fe;
+}
+
+host h12v6 {
+ hardware ethernet 00:bb:00:00:01:0a;
+ fixed-address6 1011::3fe;
+}
+
+host h13v6 {
+ hardware ethernet 00:bb:00:00:02:0a;
+ fixed-address6 1012::3fe;
+}
+
+
+
+
+
+
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp1.conf b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp1.conf
index 51991a4..34472bb 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp1.conf
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp1.conf
@@ -6,4 +6,4 @@
!
ip route 0.0.0.0/0 172.16.0.1
!
-fpm connection ip 192.168.56.11 port 2620
+fpm connection ip 10.192.19.121 port 2620
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp2.conf b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp2.conf
index dce218d..9c6e3f4 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp2.conf
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/conf/zebradbgp2.conf
@@ -6,4 +6,4 @@
!
ip route 0.0.0.0/0 172.16.0.1
!
-fpm connection ip 192.168.56.11 port 2620
+fpm connection ip 10.192.19.122 port 2620
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/json/TEST_CONFIG_ipv4=1_ipv6=1_dhcp=1_routers=1.json b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/json/TEST_CONFIG_ipv4=1_ipv6=1_dhcp=1_routers=1.json
new file mode 100644
index 0000000..7c6b51e
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/json/TEST_CONFIG_ipv4=1_ipv6=1_dhcp=1_routers=1.json
@@ -0,0 +1,580 @@
+{
+ "ports" : {
+ "of:0000000000000006/3" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1011::3ff/120" ],
+ "vlan-tagged": [10]
+ }
+ ]
+ },
+ "of:0000000000000006/4" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1012::3ff/120" ],
+ "vlan-untagged": 20
+ }
+ ]
+ },
+ "of:0000000000000006/5" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.5.10.254/24" ],
+ "vlan-tagged": [10]
+ }
+ ]
+ },
+ "of:0000000000000006/6" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.5.20.254/24" ],
+ "vlan-untagged": 20
+ }
+ ]
+ },
+
+ "of:0000000000000001/3" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1000::3ff/120" ],
+ "vlan-untagged": 10
+ }
+ ]
+ },
+ "of:0000000000000001/4" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1001::3ff/120" ],
+ "vlan-untagged": 10
+ }
+ ]
+ },
+ "of:0000000000000001/5" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.1.0.254/24" ],
+ "vlan-untagged": 10
+ }
+ ]
+ },
+ "of:0000000000000001/6" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.1.10.254/24" ],
+ "vlan-untagged": 10
+ }
+ ]
+ },
+ "of:0000000000000002/6" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1002::3ff/120" ],
+ "vlan-untagged": 10
+ }
+ ]
+ },
+ "of:0000000000000002/7" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1003::3ff/120" ],
+ "vlan-untagged": 15
+ }
+ ]
+ },
+ "of:0000000000000002/8" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1004::3ff/120" ],
+ "vlan-tagged": [30]
+ }
+ ]
+ },
+ "of:0000000000000002/9" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.0.254/24" ],
+ "vlan-untagged": 10
+ }
+ ]
+ },
+ "of:0000000000000002/10" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.30.254/24" ],
+ "vlan-untagged": 16
+ }
+ ]
+ },
+ "of:0000000000000002/11" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.20.254/24" ],
+ "vlan-tagged": [30]
+ }
+ ]
+ },
+ "of:0000000000000003/6" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1003::3ff/120" ],
+ "vlan-untagged": 15
+ }
+ ]
+ },
+ "of:0000000000000003/7" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1004::3ff/120" ],
+ "vlan-tagged": [30]
+ }
+ ]
+ },
+ "of:0000000000000003/8" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1005::3ff/120" ],
+ "vlan-tagged": [20]
+ }
+ ]
+ },
+ "of:0000000000000003/9" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1006::3ff/120" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000003/10" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.30.254/24" ],
+ "vlan-untagged": 15
+ }
+ ]
+ },
+ "of:0000000000000003/11" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.20.254/24" ],
+ "vlan-tagged": [30]
+ }
+ ]
+ },
+ "of:0000000000000003/12" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.10.254/24" ],
+ "vlan-tagged": [20]
+ }
+ ]
+ },
+ "of:0000000000000003/13" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.2.40.254/24" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000004/6" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1007::3ff/120" ],
+ "vlan-untagged": 30
+ }
+ ]
+ },
+ "of:0000000000000004/7" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1008::3ff/120" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000004/8" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1009::3ff/120" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000004/9" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.3.0.254/24" ],
+ "vlan-untagged": 30
+ }
+ ]
+ },
+ "of:0000000000000004/10" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.3.10.254/24" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000004/11" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.3.30.254/24" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000004/12" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.1.254/24", "10.0.7.254/24", "2000::1ff/120", "2000::7ff/120" ],
+ "vlan-tagged": [110, 170]
+
+ }
+ ]
+ },
+ "of:0000000000000004/13" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.1.254/24", "2000::1ff/120"],
+ "vlan-untagged": 110
+
+ }
+ ]
+ },
+ "of:0000000000000004/14" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.7.254/24", "2000::7ff/120" ],
+ "vlan-untagged": 170
+
+ }
+ ]
+ },
+ "of:0000000000000005/6" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1008::3ff/120" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000005/7" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1009::3ff/120" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000005/8" : {
+ "interfaces" : [
+ {
+ "ips" : [ "1010::3ff/120" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000005/9" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.3.10.254/24" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000005/10" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.3.30.254/24" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000005/11" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.3.20.254/24" ],
+ "vlan-tagged": [40]
+ }
+ ]
+ },
+ "of:0000000000000005/12" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.5.254/24", "10.0.6.254/24", "2000::5ff/120", "2000::6ff/120" ],
+ "vlan-tagged": [150, 160]
+ }
+ ]
+ },
+ "of:0000000000000005/13" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.5.254/24", "2000::5ff/120"],
+ "vlan-untagged": 150
+ }
+ ]
+ },
+ "of:0000000000000005/14" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.6.254/24", "2000::6ff/120" ],
+ "vlan-untagged": 160
+ }
+ ]
+ },
+ "of:0000000000000005/15" : {
+ "interfaces" : [
+ {
+ "ips" : [ "10.0.3.254/24", "2000::3ff/120" ],
+ "vlan-untagged": 15
+ }
+ ]
+ }
+ },
+ "hosts" : {
+ "00:BB:00:00:01:0A/10" : {
+ "basic": {
+ "locations": ["of:0000000000000006/3"],
+ "ips": ["1011::3fe"]
+ }
+ },
+ "00:bb:00:00:00:04/30" : {
+ "basic": {
+ "locations": ["of:0000000000000003/7","of:0000000000000002/8"],
+ "ips": ["1004::3fe"]
+ }
+ },
+ "00:bb:00:00:00:05/20" : {
+ "basic": {
+ "locations": ["of:0000000000000003/8"],
+ "ips": ["1005::3fe"]
+ }
+ },
+ "00:bb:00:00:01:05/40" : {
+ "basic": {
+ "locations": ["of:0000000000000003/9"],
+ "ips": ["1006::3fe"]
+ }
+ },
+ "00:bb:00:00:00:07/40" : {
+ "basic": {
+ "locations": ["of:0000000000000005/6", "of:0000000000000004/7"],
+ "ips": ["1008::3fe"]
+ }
+ },
+ "00:bb:00:00:00:08/40" : {
+ "basic": {
+ "locations": ["of:0000000000000004/8","of:0000000000000005/7"],
+ "ips": ["1009::3fe"]
+ }
+ },
+ "00:bb:00:00:00:0A/40" : {
+ "basic": {
+ "locations": ["of:0000000000000005/8"],
+ "ips": ["1010::3fe"]
+ }
+ }
+ },
+ "devices" : {
+ "of:0000000000000006" : {
+ "segmentrouting" : {
+ "name" : "s006",
+ "ipv4NodeSid" : 1006,
+ "ipv6NodeSid" : 2006,
+ "ipv6Loopback" : "2000::c0a8:0006",
+ "ipv4Loopback" : "192.168.0.6",
+ "routerMac" : "00:00:00:00:00:06",
+ "isEdgeRouter" : true,
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s006",
+ "driver" : "ofdpa-ovs",
+ "latitude":30,
+ "longitude":-110
+ }
+ },
+ "of:0000000000000103" : {
+ "segmentrouting" : {
+ "name" : "s103",
+ "ipv4NodeSid" : 1103,
+ "ipv4Loopback" : "192.168.0.103",
+ "ipv6NodeSid" : 2103,
+ "ipv6Loopback" : "2000::c0a8:0203",
+ "routerMac" : "00:00:00:00:01:03",
+ "isEdgeRouter" : false,
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s103",
+ "driver" : "ofdpa-ovs",
+ "latitude":35,
+ "longitude":-115
+ }
+ },
+ "of:0000000000000104" : {
+ "segmentrouting" : {
+ "name" : "s104",
+ "ipv4NodeSid" : 1104,
+ "ipv4Loopback" : "192.168.0.104",
+ "ipv6NodeSid" : 2104,
+ "ipv6Loopback" : "2000::c0a8:0204",
+ "routerMac" : "00:00:00:00:01:04",
+ "isEdgeRouter" : false,
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s104",
+ "driver" : "ofdpa-ovs",
+ "latitude":35,
+ "longitude":-110
+ }
+ },
+ "of:0000000000000001" : {
+ "segmentrouting" : {
+ "name" : "s001",
+ "ipv4NodeSid" : 1001,
+ "ipv6NodeSid" : 2001,
+ "ipv6Loopback" : "2000::c0a8:0001",
+ "ipv4Loopback" : "192.168.0.1",
+ "routerMac" : "00:00:00:00:00:01",
+ "isEdgeRouter" : true,
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s001",
+ "driver" : "ofdpa-ovs",
+ "latitude":30,
+ "longitude":-105
+ }
+ },
+ "of:0000000000000002" : {
+ "segmentrouting" : {
+ "name" : "s002",
+ "ipv4NodeSid" : 1002,
+ "ipv4Loopback" : "192.168.0.2",
+ "ipv6NodeSid" : 2002,
+ "ipv6Loopback" : "2000::c0a8:0002",
+ "routerMac" : "00:00:00:00:00:02",
+ "isEdgeRouter" : true,
+ "pairLocalPort" : 5,
+ "pairDeviceId": "of:0000000000000003",
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s002",
+ "driver" : "ofdpa-ovs",
+ "latitude":34,
+ "longitude":-95
+ }
+ },
+ "of:0000000000000003" : {
+ "segmentrouting" : {
+ "name" : "s003",
+ "ipv4NodeSid" : 1003,
+ "ipv4Loopback" : "192.168.0.3",
+ "ipv6NodeSid" : 2003,
+ "ipv6Loopback" : "2000::c0a8:0003",
+ "routerMac" : "00:00:00:00:00:02",
+ "isEdgeRouter" : true,
+ "pairLocalPort" : 5,
+ "pairDeviceId": "of:0000000000000002",
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s003",
+ "driver" : "ofdpa-ovs",
+ "latitude":34,
+ "longitude":-90
+ }
+ },
+ "of:0000000000000004" : {
+ "segmentrouting" : {
+ "name" : "s004",
+ "ipv4NodeSid" : 1004,
+ "ipv4Loopback" : "192.168.0.4",
+ "ipv6NodeSid" : 2004,
+ "ipv6Loopback" : "2000::c0a8:0004",
+ "routerMac" : "00:00:00:00:00:04",
+ "isEdgeRouter" : true,
+ "pairLocalPort" : 5,
+ "pairDeviceId": "of:0000000000000005",
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s004",
+ "driver" : "ofdpa-ovs",
+ "latitude":34,
+ "longitude":-85
+ }
+ },
+ "of:0000000000000005" : {
+ "segmentrouting" : {
+ "name" : "s005",
+ "ipv4NodeSid" : 1005,
+ "ipv4Loopback" : "192.168.0.5",
+ "ipv6NodeSid" : 2005,
+ "ipv6Loopback" : "2000::c0a8:0005",
+ "routerMac" : "00:00:00:00:00:04",
+ "isEdgeRouter" : true,
+ "pairLocalPort" : 5,
+ "pairDeviceId": "of:0000000000000004",
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s005",
+ "driver" : "ofdpa-ovs",
+ "latitude":34,
+ "longitude":-80
+ }
+ },
+ "of:0000000000000101" : {
+ "segmentrouting" : {
+ "name" : "s101",
+ "ipv4NodeSid" : 1101,
+ "ipv4Loopback" : "192.168.0.101",
+ "ipv6NodeSid" : 2101,
+ "ipv6Loopback" : "2000::c0a8:0101",
+ "routerMac" : "00:00:00:00:01:01",
+ "isEdgeRouter" : false,
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s101",
+ "driver" : "ofdpa-ovs",
+ "latitude":42,
+ "longitude":-100
+ }
+ },
+ "of:0000000000000102" : {
+ "segmentrouting" : {
+ "name" : "s102",
+ "ipv4NodeSid" : 1102,
+ "ipv4Loopback" : "192.168.0.102",
+ "ipv6NodeSid" : 2102,
+ "ipv6Loopback" : "2000::c0a8:0202",
+ "routerMac" : "00:00:00:00:01:02",
+ "isEdgeRouter" : false,
+ "adjacencySids" : []
+ },
+ "basic" : {
+ "name" : "s102",
+ "driver" : "ofdpa-ovs",
+ "latitude":42,
+ "longitude":-95
+ }
+ }
+ },
+ "apps" : {
+ "org.onosproject.dhcprelay" : {
+ "default": [
+ {
+ "dhcpServerConnectPoint": "of:0000000000000005/15",
+ "serverIps": ["10.0.3.253", "2000::3fd"]
+ }
+ ]
+ }
+ }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE101.linkFailureChart b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE101.linkFailureChart
new file mode 100644
index 0000000..8a9e052
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE101.linkFailureChart
@@ -0,0 +1,8 @@
+{
+ "link_batch_1" : { "links" : { "link1" : ["leaf2", "spine101"] },
+ "links_before" : 48,
+ "links_after" : 44 },
+ "link_batch_2" : { "links" : { "link1" : ["leaf2", "spine102"] },
+ "links_before" : 48,
+ "links_after" : 44 }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE102.linkFailureChart b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE102.linkFailureChart
new file mode 100644
index 0000000..f102be4
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE102.linkFailureChart
@@ -0,0 +1,9 @@
+{
+ "link_batch_1" : { "links" : { "link1" : ["leaf4", "spine101"] },
+ "links_before" : 48,
+ "links_after" : 44 },
+ "link_batch_2" : { "links" : { "link1" : ["leaf4", "spine102"] },
+ "links_before" : 48,
+ "links_after" : 44 }
+}
+
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE103.linkFailureChart b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE103.linkFailureChart
new file mode 100644
index 0000000..8041a05
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/linkFailure/CASE103.linkFailureChart
@@ -0,0 +1,9 @@
+{
+ "link_batch_1" : { "links" : { "link1" : ["spine103", "spine101"] },
+ "links_before" : 48,
+ "links_after" : 46 },
+ "link_batch_2" : { "links" : { "link1" : ["spine104", "spine102"] },
+ "links_before" : 48,
+ "links_after" : 46 }
+}
+
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE001.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE001.multicastConfig
new file mode 100644
index 0000000..0068a5f
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE001.multicastConfig
@@ -0,0 +1,48 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10"],
+ "dHosts": ["00:AA:00:00:00:03/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7"],
+ "dHosts": ["00:BB:00:00:00:03/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE002.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE002.multicastConfig
new file mode 100644
index 0000000..b6c77bf
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE002.multicastConfig
@@ -0,0 +1,48 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000004/9"],
+ "dHosts": ["00:AA:00:00:00:06/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h8v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000004/6"],
+ "dHosts": ["00:BB:00:00:00:06/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h8v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE003.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE003.multicastConfig
new file mode 100644
index 0000000..6c25ca0
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE003.multicastConfig
@@ -0,0 +1,48 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE004.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE004.multicastConfig
new file mode 100644
index 0000000..9a138d7
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE004.multicastConfig
@@ -0,0 +1,54 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE005.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE005.multicastConfig
new file mode 100644
index 0000000..d2e2fdf
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE005.multicastConfig
@@ -0,0 +1,54 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE006.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE006.multicastConfig
new file mode 100644
index 0000000..97d1579
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE006.multicastConfig
@@ -0,0 +1,54 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE007.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE007.multicastConfig
new file mode 100644
index 0000000..06d5876
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE007.multicastConfig
@@ -0,0 +1,60 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE008.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE008.multicastConfig
new file mode 100644
index 0000000..06d5876
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE008.multicastConfig
@@ -0,0 +1,60 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE101.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE101.multicastConfig
new file mode 100644
index 0000000..06d5876
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE101.multicastConfig
@@ -0,0 +1,60 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE102.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE102.multicastConfig
new file mode 100644
index 0000000..06d5876
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE102.multicastConfig
@@ -0,0 +1,60 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE103.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE103.multicastConfig
new file mode 100644
index 0000000..06d5876
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE103.multicastConfig
@@ -0,0 +1,60 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE201.multicastConfig b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE201.multicastConfig
new file mode 100644
index 0000000..06d5876
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/multicast/CASE201.multicastConfig
@@ -0,0 +1,60 @@
+[
+ {
+ "ipVersion": 4,
+ "sIP": "10.2.0.1",
+ "group": "224.2.0.1",
+ "sPorts": ["of:0000000000000002/9"],
+ "dPorts": ["of:0000000000000002/10", "of:0000000000000004/9", "of:0000000000000001/5"],
+ "dHosts": ["00:AA:00:00:00:03/None", "00:AA:00:00:00:06/None", "00:AA:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v4",
+ "interface": "h3v4-eth0",
+ "Ether": "01:00:5e:02:00:01",
+ "UDP": 40051,
+ "filter": "ip host 224.2.0.1",
+ "packet": "dst=01:00:5e:02:00:01 src=00:aa:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v4"
+ },
+ {
+ "host": "h8v4"
+ },
+ {
+ "host": "h1v4"
+ }
+ ]
+ }
+ },
+ {
+ "ipVersion": 6,
+ "sIP": "1002::3fe",
+ "group": "ff08::3fe",
+ "sPorts": ["of:0000000000000002/6"],
+ "dPorts": ["of:0000000000000002/7", "of:0000000000000004/6", "of:0000000000000001/3"],
+ "dHosts": ["00:BB:00:00:00:03/None", "00:BB:00:00:00:06/None", "00:BB:00:00:00:01/None"],
+ "scapy": {
+ "src": {
+ "host": "h3v6",
+ "interface": "h3v6-eth0",
+ "Ether": "33:33:00:00:03:fe",
+ "UDP": 40051,
+ "filter": "ip6 host ff08::3fe",
+ "packet": "dst=33:33:00:00:03:fe src=00:bb:00:00:00:02"
+ },
+ "dst": [
+ {
+ "host": "h4v6"
+ },
+ {
+ "host": "h8v6"
+ },
+ {
+ "host": "h1v6"
+ }
+ ]
+ }
+ }
+]
diff --git a/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/switchFailure/CASE201.switchFailureChart b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/switchFailure/CASE201.switchFailureChart
new file mode 100644
index 0000000..6614e5f
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRMulticast/dependencies/switchFailure/CASE201.switchFailureChart
@@ -0,0 +1,18 @@
+{
+ "spine101": { "switches_before_failure": 10,
+ "links_before_failure": 48,
+ "switches_after_failure": 9,
+ "links_after_failure": 30 },
+ "spine102": { "switches_before_failure": 10,
+ "links_before_failure": 48,
+ "switches_after_failure": 9,
+ "links_after_failure": 30 },
+ "spine103": { "switches_before_failure": 10,
+ "links_before_failure": 48,
+ "switches_after_failure": 9,
+ "links_after_failure": 42 },
+ "spine104": { "switches_before_failure": 10,
+ "links_before_failure": 48,
+ "switches_after_failure": 9,
+ "links_after_failure": 42 }
+}