Add test cases to test subscriber multi-table support with ONOS using CPQD and a new ONOS app.
This would verify single channel multiple subscriber joins using cpqd.
ONOS multi-table support was found to be broken with cordmcast.
Hence a new app similar to cordmcast was added to verify if multi-table rules were provisioned with ONOS
cpqd pipeline driver.
Using a different subscriber port per subscriber and provisioning an uplink port to be used
for IGMP traffic, it was found that ONOS cpqd driver fails to provision multi-table flows using group ids.
The subscriberMultiTable tests uses the new cordigmp multitable app to provision multicast flows in ONOS
enabling the spring-open-cpqd pipeline driver with ONOS when using CPQD.
If you want to verify/run the subscriberMultiTable test, first rebuild the test container with cpqd using:
sudo cord-test.py build test
And then run the subscriberMultiTable test: test_subscriber_join_recv using:
cord-test.run run --radius -t subscriberMultiTable:subscriber_exchange.test_subscriber_join_recv -k
diff --git a/src/test/utils/OltConfig.py b/src/test/utils/OltConfig.py
index a9fa3c3..bb78563 100644
--- a/src/test/utils/OltConfig.py
+++ b/src/test/utils/OltConfig.py
@@ -56,6 +56,40 @@
else:
return None
+ def olt_port_map_multi(self):
+ if self.on_olt() and self.olt_conf.has_key('port_map'):
+ port_map = {}
+ if self.olt_conf['port_map'].has_key('ports'):
+ port_map['ports'] = self.olt_conf['port_map']['ports']
+ else:
+ port_map['ports'] = []
+ num_ports = int(self.olt_conf['port_map']['num_ports'])
+ port_map['port'] = self.olt_conf['port_map']['port']
+ for port in xrange(0, num_ports, 2):
+ port_map['ports'].append('veth{}'.format(port))
+ port_num = 1
+ port_map['uplink'] = int(self.olt_conf['uplink'])
+ port_list = []
+ ##build the port map and inverse port map
+ for port in port_map['ports']:
+ port_map[port_num] = port
+ port_map[port] = port_num
+ if port_num != port_map['uplink']:
+ ##create tx,rx map
+ port_list.append( (port_map['uplink'], port_num ) )
+ port_num += 1
+ port_map['start_vlan'] = 0
+ if self.olt_conf['port_map'].has_key('host'):
+ port_map['host'] = self.olt_conf['port_map']['host']
+ else:
+ port_map['host'] = 'ovsbr0'
+ if self.olt_conf['port_map'].has_key('start_vlan'):
+ port_map['start_vlan'] = int(self.olt_conf['port_map']['start_vlan'])
+
+ return port_map, port_list
+ else:
+ return None, None
+
def olt_device_data(self):
if self.on_olt():
accessDeviceDict = {}