#!/usr/bin/env python
+# SPDX-License-Identifier: ISC
#
# test_ldp_isis_topo1.py
#
# Copyright (c) 2020 by Volta Networks
#
-# Permission to use, copy, modify, and/or distribute this software
-# for any purpose with or without fee is hereby granted, provided
-# that the above copyright notice and this permission notice appear
-# in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND NETDEF DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NETDEF BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-#
"""
test_ldp_vpls_topo1.py:
import sys
import pytest
import json
-from time import sleep
from functools import partial
# Save the Current Working Directory to find configuration files.
from lib.topolog import logger
# Required to instantiate the topology builder class.
-from mininet.topo import Topo
pytestmark = [pytest.mark.isisd, pytest.mark.ldpd]
-class TemplateTopo(Topo):
- "Test topology builder"
-
- def build(self, *_args, **_opts):
- "Build function"
- tgen = get_topogen(self)
+def build_topo(tgen):
+ "Build function"
- #
- # Define FRR Routers
- #
- for router in ["ce1", "ce2", "ce3", "r1", "r2", "r3"]:
- tgen.add_router(router)
+ #
+ # Define FRR Routers
+ #
+ for router in ["ce1", "ce2", "ce3", "r1", "r2", "r3"]:
+ tgen.add_router(router)
- #
- # Define connections
- #
- switch = tgen.add_switch("s1")
- switch.add_link(tgen.gears["ce1"])
- switch.add_link(tgen.gears["r1"])
+ #
+ # Define connections
+ #
+ switch = tgen.add_switch("s1")
+ switch.add_link(tgen.gears["ce1"])
+ switch.add_link(tgen.gears["r1"])
- switch = tgen.add_switch("s2")
- switch.add_link(tgen.gears["ce2"])
- switch.add_link(tgen.gears["r2"])
+ switch = tgen.add_switch("s2")
+ switch.add_link(tgen.gears["ce2"])
+ switch.add_link(tgen.gears["r2"])
- switch = tgen.add_switch("s3")
- switch.add_link(tgen.gears["ce3"])
- switch.add_link(tgen.gears["r3"])
+ switch = tgen.add_switch("s3")
+ switch.add_link(tgen.gears["ce3"])
+ switch.add_link(tgen.gears["r3"])
- switch = tgen.add_switch("s4")
- switch.add_link(tgen.gears["r1"])
- switch.add_link(tgen.gears["r2"])
+ switch = tgen.add_switch("s4")
+ switch.add_link(tgen.gears["r1"])
+ switch.add_link(tgen.gears["r2"])
- switch = tgen.add_switch("s5")
- switch.add_link(tgen.gears["r1"])
- switch.add_link(tgen.gears["r3"])
+ switch = tgen.add_switch("s5")
+ switch.add_link(tgen.gears["r1"])
+ switch.add_link(tgen.gears["r3"])
- switch = tgen.add_switch("s6")
- switch.add_link(tgen.gears["r2"])
- switch.add_link(tgen.gears["r3"])
+ switch = tgen.add_switch("s6")
+ switch.add_link(tgen.gears["r2"])
+ switch.add_link(tgen.gears["r3"])
def setup_module(mod):
"Sets up the pytest environment"
- tgen = Topogen(TemplateTopo, mod.__name__)
+ tgen = Topogen(build_topo, mod.__name__)
tgen.start_topology()
router_list = tgen.routers()
interface = {}
interface_name = None
- line = it.next()
+ line = next(it)
if line.startswith(rname + "-eth"):
interface_name = line
- line = it.next()
+ line = next(it)
if line.startswith(" LDP-IGP Synchronization enabled: "):
interface["ldpIgpSyncEnabled"] = line.endswith("yes")
- line = it.next()
+ line = next(it)
if line.startswith(" holddown timer in seconds: "):
interface["holdDownTimeInSec"] = int(line.split(": ")[-1])
- line = it.next()
+ line = next(it)
if line.startswith(" State: "):
interface["ldpIgpSyncState"] = line.split(": ")[-1]
while True:
try:
- line = it.next()
+ line = next(it)
area_match = re.match(r"Area (.+):", line)
if not area_match:
area_id = area_match.group(1)
area = {}
- line = it.next()
+ line = next(it)
while line.startswith(" Interface: "):
interface_name = re.split(":|,", line)[1].lstrip()
# Look for keyword: Level-1 or Level-2
while not line.startswith(" Level-"):
- line = it.next()
+ line = next(it)
while line.startswith(" Level-"):
level_name = line.split()[0]
level["level"] = level_name
- line = it.next()
+ line = next(it)
if line.startswith(" Metric:"):
level["metric"] = re.split(":|,", line)[1].lstrip()
while not line.startswith(" Level-") and not line.startswith(
" Interface: "
):
- line = it.next()
+ line = next(it)
if line.startswith(" Level-"):
continue