blob: a4712ea3ef6fcf0180dc416f9fe0aa135eafc9dd [file] [log] [blame]
Chetan Gaonker3533faa2016-04-25 17:50:14 -07001import unittest
2from nose.tools import *
3from scapy.all import *
4from OnosCtrl import OnosCtrl
5from OltConfig import OltConfig
6from OnosFlowCtrl import OnosFlowCtrl, get_mac
7from onosclidriver import OnosCliDriver
Chetan Gaonker6cf6e472016-04-26 14:41:51 -07008from CordContainer import Container, Onos, Quagga
9from CordTestServer import cord_test_onos_restart, cord_test_quagga_restart
Chetan Gaonker3533faa2016-04-25 17:50:14 -070010from portmaps import g_subscriber_port_map
11import threading
12import time
13import os
14import json
15log.setLevel('INFO')
16
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -070017class QuaggaStopWrapper(Container):
18
19 def __init__(self, name = 'cord-quagga', image = 'cord-test/quagga', tag = 'latest'):
20 super(QuaggaStopWrapper, self).__init__(name, image, tag = tag)
21 if self.exists():
22 self.kill()
23
Chetan Gaonker3533faa2016-04-25 17:50:14 -070024class vrouter_exchange(unittest.TestCase):
25
26 apps = ('org.onosproject.vrouter', 'org.onosproject.fwd')
27 device_id = 'of:' + get_mac('ovsbr0')
28 vrouter_device_dict = { "devices" : {
29 "{}".format(device_id) : {
30 "basic" : {
31 "driver" : "softrouter"
32 }
33 }
34 },
35 }
36 zebra_conf = '''
37password zebra
38log stdout
39service advanced-vty
40!
Chetan Gaonkerfd3d6502016-05-03 13:23:07 -070041!debug zebra rib
42!debug zebra kernel
43!debug zebra fpm
Chetan Gaonker3533faa2016-04-25 17:50:14 -070044!
45!interface eth1
46! ip address 10.10.0.3/16
47line vty
48 exec-timeout 0 0
49'''
50 test_path = os.path.dirname(os.path.realpath(__file__))
51 quagga_config_path = os.path.join(test_path, '..', 'setup/quagga-config')
52 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -070053 GATEWAY = '192.168.10.50'
Chetan Gaonkerfe551a22016-04-29 17:34:57 -070054 INGRESS_PORT = 1
55 EGRESS_PORT = 2
Chetan Gaonker3533faa2016-04-25 17:50:14 -070056 MAX_PORTS = 100
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -070057 peer_list = [ ('192.168.10.1', '00:00:00:00:00:01'), ('192.168.11.1', '00:00:00:00:02:01'), ]
Chetan Gaonkerfe551a22016-04-29 17:34:57 -070058 network_list = []
Chetan Gaonker3533faa2016-04-25 17:50:14 -070059
60 @classmethod
61 def setUpClass(cls):
62 ''' Activate the vrouter apps'''
63 cls.olt = OltConfig()
64 cls.port_map = cls.olt.olt_port_map()
65 if not cls.port_map:
66 cls.port_map = g_subscriber_port_map
Chetan Gaonkerfe551a22016-04-29 17:34:57 -070067 #cls.vrouter_host_load(host = cls.GATEWAY)
Chetan Gaonker3533faa2016-04-25 17:50:14 -070068 time.sleep(3)
69
70 @classmethod
71 def tearDownClass(cls):
72 '''Deactivate the vrouter apps'''
Chetan Gaonkerfe551a22016-04-29 17:34:57 -070073 #cls.vrouter_host_unload()
Chetan Gaonker3533faa2016-04-25 17:50:14 -070074
75 def cliEnter(self):
76 retries = 0
77 while retries < 3:
78 self.cli = OnosCliDriver(connect = True)
79 if self.cli.handle:
80 break
81 else:
82 retries += 1
83 time.sleep(2)
84
85 def cliExit(self):
86 self.cli.disconnect()
87
88 @classmethod
89 def onos_load_config(cls, config):
90 status, code = OnosCtrl.config(config)
91 if status is False:
92 log.info('JSON request returned status %d' %code)
93 assert_equal(status, True)
94
95 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -070096 def vrouter_config_get(cls, networks = 4, peers = 1):
97 vrouter_configs = cls.generate_vrouter_conf(networks = networks, peers = peers)
Chetan Gaonker3533faa2016-04-25 17:50:14 -070098 return vrouter_configs
99 ##ONOS router does not support dynamic reconfigurations
100 #for config in vrouter_configs:
101 # cls.onos_load_config(config)
102 # time.sleep(5)
103
104 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700105 def vrouter_host_load(cls):
106 index = 1
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700107 for host,_ in cls.peer_list:
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700108 iface = cls.port_map[index]
109 index += 1
110 config_cmds = ( 'ifconfig {0} {1}'.format(iface, host),
111 'arping -I {0} {1} -c 2'.format(iface, host),
112 )
113 for cmd in config_cmds:
114 os.system(cmd)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700115
116 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700117 def vrouter_host_unload(cls):
118 index = 1
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700119 for host,_ in cls.peer_list:
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700120 iface = cls.port_map[index]
121 index += 1
122 config_cmds = ('ifconfig {} 0'.format(iface), )
123 for cmd in config_cmds:
124 os.system(cmd)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700125
126 @classmethod
127 def start_onos(cls, network_cfg = None):
128 if type(network_cfg) is tuple:
129 res = []
130 for v in network_cfg:
131 res += v.items()
132 config = dict(res)
133 else:
134 config = network_cfg
135 log.info('Restarting ONOS with new network configuration')
136 cfg = json.dumps(config)
137 with open('{}/network-cfg.json'.format(cls.onos_config_path), 'w') as f:
138 f.write(cfg)
139
140 return cord_test_onos_restart()
141
142 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700143 def start_quagga(cls, networks = 4):
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700144 log.info('Restarting Quagga container with configuration for %d networks' %(networks))
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700145 config = cls.generate_conf(networks = networks)
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700146 host_config_file = '{}/testrib_gen.conf'.format(Quagga.host_quagga_config)
147 guest_config_file = os.path.join(Quagga.guest_quagga_config, 'testrib_gen.conf')
148 with open(host_config_file, 'w') as f:
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700149 f.write(config)
Chetan Gaonkerfd3d6502016-05-03 13:23:07 -0700150 if networks <= 10000:
151 boot_delay = 25
152 else:
153 boot_delay = 75
154 cord_test_quagga_restart(config_file = guest_config_file, boot_delay = boot_delay)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700155
156 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700157 def zgenerate_vrouter_conf(cls, networks = 4):
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700158 num = 0
159 start_network = ( 11 << 24) | ( 0 << 16) | ( 0 << 8) | 0
160 end_network = ( 200 << 24 ) | ( 0 << 16) | (0 << 8) | 0
161 ports_dict = { 'ports' : {} }
162 interface_list = []
163 for n in xrange(start_network, end_network):
164 if n & 255 == 0:
165 port_map = ports_dict['ports']
166 port = num + 1 if num < cls.MAX_PORTS - 1 else cls.MAX_PORTS - 1
167 device_port_key = '{0}/{1}'.format(cls.device_id, port)
168 try:
169 interfaces = port_map[device_port_key]['interfaces']
170 except:
171 port_map[device_port_key] = { 'interfaces' : [] }
172 interfaces = port_map[device_port_key]['interfaces']
173
174 ips = '%d.%d.%d.2/24'%( (n >> 24) & 0xff, ( ( n >> 16) & 0xff ), ( (n >> 8 ) & 0xff ) )
175 if num < cls.MAX_PORTS - 1:
176 interface_dict = { 'name' : 'b1-{}'.format(port), 'ips': [ips], 'mac' : '00:00:00:00:00:01' }
177 interfaces.append(interface_dict)
178 interface_list.append(interface_dict['name'])
179 else:
180 interfaces[0]['ips'].append(ips)
181 num += 1
182 if num == networks:
183 break
184 quagga_dict = { 'apps': { 'org.onosproject.router' : { 'router' : {} } } }
185 quagga_router_dict = quagga_dict['apps']['org.onosproject.router']['router']
186 quagga_router_dict['ospfEnabled'] = True
187 quagga_router_dict['interfaces'] = interface_list
188 quagga_router_dict['controlPlaneConnectPoint'] = '{0}/{1}'.format(cls.device_id,
189 networks + 1 if networks < cls.MAX_PORTS else cls.MAX_PORTS )
190 return (cls.vrouter_device_dict, ports_dict, quagga_dict)
191
192 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700193 def generate_vrouter_conf(cls, networks = 4, peers = 1):
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700194 num = 0
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700195 start_peer = ( 192 << 24) | ( 168 << 16) | (10 << 8) | 0
196 end_peer = ( 200 << 24 ) | (168 << 16) | (10 << 8) | 0
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700197 local_network = end_peer + 1
198 ports_dict = { 'ports' : {} }
199 interface_list = []
200 peer_list = []
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700201 for n in xrange(start_peer, end_peer, 256):
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700202 port_map = ports_dict['ports']
203 port = num + 1 if num < cls.MAX_PORTS - 1 else cls.MAX_PORTS - 1
204 device_port_key = '{0}/{1}'.format(cls.device_id, port)
205 try:
206 interfaces = port_map[device_port_key]['interfaces']
207 except:
208 port_map[device_port_key] = { 'interfaces' : [] }
209 interfaces = port_map[device_port_key]['interfaces']
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700210 ip = n + 2
211 peer_ip = n + 1
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700212 ips = '%d.%d.%d.%d/24'%( (ip >> 24) & 0xff, ( (ip >> 16) & 0xff ), ( (ip >> 8 ) & 0xff ), ip & 0xff)
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700213 peer = '%d.%d.%d.%d' % ( (peer_ip >> 24) & 0xff, ( ( peer_ip >> 16) & 0xff ), ( (peer_ip >> 8 ) & 0xff ), peer_ip & 0xff )
214 mac = RandMAC()._fix()
215 peer_list.append((peer, mac))
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700216 if num < cls.MAX_PORTS - 1:
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700217 interface_dict = { 'name' : 'b1-{}'.format(port), 'ips': [ips], 'mac' : mac }
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700218 interfaces.append(interface_dict)
219 interface_list.append(interface_dict['name'])
220 else:
221 interfaces[0]['ips'].append(ips)
222 num += 1
223 if num == peers:
224 break
225 quagga_dict = { 'apps': { 'org.onosproject.router' : { 'router' : {}, 'bgp' : { 'bgpSpeakers' : [] } } } }
226 quagga_router_dict = quagga_dict['apps']['org.onosproject.router']['router']
227 quagga_router_dict['ospfEnabled'] = True
228 quagga_router_dict['interfaces'] = interface_list
229 quagga_router_dict['controlPlaneConnectPoint'] = '{0}/{1}'.format(cls.device_id, peers + 1)
230
231 #bgp_speaker_dict = { 'apps': { 'org.onosproject.router' : { 'bgp' : { 'bgpSpeakers' : [] } } } }
232 bgp_speakers_list = quagga_dict['apps']['org.onosproject.router']['bgp']['bgpSpeakers']
233 speaker_dict = {}
234 speaker_dict['name'] = 'bgp{}'.format(peers+1)
235 speaker_dict['connectPoint'] = '{0}/{1}'.format(cls.device_id, peers + 1)
236 speaker_dict['peers'] = peer_list
237 bgp_speakers_list.append(speaker_dict)
238 cls.peer_list = peer_list
239 return (cls.vrouter_device_dict, ports_dict, quagga_dict)
240
241 @classmethod
242 def generate_conf(cls, networks = 4):
243 num = 0
244 start_network = ( 11 << 24) | ( 10 << 16) | ( 10 << 8) | 0
245 end_network = ( 172 << 24 ) | ( 0 << 16) | (0 << 8) | 0
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700246 net_list = []
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700247 peer_list = cls.peer_list
248 network_list = []
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700249 for n in xrange(start_network, end_network, 256):
250 net = '%d.%d.%d.0'%( (n >> 24) & 0xff, ( ( n >> 16) & 0xff ), ( (n >> 8 ) & 0xff ) )
251 network_list.append(net)
252 gateway = peer_list[num % len(peer_list)][0]
253 net_route = 'ip route {0}/24 {1}'.format(net, gateway)
254 net_list.append(net_route)
255 num += 1
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700256 if num == networks:
257 break
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700258 cls.network_list = network_list
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700259 zebra_routes = '\n'.join(net_list)
Chetan Gaonker68d95172016-05-03 11:16:59 -0700260 #log.info('Zebra routes: \n:%s\n' %cls.zebra_conf + zebra_routes)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700261 return cls.zebra_conf + zebra_routes
262
263 @classmethod
264 def vrouter_activate(cls, deactivate = False):
265 app = 'org.onosproject.vrouter'
266 onos_ctrl = OnosCtrl(app)
267 if deactivate is True:
268 onos_ctrl.deactivate()
269 else:
270 onos_ctrl.activate()
271 time.sleep(3)
272
273 @classmethod
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700274 def vrouter_configure(cls, networks = 4, peers = 1):
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700275 ##Deactivate vrouter
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700276 vrouter_configs = cls.vrouter_config_get(networks = networks, peers = peers)
Chetan Gaonker46b62d52016-04-26 10:08:42 -0700277 cls.start_onos(network_cfg = vrouter_configs)
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700278 cls.vrouter_host_load()
Chetan Gaonker02236ba2016-04-26 11:24:34 -0700279 ##Start quagga
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700280 cls.start_quagga(networks = networks)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700281 return vrouter_configs
282
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700283 def vrouter_port_send_recv(self, ingress, egress, dst_mac, dst_ip, positive_test = True):
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700284 src_mac = '00:00:00:00:00:02'
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700285 src_ip = '1.1.1.1'
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700286 self.success = False if positive_test else True
Chetan Gaonker68d95172016-05-03 11:16:59 -0700287 timeout = 10 if positive_test else 1
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700288 count = 2 if positive_test else 1
Chetan Gaonker68d95172016-05-03 11:16:59 -0700289 self.start_sending = True
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700290 def recv_task():
291 def recv_cb(pkt):
292 log.info('Pkt seen with ingress ip %s, egress ip %s' %(pkt[IP].src, pkt[IP].dst))
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700293 self.success = True if positive_test else False
294 sniff(count=count, timeout=timeout,
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700295 lfilter = lambda p: IP in p and p[IP].dst == dst_ip and p[IP].src == src_ip,
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700296 prn = recv_cb, iface = self.port_map[ingress])
Chetan Gaonker68d95172016-05-03 11:16:59 -0700297 self.start_sending = False
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700298
299 t = threading.Thread(target = recv_task)
300 t.start()
301 L2 = Ether(src = src_mac, dst = dst_mac)
302 L3 = IP(src = src_ip, dst = dst_ip)
303 pkt = L2/L3
304 log.info('Sending a packet with dst ip %s, dst mac %s on port %s to verify if flows are correct' %
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700305 (dst_ip, dst_mac, self.port_map[egress]))
Chetan Gaonker68d95172016-05-03 11:16:59 -0700306 while self.start_sending is True:
307 sendp(pkt, count=50, iface = self.port_map[egress])
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700308 t.join()
309 assert_equal(self.success, True)
310
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700311 def vrouter_traffic_verify(self, positive_test = True):
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700312 peers = len(self.peer_list)
313 egress = peers + 1
314 num = 0
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700315 num_hosts = 5 if positive_test else 1
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700316 for network in self.network_list:
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700317 num_ips = num_hosts
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700318 octets = network.split('.')
319 for i in xrange(num_ips):
320 octets[-1] = str(int(octets[-1]) + 1)
321 dst_ip = '.'.join(octets)
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700322 dst_mac = self.peer_list[ num % peers ] [1]
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700323 port = (num % peers)
324 ingress = port + 1
325 #Since peers are on the same network
326 ##Verify if flows are setup by sending traffic across
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700327 self.vrouter_port_send_recv(ingress, egress, dst_mac, dst_ip, positive_test = positive_test)
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700328 num += 1
329
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700330 def __vrouter_network_verify(self, networks, peers = 1, positive_test = True):
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700331 _, ports_map, egress_map = self.vrouter_configure(networks = networks, peers = peers)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700332 self.cliEnter()
333 ##Now verify
334 hosts = json.loads(self.cli.hosts(jsonFormat = True))
335 log.info('Discovered hosts: %s' %hosts)
Chetan Gaonker68d95172016-05-03 11:16:59 -0700336 ##We read from cli if we expect less number of routes to avoid cli timeouts
337 if networks <= 10000:
338 routes = json.loads(self.cli.routes(jsonFormat = True))
339 #log.info('Routes: %s' %routes)
340 assert_equal(len(routes['routes4']), networks)
341 flows = json.loads(self.cli.flows(jsonFormat = True))
342 flows = filter(lambda f: f['flows'], flows)
343 #log.info('Flows: %s' %flows)
344 assert_not_equal(len(flows), 0)
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700345 self.vrouter_traffic_verify()
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700346 if positive_test is False:
347 self.__vrouter_network_verify_negative(networks, peers = peers)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700348 self.cliExit()
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700349 self.vrouter_host_unload()
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700350 return True
351
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700352 def __vrouter_network_verify_negative(self, networks, peers = 1):
353 ##Stop quagga. Test traffic again to see if flows were removed
354 log.info('Stopping Quagga container')
355 quaggaStop = QuaggaStopWrapper()
356 time.sleep(2)
Chetan Gaonker68d95172016-05-03 11:16:59 -0700357 if networks <= 10000:
358 routes = json.loads(self.cli.routes(jsonFormat = True))
359 #Verify routes have been removed
360 if routes and routes.has_key('routes4'):
361 assert_equal(len(routes['routes4']), 0)
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700362 self.vrouter_traffic_verify(positive_test = False)
363 log.info('OVS flows have been removed successfully after Quagga was stopped')
364 self.start_quagga(networks = networks)
365 ##Verify the flows again after restarting quagga back
Chetan Gaonker68d95172016-05-03 11:16:59 -0700366 if networks <= 10000:
367 routes = json.loads(self.cli.routes(jsonFormat = True))
368 assert_equal(len(routes['routes4']), networks)
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700369 self.vrouter_traffic_verify()
370 log.info('OVS flows have been successfully reinstalled after Quagga was restarted')
371
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700372 def test_vrouter_1(self):
373 '''Test vrouter with 5 routes'''
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700374 res = self.__vrouter_network_verify(5, peers = 1)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700375 assert_equal(res, True)
376
377 def test_vrouter_2(self):
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700378 '''Test vrouter with 5 routes with 2 peers'''
379 res = self.__vrouter_network_verify(5, peers = 2)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700380 assert_equal(res, True)
381
382 def test_vrouter_3(self):
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700383 '''Test vrouter with 6 routes with 3 peers'''
384 res = self.__vrouter_network_verify(6, peers = 3)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700385 assert_equal(res, True)
386
387 def test_vrouter_4(self):
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700388 '''Test vrouter with 50 routes'''
389 res = self.__vrouter_network_verify(50, peers = 1)
Chetan Gaonker3533faa2016-04-25 17:50:14 -0700390 assert_equal(res, True)
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700391
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700392 def test_vrouter_5(self):
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700393 '''Test vrouter with 50 routes and 5 peers'''
394 res = self.__vrouter_network_verify(50, peers = 5)
395 assert_equal(res, True)
396
397 def test_vrouter_6(self):
398 '''Test vrouter with 100 routes'''
399 res = self.__vrouter_network_verify(100, peers = 1)
400 assert_equal(res, True)
401
402 def test_vrouter_7(self):
403 '''Test vrouter with 100 routes and 10 peers'''
404 res = self.__vrouter_network_verify(100, peers = 10)
405 assert_equal(res, True)
406
407 def test_vrouter_8(self):
408 '''Test vrouter with 300 routes'''
409 res = self.__vrouter_network_verify(300, peers = 1)
410 assert_equal(res, True)
411
412 def test_vrouter_9(self):
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700413 '''Test vrouter with 1000 routes'''
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700414 res = self.__vrouter_network_verify(1000, peers = 1)
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700415 assert_equal(res, True)
416
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700417 def test_vrouter_10(self):
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700418 '''Test vrouter with 10000 routes'''
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700419 res = self.__vrouter_network_verify(10000, peers = 1)
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700420 assert_equal(res, True)
Chetan Gaonkerfe551a22016-04-29 17:34:57 -0700421
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700422 @nottest
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700423 def test_vrouter_11(self):
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700424 '''Test vrouter with 100000 routes'''
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700425 res = self.__vrouter_network_verify(100000, peers = 1)
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700426 assert_equal(res, True)
427
428 @nottest
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700429 def test_vrouter_12(self):
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700430 '''Test vrouter with 1000000 routes'''
Chetan Gaonker8e25e1b2016-05-02 13:42:21 -0700431 res = self.__vrouter_network_verify(1000000, peers = 1)
Chetan Gaonker6cf6e472016-04-26 14:41:51 -0700432 assert_equal(res, True)
Chetan Gaonkerb6064fa2016-05-02 16:29:57 -0700433
434 def test_vrouter_13(self):
435 '''Test vrouter by installing 5 routes, removing Quagga and re-starting Quagga back'''
436 res = self.__vrouter_network_verify(5, peers = 1, positive_test = False)
437
438 def test_vrouter_14(self):
439 '''Test vrouter by installing 50 routes, removing Quagga and re-starting Quagga back'''
440 res = self.__vrouter_network_verify(50, peers = 1, positive_test = False)