diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/lib/base.py | 5 | ||||
-rw-r--r-- | test/lib/gobgp.py | 2 | ||||
-rw-r--r-- | test/scenario_test/aspath_test.py | 15 |
3 files changed, 20 insertions, 2 deletions
diff --git a/test/lib/base.py b/test/lib/base.py index 86a339c7..907050bc 100644 --- a/test/lib/base.py +++ b/test/lib/base.py @@ -311,7 +311,7 @@ class BGPContainer(Container): flowspec=False, bridge='', reload_config=True, as2=False, graceful_restart=None, local_as=None, prefix_limit=None, v6=False, llgr=None, vrf='', interface='', allow_as_in=0, - remove_private_as=None): + remove_private_as=None, replace_peer_as=False): neigh_addr = '' local_addr = '' it = itertools.product(self.ip_addrs, peer.ip_addrs) @@ -354,7 +354,8 @@ class BGPContainer(Container): 'llgr': llgr, 'vrf': vrf, 'allow_as_in': allow_as_in, - 'remove_private_as': remove_private_as} + 'remove_private_as': remove_private_as, + 'replace_peer_as': replace_peer_as} if self.is_running and reload_config: self.create_config() self.reload_config() diff --git a/test/lib/gobgp.py b/test/lib/gobgp.py index 92e19f07..26847c77 100644 --- a/test/lib/gobgp.py +++ b/test/lib/gobgp.py @@ -361,6 +361,8 @@ class GoBGPContainer(BGPContainer): n['as-path-options'] = {'config': {}} if info['allow_as_in'] > 0: n['as-path-options']['config']['allow-own-as'] = info['allow_as_in'] + if info['replace_peer_as']: + n['as-path-options']['config']['replace-peer-as'] = info['replace_peer_as'] if ':' in info['local_addr']: n['transport']['config']['local-address'] = info['local_addr'].split('/')[0] diff --git a/test/scenario_test/aspath_test.py b/test/scenario_test/aspath_test.py index 5539cfde..f6087c46 100644 --- a/test/scenario_test/aspath_test.py +++ b/test/scenario_test/aspath_test.py @@ -115,6 +115,21 @@ class GoBGPTestBase(unittest.TestCase): time.sleep(1) self.assertTrue(g4.get_global_rib()[0]['paths'][0]['aspath'] == [100, 100, 100, 100]) + def test_07_check_replace_peer_as(self): + g5 = GoBGPContainer(name='g5', asn=100, router_id='192.168.0.6', + ctn_image_name=parser_option.gobgp_image, + log_level=parser_option.gobgp_log_level) + time.sleep(g5.run()) + + g4 = self.ctns['g4'] + g4.add_peer(g5, replace_peer_as=True) + g5.add_peer(g4) + + g4.wait_for(expected_state=BGP_FSM_ESTABLISHED, peer=g5) + + time.sleep(1) + self.assertTrue(g5.get_global_rib()[0]['paths'][0]['aspath'] == [200, 200, 200, 200, 200]) + if __name__ == '__main__': output = local("which docker 2>&1 > /dev/null ; echo $?", capture=True) |