]> git.proxmox.com Git - mirror_frr.git/blame - tests/topotests/bgp_default_afi_safi/test_bgp-default-afi-safi.py
tests: fix pylint test errors
[mirror_frr.git] / tests / topotests / bgp_default_afi_safi / test_bgp-default-afi-safi.py
CommitLineData
484ff489
DA
1#!/usr/bin/env python
2
3#
4# Copyright (c) 2021 by
5# Donatas Abraitis <donatas.abraitis@gmail.com>
6#
7# Permission to use, copy, modify, and/or distribute this software
8# for any purpose with or without fee is hereby granted, provided
9# that the above copyright notice and this permission notice appear
10# in all copies.
11#
12# THE SOFTWARE IS PROVIDED "AS IS" AND NETDEF DISCLAIMS ALL WARRANTIES
13# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NETDEF BE LIABLE FOR
15# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
16# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
17# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
18# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
19# OF THIS SOFTWARE.
20#
21
22"""
b01830dc
TA
23Test if `bgp default ipv4-unicast`, `bgp default ipv6-unicast`
24and `bgp default l2vpn-evpn` commands work as expected.
484ff489
DA
25
26STEP 1: 'Check if neighbor 192.168.255.254 is enabled for ipv4 address-family only'
27STEP 2: 'Check if neighbor 192.168.255.254 is enabled for ipv6 address-family only'
b01830dc
TA
28STEP 3: 'Check if neighbor 192.168.255.254 is enabled for l2vpn evpn address-family only'
29STEP 4: 'Check if neighbor 192.168.255.254 is enabled for ipv4/ipv6 unicast and l2vpn evpn address-families'
484ff489
DA
30"""
31
32import os
33import sys
34import json
35import pytest
36import functools
37
ad889e0d
DA
38pytestmark = [pytest.mark.bgpd]
39
484ff489
DA
40CWD = os.path.dirname(os.path.realpath(__file__))
41sys.path.append(os.path.join(CWD, "../"))
42
43# pylint: disable=C0413
44from lib import topotest
45from lib.topogen import Topogen, TopoRouter, get_topogen
46from lib.topolog import logger
8db751b8 47from lib.micronet_compat import Topo
484ff489
DA
48from lib.common_config import step
49
bf3a0a9a
DS
50pytestmark = [pytest.mark.bgpd]
51
484ff489
DA
52
53class TemplateTopo(Topo):
54 def build(self, *_args, **_opts):
55 tgen = get_topogen(self)
56
57 for routern in range(1, 5):
58 tgen.add_router("r{}".format(routern))
59
60 switch = tgen.add_switch("s1")
61 switch.add_link(tgen.gears["r1"])
62 switch.add_link(tgen.gears["r2"])
63 switch.add_link(tgen.gears["r3"])
64 switch.add_link(tgen.gears["r4"])
65
66
67def setup_module(mod):
68 tgen = Topogen(TemplateTopo, mod.__name__)
69 tgen.start_topology()
70
71 router_list = tgen.routers()
72
73 for i, (rname, router) in enumerate(router_list.items(), 1):
74 router.load_config(
75 TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
76 )
77 router.load_config(
78 TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
79 )
80
81 tgen.start_router()
82
83
84def teardown_module(mod):
85 tgen = get_topogen()
86 tgen.stop_topology()
87
88
89def test_bgp_default_ipv4_ipv6_unicast():
90 tgen = get_topogen()
91
92 if tgen.routers_have_failure():
93 pytest.skip(tgen.errors)
94
95 step("Check if neighbor 192.168.255.254 is enabled for ipv4 address-family only")
96
97 def _bgp_neighbor_ipv4_af_only():
98 tgen.gears["r1"].vtysh_cmd(
99 "conf t\nrouter bgp\nneighbor 192.168.255.254 remote-as external"
100 )
101
102 output = json.loads(tgen.gears["r1"].vtysh_cmd("show bgp summary json"))
103
b01830dc 104 if len(output.keys()) == 1 and "ipv4Unicast" in output:
484ff489
DA
105 return True
106 return False
107
108 assert _bgp_neighbor_ipv4_af_only() == True
109
110 step("Check if neighbor 192.168.255.254 is enabled for ipv6 address-family only")
111
112 def _bgp_neighbor_ipv6_af_only():
113 tgen.gears["r2"].vtysh_cmd(
114 "conf t\nrouter bgp\nneighbor 192.168.255.254 remote-as external"
115 )
116
117 output = json.loads(tgen.gears["r2"].vtysh_cmd("show bgp summary json"))
118
b01830dc 119 if len(output.keys()) == 1 and "ipv6Unicast" in output:
484ff489
DA
120 return True
121 return False
122
123 assert _bgp_neighbor_ipv6_af_only() == True
124
b01830dc 125 step("Check if neighbor 192.168.255.254 is enabled for evpn address-family only")
484ff489 126
b01830dc 127 def _bgp_neighbor_evpn_af_only():
484ff489
DA
128 tgen.gears["r3"].vtysh_cmd(
129 "conf t\nrouter bgp\nneighbor 192.168.255.254 remote-as external"
130 )
131
132 output = json.loads(tgen.gears["r3"].vtysh_cmd("show bgp summary json"))
133
b01830dc
TA
134 if len(output.keys()) == 1 and "l2VpnEvpn" in output:
135 return True
136 return False
137
138 assert _bgp_neighbor_evpn_af_only() == True
139
140 step(
141 "Check if neighbor 192.168.255.254 is enabled for ipv4/ipv6 unicast and evpn address-families"
142 )
143
144 def _bgp_neighbor_ipv4_ipv6_and_evpn_af():
145 tgen.gears["r4"].vtysh_cmd(
146 "conf t\nrouter bgp\nneighbor 192.168.255.254 remote-as external"
147 )
148
149 output = json.loads(tgen.gears["r4"].vtysh_cmd("show bgp summary json"))
150
151 if (
152 len(output.keys()) == 3
153 and "ipv4Unicast" in output
154 and "ipv6Unicast" in output
155 and "l2VpnEvpn" in output
156 ):
484ff489
DA
157 return True
158 return False
159
b01830dc 160 assert _bgp_neighbor_ipv4_ipv6_and_evpn_af() == True
484ff489
DA
161
162
163if __name__ == "__main__":
164 args = ["-s"] + sys.argv[1:]
165 sys.exit(pytest.main(args))