]> git.proxmox.com Git - mirror_frr.git/blame - tests/topotests/bgp_default_route_route_map_match_set/test_bgp_default-originate_route-map_match_set.py
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / tests / topotests / bgp_default_route_route_map_match_set / test_bgp_default-originate_route-map_match_set.py
CommitLineData
462b3067 1#!/usr/bin/env python
acddc0ed 2# SPDX-License-Identifier: ISC
462b3067 3
55b15c38 4# Copyright (c) 2020 by
462b3067
DA
5# Donatas Abraitis <donatas.abraitis@gmail.com>
6#
462b3067
DA
7
8"""
55b15c38
DA
9Test if default-originate works with match operations.
10And verify if set operations work as well.
462b3067
DA
11"""
12
13import os
14import sys
15import json
462b3067
DA
16import pytest
17import functools
18
19CWD = os.path.dirname(os.path.realpath(__file__))
787e7624 20sys.path.append(os.path.join(CWD, "../"))
462b3067
DA
21
22# pylint: disable=C0413
23from lib import topotest
24from lib.topogen import Topogen, TopoRouter, get_topogen
462b3067 25
787e7624 26
bf3a0a9a
DS
27pytestmark = [pytest.mark.bgpd]
28
29
e82b531d
CH
30def build_topo(tgen):
31 for routern in range(1, 3):
32 tgen.add_router("r{}".format(routern))
462b3067 33
e82b531d
CH
34 switch = tgen.add_switch("s1")
35 switch.add_link(tgen.gears["r1"])
36 switch.add_link(tgen.gears["r2"])
462b3067 37
462b3067
DA
38
39def setup_module(mod):
e82b531d 40 tgen = Topogen(build_topo, mod.__name__)
462b3067
DA
41 tgen.start_topology()
42
43 router_list = tgen.routers()
44
e5f0ed14 45 for i, (rname, router) in enumerate(router_list.items(), 1):
462b3067 46 router.load_config(
787e7624 47 TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
462b3067
DA
48 )
49 router.load_config(
787e7624 50 TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
462b3067
DA
51 )
52
53 tgen.start_router()
54
787e7624 55
462b3067
DA
56def teardown_module(mod):
57 tgen = get_topogen()
58 tgen.stop_topology()
59
787e7624 60
462b3067
DA
61def test_bgp_default_originate_route_map():
62 tgen = get_topogen()
63
64 if tgen.routers_have_failure():
65 pytest.skip(tgen.errors)
66
787e7624 67 router = tgen.gears["r2"]
462b3067
DA
68
69 def _bgp_converge(router):
70 output = json.loads(router.vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
71 expected = {
787e7624 72 "192.168.255.1": {
73 "bgpState": "Established",
74 "addressFamilyInfo": {"ipv4Unicast": {"acceptedPrefixCounter": 1}},
462b3067
DA
75 }
76 }
77 return topotest.json_cmp(output, expected)
78
79 def _bgp_default_route_has_metric(router):
80 output = json.loads(router.vtysh_cmd("show ip bgp 0.0.0.0/0 json"))
cc54c072 81 expected = {
68d4b72f
IR
82 "paths": [
83 {
84 "aspath": {"string": "65000 65000 65000 65000"},
85 "metric": 123,
86 "community": None,
87 }
88 ]
cc54c072 89 }
462b3067
DA
90 return topotest.json_cmp(output, expected)
91
92 test_func = functools.partial(_bgp_converge, router)
55b15c38 93 success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
462b3067
DA
94
95 assert result is None, 'Failed to see bgp convergence in "{}"'.format(router)
96
97 test_func = functools.partial(_bgp_default_route_has_metric, router)
55b15c38 98 success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
462b3067 99
787e7624 100 assert (
101 result is None
102 ), 'Failed to see applied metric for default route in "{}"'.format(router)
103
462b3067 104
787e7624 105if __name__ == "__main__":
462b3067
DA
106 args = ["-s"] + sys.argv[1:]
107 sys.exit(pytest.main(args))