summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorNaoto Hanaue <hanaue.naoto@po.ntts.co.jp>2015-09-17 20:45:24 +0900
committerNaoto Hanaue <hanaue.naoto@po.ntts.co.jp>2015-09-18 19:47:41 +0900
commitc47286abeef75bd6c46db11060d9ba5bf185ad01 (patch)
tree8c5f9c34d7d8e160c89f02c27154a15cf7edda4b /test
parentd53614ec889547db37573cef336a062895605047 (diff)
scenario_test: fix bug of bgp_zebra_test
container was wrong to check whether the reachable in the test. thus, modified to check the reachability between the correct container and implemented modifications of the logic associated with the above.
Diffstat (limited to 'test')
-rw-r--r--test/scenario_test/bgp_zebra_test.py26
-rw-r--r--test/scenario_test/lib/base.py9
-rw-r--r--test/scenario_test/lib/quagga.py9
3 files changed, 29 insertions, 15 deletions
diff --git a/test/scenario_test/bgp_zebra_test.py b/test/scenario_test/bgp_zebra_test.py
index 7f09f12b..9fbf8cfe 100644
--- a/test/scenario_test/bgp_zebra_test.py
+++ b/test/scenario_test/bgp_zebra_test.py
@@ -100,9 +100,9 @@ class GoBGPTestBase(unittest.TestCase):
q1 = self.quaggas['ipv4']
o1 = self.others['ipv4'][0]
- next_hop = g1.ip_addrs[1][1].split('/')[0]
- o1.add_static_route(self.bridges['ipv4']['br01'].subnet, next_hop)
- q1.get_reachablily('192.168.30.2')
+ next_hop = g1.ip_addrs[0][1].split('/')[0]
+ o1.add_static_route(self.bridges['ipv4']['br02'].subnet, next_hop)
+ q1.get_reachablily('192.168.10.1')
"""
No.3 check whether the ping is reachable in container
@@ -113,9 +113,9 @@ class GoBGPTestBase(unittest.TestCase):
q1 = self.quaggas['ipv4']
o2 = self.others['ipv4'][1]
- next_hop = q1.ip_addrs[0][1].split('/')[0]
- o2.add_static_route(self.bridges['ipv4']['br03'].subnet, next_hop)
- g1.get_reachablily('192.168.10.2')
+ next_hop = q1.ip_addrs[1][1].split('/')[0]
+ o2.add_static_route(self.bridges['ipv4']['br02'].subnet, next_hop)
+ g1.get_reachablily('192.168.30.2')
"""
No.4 start up ipv4 containers and check state
@@ -149,9 +149,10 @@ class GoBGPTestBase(unittest.TestCase):
q1 = self.quaggas['ipv6']
o1 = self.others['ipv6'][0]
- next_hop = g1.ip_addrs[1][1].split('/')[0]
- o1.add_static_route(self.bridges['ipv6']['br01'].subnet, next_hop)
- q1.get_reachablily('2001:30::2')
+ next_hop = g1.ip_addrs[0][1].split('/')[0]
+ g1.set_ipv6_forward()
+ o1.add_static_route(self.bridges['ipv6']['br02'].subnet, next_hop)
+ q1.get_reachablily('2001:10::1')
"""
No.6 check whether the ping is reachable in container
@@ -162,9 +163,10 @@ class GoBGPTestBase(unittest.TestCase):
q1 = self.quaggas['ipv6']
o2 = self.others['ipv6'][1]
- next_hop = q1.ip_addrs[0][1].split('/')[0]
- o2.add_static_route(self.bridges['ipv6']['br03'].subnet, next_hop)
- g1.get_reachablily('2001:10::2')
+ next_hop = q1.ip_addrs[1][1].split('/')[0]
+ q1.set_ipv6_forward()
+ o2.add_static_route(self.bridges['ipv6']['br02'].subnet, next_hop)
+ g1.get_reachablily('2001:30::2')
if __name__ == '__main__':
diff --git a/test/scenario_test/lib/base.py b/test/scenario_test/lib/base.py
index 79e97521..8a81c245 100644
--- a/test/scenario_test/lib/base.py
+++ b/test/scenario_test/lib/base.py
@@ -327,14 +327,13 @@ class BGPContainer(Container):
ping_cmd = 'ping6'
else:
raise Exception('unsupported route family: {0}'.format(version))
- cmd = '/bin/{0} -c 1 -w 1 {1}'.format(ping_cmd, addr)
-
+ cmd = '/bin/bash -c "/bin/{0} -c 1 -w 1 {1} | xargs echo"'.format(ping_cmd, addr)
interval = 1
count = 0
while True:
res = self.local(cmd, capture=True)
print colors.yellow(res)
- if '0% packet loss' in res:
+ if '1 packets received' in res and '0% packet loss':
break
time.sleep(interval)
count += interval
@@ -363,6 +362,10 @@ class BGPContainer(Container):
cmd = '/sbin/ip route add {0} via {1}'.format(network, next_hop)
self.local(cmd)
+ def set_ipv6_forward(self):
+ cmd = 'sysctl -w net.ipv6.conf.all.forwarding=1'
+ self.local(cmd)
+
def create_config(self):
raise Exception('implement create_config() method')
diff --git a/test/scenario_test/lib/quagga.py b/test/scenario_test/lib/quagga.py
index b881f6ed..3cd29618 100644
--- a/test/scenario_test/lib/quagga.py
+++ b/test/scenario_test/lib/quagga.py
@@ -158,12 +158,14 @@ class QuaggaBGPContainer(BGPContainer):
self._create_config_zebra()
def _create_config_bgp(self):
+
c = CmdBuffer()
c << 'hostname bgpd'
c << 'password zebra'
c << 'router bgp {0}'.format(self.asn)
c << 'bgp router-id {0}'.format(self.router_id)
+ version = 4
for peer, info in self.peers.iteritems():
version = netaddr.IPNetwork(info['neigh_addr']).version
n_addr = info['neigh_addr'].split('/')[0]
@@ -192,6 +194,13 @@ class QuaggaBGPContainer(BGPContainer):
else:
raise Exception('unsupported route faily: {0}'.format(route['rf']))
+ if self.zebra:
+ if version == 6:
+ c << 'address-family ipv6 unicast'
+ c << 'redistribute connected'
+ c << 'exit-address-family'
+ else:
+ c << 'redistribute connected'
for name, policy in self.policies.iteritems():
c << 'access-list {0} {1} {2}'.format(name, policy['type'],