]> git.proxmox.com Git - mirror_frr.git/blob - tests/topotests/bgp_comm-list_delete/test_bgp_comm-list_delete.py
topotests: Check if set-comm-list is working under route-map scope
[mirror_frr.git] / tests / topotests / bgp_comm-list_delete / test_bgp_comm-list_delete.py
1 #!/usr/bin/env python
2
3 #
4 # bgp_comm-list_delete.py
5 # Part of NetDEF Topology Tests
6 #
7 # Copyright (c) 2019 by
8 # Network Device Education Foundation, Inc. ("NetDEF")
9 #
10 # Permission to use, copy, modify, and/or distribute this software
11 # for any purpose with or without fee is hereby granted, provided
12 # that the above copyright notice and this permission notice appear
13 # in all copies.
14 #
15 # THE SOFTWARE IS PROVIDED "AS IS" AND NETDEF DISCLAIMS ALL WARRANTIES
16 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NETDEF BE LIABLE FOR
18 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
19 # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20 # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
21 # ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22 # OF THIS SOFTWARE.
23 #
24
25 """
26 bgp_comm-list_delete.py:
27
28 Test if works the following commands:
29 route-map test permit 10
30 set comm-list <arg> delete
31 """
32
33 import os
34 import sys
35 import json
36 import time
37 import pytest
38
39 CWD = os.path.dirname(os.path.realpath(__file__))
40 sys.path.append(os.path.join(CWD, '../'))
41
42 # pylint: disable=C0413
43 from lib import topotest
44 from lib.topogen import Topogen, TopoRouter, get_topogen
45 from lib.topolog import logger
46 from mininet.topo import Topo
47
48 class TemplateTopo(Topo):
49 def build(self, *_args, **_opts):
50 tgen = get_topogen(self)
51
52 for routern in range(1, 3):
53 tgen.add_router('r{}'.format(routern))
54
55 switch = tgen.add_switch('s1')
56 switch.add_link(tgen.gears['r1'])
57 switch.add_link(tgen.gears['r2'])
58
59 def setup_module(mod):
60 tgen = Topogen(TemplateTopo, mod.__name__)
61 tgen.start_topology()
62
63 router_list = tgen.routers()
64
65 for i, (rname, router) in enumerate(router_list.iteritems(), 1):
66 router.load_config(
67 TopoRouter.RD_ZEBRA,
68 os.path.join(CWD, '{}/zebra.conf'.format(rname))
69 )
70 router.load_config(
71 TopoRouter.RD_BGP,
72 os.path.join(CWD, '{}/bgpd.conf'.format(rname))
73 )
74
75 tgen.start_router()
76
77 def teardown_module(mod):
78 tgen = get_topogen()
79 tgen.stop_topology()
80
81 def test_bgp_maximum_prefix_invalid():
82 tgen = get_topogen()
83
84 if tgen.routers_have_failure():
85 pytest.skip(tgen.errors)
86
87 def _bgp_converge(router):
88 while True:
89 output = json.loads(tgen.gears[router].vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
90 if output['192.168.255.1']['bgpState'] == 'Established':
91 if output['192.168.255.1']['addressFamilyInfo']['IPv4 Unicast']['acceptedPrefixCounter'] == 2:
92 return True
93
94 def _bgp_comm_list_delete(router):
95 output = json.loads(tgen.gears[router].vtysh_cmd("show ip bgp 172.16.255.254/32 json"))
96 if '333:333' in output['paths'][0]['community']['list']:
97 return False
98 return True
99
100 if _bgp_converge('r2'):
101 assert _bgp_comm_list_delete('r2') == True
102
103 if __name__ == '__main__':
104 args = ["-s"] + sys.argv[1:]
105 sys.exit(pytest.main(args))