Flip the default igmp app to multitable.
Change igmp test accordingly.
Avoid restarting ONOS by toggling the onos core driver/openflow apps.
Avoid configuring the igmp SSM table and port table config used only with the deprecated ciena-cordigmp (non-multi-table) app
Change-Id: Ifa7e1dbec61a4d768885c30fd36f6024798fe754
diff --git a/src/test/igmp/igmpTest.py b/src/test/igmp/igmpTest.py
index bd99d5e..041a324 100644
--- a/src/test/igmp/igmpTest.py
+++ b/src/test/igmp/igmpTest.py
@@ -57,7 +57,6 @@
class igmp_exchange(CordLogger):
V_INF1 = 'veth0'
- V_INF2 = 'veth1'
MGROUP1 = '239.1.2.3'
MGROUP2 = '239.2.2.3'
MINVALIDGROUP1 = '255.255.255.255'
@@ -85,12 +84,15 @@
@classmethod
def setUpClass(cls):
- cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
- cls.port_map, _ = cls.olt.olt_port_map()
- OnosCtrl.cord_olt_config(cls.olt)
+ cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
+ cls.port_map, _ = cls.olt.olt_port_map()
+ OnosCtrl.config_device_driver()
+ OnosCtrl.cord_olt_config(cls.olt)
+ time.sleep(2)
@classmethod
- def tearDownClass(cls): pass
+ def tearDownClass(cls):
+ OnosCtrl.config_device_driver(driver = 'ovs')
def setUp(self):
''' Activate the igmp app'''
@@ -111,6 +113,7 @@
time.sleep(2)
def onos_ssm_table_load(self, groups, src_list = ['1.2.3.4'],flag = False):
+ return
ssm_dict = {'apps' : { 'org.opencord.igmp' : { 'ssmTranslate' : [] } } }
ssm_xlate_list = ssm_dict['apps']['org.opencord.igmp']['ssmTranslate']
if flag: #to maintain seperate group-source pair.
@@ -341,10 +344,12 @@
igmpState = IGMPTestState(groups = groups, df = df)
igmpStateRecv = IGMPTestState(groups = groups, df = df)
igmpStateList = (igmpState, igmpStateRecv)
- mcastTraffic = McastTraffic(groups, iface= 'veth2', cb = self.send_mcast_cb, arg = igmpState)
+ tx_intf = self.port_map[self.PORT_TX_DEFAULT]
+ rx_intf = self.port_map[self.PORT_RX_DEFAULT]
+ mcastTraffic = McastTraffic(groups, iface= tx_intf, cb = self.send_mcast_cb, arg = igmpState)
self.df = df
self.mcastTraffic = mcastTraffic
- self.recv_socket = L3PacketSocket(iface = 'veth0', type = ETH_P_IP)
+ self.recv_socket = L3PacketSocket(iface = rx_intf, type = ETH_P_IP)
def igmp_srp_task(stateList):
igmpSendState, igmpRecvState = stateList
@@ -357,7 +362,7 @@
self.igmp_verify_join(stateList)
self.df.callback(0)
- self.send_igmp_join(groups)
+ self.send_igmp_join(groups, iface = rx_intf)
mcastTraffic.start()
self.test_timer = reactor.callLater(self.MCAST_TRAFFIC_TIMEOUT, self.mcast_traffic_timer)
reactor.callLater(0, igmp_srp_task, igmpStateList)
@@ -365,23 +370,27 @@
@deferred(timeout=MCAST_TRAFFIC_TIMEOUT+40)
def test_igmp_leave_verify_traffic(self):
- groups = [self.MGROUP1, self.MGROUP1]
- leave_groups = ['224.0.1.10']
+ groups = [self.MGROUP1]
+ leave_groups = [self.MGROUP1]
self.onos_ssm_table_load(groups)
df = defer.Deferred()
igmpState = IGMPTestState(groups = groups, df = df)
IGMPTestState(groups = groups, df = df)
- mcastTraffic = McastTraffic(groups, iface= 'veth2', cb = self.send_mcast_cb,
+ tx_intf = self.port_map[self.PORT_TX_DEFAULT]
+ rx_intf = self.port_map[self.PORT_RX_DEFAULT]
+ mcastTraffic = McastTraffic(groups, iface= tx_intf, cb = self.send_mcast_cb,
arg = igmpState)
self.df = df
self.mcastTraffic = mcastTraffic
- self.recv_socket = L3PacketSocket(iface = 'veth0', type = ETH_P_IP)
+ self.recv_socket = L3PacketSocket(iface = rx_intf, type = ETH_P_IP)
mcastTraffic.start()
- self.send_igmp_join(groups)
- self.send_igmp_leave(leave_groups, delay = 3)
+ self.send_igmp_join(groups, iface = rx_intf)
+ time.sleep(5)
+ self.send_igmp_leave(leave_groups, delay = 3, iface = rx_intf)
+ time.sleep(10)
join_state = IGMPTestState(groups = leave_groups)
- status = self.igmp_not_recv_task(self.V_INF1,leave_groups, join_state)
+ status = self.igmp_not_recv_task(rx_intf, leave_groups, join_state)
log_test.info('verified status for igmp recv task %s'%status)
assert status == 1 , 'EXPECTED RESULT'
self.df.callback(0)
@@ -397,6 +406,7 @@
self.iterations = 0
self.num_groups = len(self.groups)
self.MAX_TEST_ITERATIONS = 10
+ rx_intf = self.port_map[self.PORT_RX_DEFAULT]
def igmp_srp_task(v):
if self.iterations < self.MAX_TEST_ITERATIONS:
@@ -405,11 +415,11 @@
self.num_groups = random.randint(0, len(self.groups))
self.send_igmp_join(self.groups[:self.num_groups],
src_list = self.src_list,
- iface = 'veth0', delay = 0)
+ iface = rx_intf, delay = 0)
else:
self.send_igmp_leave(self.groups[:self.num_groups],
src_list = self.src_list,
- iface = 'veth0', delay = 0)
+ iface = rx_intf, delay = 0)
self.iterations += 1
v ^= 1
reactor.callLater(1.0 + 0.5*self.num_groups,