]> git.proxmox.com Git - mirror_frr.git/blob - tests/topotests/bgp_suppress_fib/test_bgp_suppress_fib.py
tests: remove legacy Topo class (fixes many pylint errors)
[mirror_frr.git] / tests / topotests / bgp_suppress_fib / test_bgp_suppress_fib.py
1 #!/usr/bin/env python
2
3 #
4 # test_bgp_suppress_fib.py
5 #
6 # Copyright (c) 2019 by
7 #
8 # Permission to use, copy, modify, and/or distribute this software
9 # for any purpose with or without fee is hereby granted, provided
10 # that the above copyright notice and this permission notice appear
11 # in all copies.
12 #
13 # THE SOFTWARE IS PROVIDED "AS IS" AND NETDEF DISCLAIMS ALL WARRANTIES
14 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NETDEF BE LIABLE FOR
16 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
17 # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18 # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
19 # ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
20 # OF THIS SOFTWARE.
21 #
22
23 """
24 """
25
26 import os
27 import sys
28 import json
29 import time
30 import pytest
31 from functools import partial
32 from time import sleep
33
34 CWD = os.path.dirname(os.path.realpath(__file__))
35 sys.path.append(os.path.join(CWD, "../"))
36
37 # pylint: disable=C0413
38 from lib import topotest
39 from lib.topogen import Topogen, TopoRouter, get_topogen
40 from lib.topolog import logger
41 from lib.micronet_compat import Topo
42
43 pytestmark = [pytest.mark.bgpd]
44
45
46 def build_topo(tgen):
47 for routern in range(1, 4):
48 tgen.add_router("r{}".format(routern))
49
50 switch = tgen.add_switch("s1")
51 switch.add_link(tgen.gears["r1"])
52 switch.add_link(tgen.gears["r2"])
53
54 switch = tgen.add_switch("s2")
55 switch.add_link(tgen.gears["r2"])
56 switch.add_link(tgen.gears["r3"])
57
58
59 def setup_module(mod):
60 tgen = Topogen(build_topo, mod.__name__)
61 tgen.start_topology()
62
63 router_list = tgen.routers()
64
65 for i, (rname, router) in enumerate(router_list.items(), 1):
66 router.load_config(
67 TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
68 )
69 router.load_config(
70 TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
71 )
72
73 tgen.start_router()
74
75
76 def teardown_module(mod):
77 tgen = get_topogen()
78 tgen.stop_topology()
79
80
81 def test_bgp_route():
82 tgen = get_topogen()
83
84 if tgen.routers_have_failure():
85 pytest.skip(tgen.errors)
86
87 r3 = tgen.gears["r3"]
88
89 sleep(5)
90
91 json_file = "{}/r3/v4_route.json".format(CWD)
92 expected = json.loads(open(json_file).read())
93
94 test_func = partial(
95 topotest.router_json_cmp,
96 r3,
97 "show ip route 40.0.0.0 json",
98 expected,
99 )
100 _, result = topotest.run_and_expect(test_func, None, count=2, wait=0.5)
101 assertmsg = '"r3" JSON output mismatches'
102 assert result is None, assertmsg
103
104 json_file = "{}/r3/v4_route2.json".format(CWD)
105 expected = json.loads(open(json_file).read())
106
107 test_func = partial(
108 topotest.router_json_cmp,
109 r3,
110 "show ip route 50.0.0.0 json",
111 expected,
112 )
113 _, result = topotest.run_and_expect(test_func, None, count=3, wait=0.5)
114 assertmsg = '"r3" JSON output mismatches'
115 assert result is None, assertmsg
116
117
118 if __name__ == "__main__":
119 args = ["-s"] + sys.argv[1:]
120 sys.exit(pytest.main(args))