forked from Mirror/frr
113 lines
2.6 KiB
Python
113 lines
2.6 KiB
Python
#!/usr/bin/env python
|
|
# SPDX-License-Identifier: ISC
|
|
|
|
#
|
|
# test_high_ecmp.py
|
|
#
|
|
# Copyright (c) 2024 by
|
|
# Nvidia Corporation
|
|
# Donald Sharp
|
|
#
|
|
# Copyright (c) 2025 by Soumya Roy, <souroy@nvidia.com>
|
|
|
|
"""
|
|
test_high_ecmp.py: Testing two routers with 256 interfaces and BGP setup
|
|
on it.
|
|
|
|
"""
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
import pytest
|
|
import json
|
|
|
|
pytestmark = [pytest.mark.bgpd]
|
|
|
|
# Save the Current Working Directory to find configuration files.
|
|
CWD = os.path.dirname(os.path.realpath(__file__))
|
|
sys.path.append(os.path.join(CWD, "../"))
|
|
|
|
# pylint: disable=C0413
|
|
# Import topogen and topotest helpers
|
|
from lib import topotest
|
|
from lib.topogen import Topogen, TopoRouter, get_topogen
|
|
from lib.topolog import logger
|
|
|
|
# Required to instantiate the topology builder class.
|
|
|
|
#####################################################
|
|
##
|
|
## Network Topology Definition
|
|
##
|
|
#####################################################
|
|
|
|
|
|
def build_topo(tgen):
|
|
tgen.add_router("r1")
|
|
tgen.add_router("r2")
|
|
|
|
r1 = tgen.gears["r1"]
|
|
r2 = tgen.gears["r2"]
|
|
|
|
# Let's create 257 interfaces between the two switches
|
|
for switch in range(1, 516):
|
|
switch = tgen.add_switch("sw{}".format(switch))
|
|
switch.add_link(r1)
|
|
switch.add_link(r2)
|
|
|
|
|
|
#####################################################
|
|
##
|
|
## Tests starting
|
|
##
|
|
#####################################################
|
|
|
|
|
|
def setup_module(module):
|
|
"Setup topology"
|
|
tgen = Topogen(build_topo, module.__name__)
|
|
tgen.start_topology()
|
|
|
|
# This is a sample of configuration loading.
|
|
router_list = tgen.routers()
|
|
for rname, router in router_list.items():
|
|
router.load_frr_config(
|
|
os.path.join(CWD, "{}/frr.conf".format(rname)),
|
|
[
|
|
(TopoRouter.RD_ZEBRA, "-s 180000000"),
|
|
(TopoRouter.RD_BGP, None),
|
|
(TopoRouter.RD_SHARP, None),
|
|
(TopoRouter.RD_STATIC, None),
|
|
(TopoRouter.RD_OSPF, None),
|
|
(TopoRouter.RD_OSPF6, None),
|
|
(TopoRouter.RD_PIM, None),
|
|
],
|
|
)
|
|
|
|
tgen.start_router()
|
|
|
|
for rname, router in router_list.items():
|
|
router.cmd("vtysh -f {}/{}/frr_ipv4_bgp.conf".format(CWD, rname))
|
|
|
|
|
|
def teardown_module(_mod):
|
|
"Teardown the pytest environment"
|
|
tgen = get_topogen()
|
|
|
|
# This function tears down the whole topology.
|
|
tgen.stop_topology()
|
|
|
|
|
|
def test_nothing():
|
|
"Do Nothing"
|
|
tgen = get_topogen()
|
|
# Don't run this test if we have any failure.
|
|
if tgen.routers_have_failure():
|
|
pytest.skip(tgen.errors)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
args = ["-s"] + sys.argv[1:]
|
|
sys.exit(pytest.main(args))
|