]> git.proxmox.com Git - mirror_frr.git/blame - tests/topotests/bgp_maximum_prefix_invalid_update/test_bgp_maximum_prefix_invalid_update.py
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / tests / topotests / bgp_maximum_prefix_invalid_update / test_bgp_maximum_prefix_invalid_update.py
CommitLineData
513386b5 1#!/usr/bin/env python
acddc0ed 2# SPDX-License-Identifier: ISC
513386b5
DA
3
4#
5# bgp_local_as_private_remove.py
6# Part of NetDEF Topology Tests
7#
8# Copyright (c) 2019 by
9# Network Device Education Foundation, Inc. ("NetDEF")
10#
513386b5
DA
11
12"""
13bgp_maximum_prefix_invalid_update.py:
14Test if unnecesarry UPDATE message like below:
15
16[Error] Error parsing NLRI
17%NOTIFICATION: sent to neighbor X.X.X.X 3/10 (UPDATE Message Error/Invalid Network Field) 0 bytes
18
19is not sent if maximum-prefix count is overflow.
20"""
21
22import os
23import sys
24import json
513386b5 25import pytest
7591803d 26import functools
513386b5
DA
27
28CWD = os.path.dirname(os.path.realpath(__file__))
787e7624 29sys.path.append(os.path.join(CWD, "../"))
513386b5
DA
30
31# pylint: disable=C0413
7591803d 32from lib import topotest
513386b5 33from lib.topogen import Topogen, TopoRouter, get_topogen
513386b5 34
bf3a0a9a
DS
35pytestmark = [pytest.mark.bgpd]
36
787e7624 37
e82b531d
CH
38def build_topo(tgen):
39 for routern in range(1, 3):
40 tgen.add_router("r{}".format(routern))
513386b5 41
e82b531d
CH
42 switch = tgen.add_switch("s1")
43 switch.add_link(tgen.gears["r1"])
44 switch.add_link(tgen.gears["r2"])
513386b5 45
513386b5
DA
46
47def setup_module(mod):
e82b531d 48 tgen = Topogen(build_topo, mod.__name__)
513386b5
DA
49 tgen.start_topology()
50
51 router_list = tgen.routers()
52
e5f0ed14 53 for i, (rname, router) in enumerate(router_list.items(), 1):
513386b5 54 router.load_config(
787e7624 55 TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
513386b5
DA
56 )
57 router.load_config(
787e7624 58 TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
513386b5
DA
59 )
60
61 tgen.start_router()
62
787e7624 63
513386b5
DA
64def teardown_module(mod):
65 tgen = get_topogen()
66 tgen.stop_topology()
67
787e7624 68
513386b5
DA
69def test_bgp_maximum_prefix_invalid():
70 tgen = get_topogen()
71
72 if tgen.routers_have_failure():
73 pytest.skip(tgen.errors)
74
7591803d 75 r2 = tgen.gears["r2"]
513386b5 76
32655aa2 77 def _bgp_parsing_nlri():
7591803d
DA
78 output = json.loads(r2.vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
79 expected = {
80 "192.168.255.1": {
32655aa2
DA
81 "lastNotificationReason": "Cease/Maximum Number of Prefixes Reached",
82 "lastResetDueTo": "BGP Notification send",
7591803d
DA
83 }
84 }
85 return topotest.json_cmp(output, expected)
86
32655aa2 87 test_func = functools.partial(_bgp_parsing_nlri)
7591803d 88 _, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
32655aa2 89 assert result is None, "Didn't send NOTIFICATION when hitting maximum-prefix"
513386b5 90
513386b5 91
787e7624 92if __name__ == "__main__":
513386b5
DA
93 args = ["-s"] + sys.argv[1:]
94 sys.exit(pytest.main(args))