Add JVM options for ONOS Container to test more than 10,000 routes.
diff --git a/src/test/utils/CordContainer.py b/src/test/utils/CordContainer.py
index 7d902a1..0d26630 100644
--- a/src/test/utils/CordContainer.py
+++ b/src/test/utils/CordContainer.py
@@ -165,7 +165,8 @@
class Onos(Container):
quagga_config = ( { 'bridge' : 'quagga-br', 'ip': '10.10.0.4', 'mask' : 16 }, )
- env = { 'ONOS_APPS' : 'drivers,openflow,proxyarp,aaa,igmp,vrouter' }
+ JAVA_OPTS = '-Xms8G -Xmx8G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode'#-XX:+PrintGCDetails -XX:+PrintGCTimeStamps'
+ env = { 'ONOS_APPS' : 'drivers,openflow,proxyarp,aaa,igmp,vrouter', 'JAVA_OPTS' : JAVA_OPTS }
ports = [ 8181, 8101, 9876, 6653, 6633, 2000, 2620 ]
host_config_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'setup/onos-config')
guest_config_dir = '/root/onos/config'
diff --git a/src/test/vrouter/vrouterTest.py b/src/test/vrouter/vrouterTest.py
index c1b77e8..723e256 100644
--- a/src/test/vrouter/vrouterTest.py
+++ b/src/test/vrouter/vrouterTest.py
@@ -253,7 +253,7 @@
break
cls.network_list = network_list
zebra_routes = '\n'.join(net_list)
- log.info('Zebra routes: \n:%s\n' %cls.zebra_conf + zebra_routes)
+ #log.info('Zebra routes: \n:%s\n' %cls.zebra_conf + zebra_routes)
return cls.zebra_conf + zebra_routes
@classmethod
@@ -280,8 +280,9 @@
src_mac = '00:00:00:00:00:02'
src_ip = '1.1.1.1'
self.success = False if positive_test else True
- timeout = 5 if positive_test else 1
+ timeout = 10 if positive_test else 1
count = 2 if positive_test else 1
+ self.start_sending = True
def recv_task():
def recv_cb(pkt):
log.info('Pkt seen with ingress ip %s, egress ip %s' %(pkt[IP].src, pkt[IP].dst))
@@ -289,6 +290,7 @@
sniff(count=count, timeout=timeout,
lfilter = lambda p: IP in p and p[IP].dst == dst_ip and p[IP].src == src_ip,
prn = recv_cb, iface = self.port_map[ingress])
+ self.start_sending = False
t = threading.Thread(target = recv_task)
t.start()
@@ -297,7 +299,8 @@
pkt = L2/L3
log.info('Sending a packet with dst ip %s, dst mac %s on port %s to verify if flows are correct' %
(dst_ip, dst_mac, self.port_map[egress]))
- sendp(pkt, count=50, iface = self.port_map[egress])
+ while self.start_sending is True:
+ sendp(pkt, count=50, iface = self.port_map[egress])
t.join()
assert_equal(self.success, True)
@@ -326,13 +329,15 @@
##Now verify
hosts = json.loads(self.cli.hosts(jsonFormat = True))
log.info('Discovered hosts: %s' %hosts)
- routes = json.loads(self.cli.routes(jsonFormat = True))
- #log.info('Routes: %s' %routes)
- assert_equal(len(routes['routes4']), networks)
- flows = json.loads(self.cli.flows(jsonFormat = True))
- flows = filter(lambda f: f['flows'], flows)
- #log.info('Flows: %s' %flows)
- assert_not_equal(len(flows), 0)
+ ##We read from cli if we expect less number of routes to avoid cli timeouts
+ if networks <= 10000:
+ routes = json.loads(self.cli.routes(jsonFormat = True))
+ #log.info('Routes: %s' %routes)
+ assert_equal(len(routes['routes4']), networks)
+ flows = json.loads(self.cli.flows(jsonFormat = True))
+ flows = filter(lambda f: f['flows'], flows)
+ #log.info('Flows: %s' %flows)
+ assert_not_equal(len(flows), 0)
self.vrouter_traffic_verify()
if positive_test is False:
self.__vrouter_network_verify_negative(networks, peers = peers)
@@ -345,16 +350,18 @@
log.info('Stopping Quagga container')
quaggaStop = QuaggaStopWrapper()
time.sleep(2)
- routes = json.loads(self.cli.routes(jsonFormat = True))
- #Verify routes have been removed
- if routes and routes.has_key('routes4'):
- assert_equal(len(routes['routes4']), 0)
+ if networks <= 10000:
+ routes = json.loads(self.cli.routes(jsonFormat = True))
+ #Verify routes have been removed
+ if routes and routes.has_key('routes4'):
+ assert_equal(len(routes['routes4']), 0)
self.vrouter_traffic_verify(positive_test = False)
log.info('OVS flows have been removed successfully after Quagga was stopped')
self.start_quagga(networks = networks)
##Verify the flows again after restarting quagga back
- routes = json.loads(self.cli.routes(jsonFormat = True))
- assert_equal(len(routes['routes4']), networks)
+ if networks <= 10000:
+ routes = json.loads(self.cli.routes(jsonFormat = True))
+ assert_equal(len(routes['routes4']), networks)
self.vrouter_traffic_verify()
log.info('OVS flows have been successfully reinstalled after Quagga was restarted')