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,