summaryrefslogtreecommitdiff
path: root/tests/topotests/lib/topogen.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/topotests/lib/topogen.py')
-rw-r--r--tests/topotests/lib/topogen.py89
1 files changed, 17 insertions, 72 deletions
diff --git a/tests/topotests/lib/topogen.py b/tests/topotests/lib/topogen.py
index b9f82877e2..ffdcb683e7 100644
--- a/tests/topotests/lib/topogen.py
+++ b/tests/topotests/lib/topogen.py
@@ -40,6 +40,7 @@ Basic usage instructions:
import os
import sys
+import io
import logging
import json
@@ -96,9 +97,8 @@ def set_topogen(tgen):
tgen_defaults = {
"verbosity": "info",
"frrdir": "/usr/lib/frr",
- "quaggadir": "/usr/lib/quagga",
"routertype": "frr",
- "memleak_path": None,
+ "memleak_path": "",
}
@@ -173,7 +173,7 @@ class Topogen(object):
options:
* `name`: (optional) select the router name
* `daemondir`: (optional) custom daemon binary directory
- * `routertype`: (optional) `quagga` or `frr`
+ * `routertype`: (optional) `frr`
Returns a TopoRouter.
"""
if name is None:
@@ -182,9 +182,8 @@ class Topogen(object):
raise KeyError("router already exists")
params["frrdir"] = self.config.get(self.CONFIG_SECTION, "frrdir")
- params["quaggadir"] = self.config.get(self.CONFIG_SECTION, "quaggadir")
params["memleak_path"] = self.config.get(self.CONFIG_SECTION, "memleak_path")
- if not params.has_key("routertype"):
+ if "routertype" not in params:
params["routertype"] = self.config.get(self.CONFIG_SECTION, "routertype")
self.gears[name] = TopoRouter(self, cls, name, **params)
@@ -362,7 +361,7 @@ class Topogen(object):
memleak_file = os.environ.get("TOPOTESTS_CHECK_MEMLEAK") or self.config.get(
self.CONFIG_SECTION, "memleak_path"
)
- if memleak_file is None:
+ if memleak_file == "" or memleak_file == None:
return False
return True
@@ -529,12 +528,10 @@ class TopoRouter(TopoGear):
Router abstraction.
"""
- # The default required directories by Quagga/FRR
+ # The default required directories by FRR
PRIVATE_DIRS = [
"/etc/frr",
- "/etc/quagga",
"/var/run/frr",
- "/var/run/quagga",
"/var/log",
]
@@ -581,7 +578,7 @@ class TopoRouter(TopoGear):
* cls: router class that will be used to instantiate
* name: router name
* daemondir: daemon binary directory
- * routertype: 'quagga' or 'frr'
+ * routertype: 'frr'
"""
super(TopoRouter, self).__init__()
self.tgen = tgen
@@ -590,7 +587,7 @@ class TopoRouter(TopoGear):
self.cls = cls
self.options = {}
self.routertype = params.get("routertype", "frr")
- if not params.has_key("privateDirs"):
+ if "privateDirs" not in params:
params["privateDirs"] = self.PRIVATE_DIRS
self.options["memleak_path"] = params.get("memleak_path", None)
@@ -626,7 +623,7 @@ class TopoRouter(TopoGear):
except OSError:
pass
- # Allow unprivileged daemon user (frr/quagga) to create log files
+ # Allow unprivileged daemon user (frr) to create log files
try:
# Only allow group, if it exist.
gid = grp.getgrnam(self.routertype)[2]
@@ -675,7 +672,7 @@ class TopoRouter(TopoGear):
* Load modules
* Clean up files
* Configure interfaces
- * Start daemons (e.g. FRR/Quagga)
+ * Start daemons (e.g. FRR)
* Configure daemon logging files
"""
self.logger.debug("starting")
@@ -724,7 +721,7 @@ class TopoRouter(TopoGear):
def startDaemons(self, daemons):
"""
Start Daemons: to start specific daemon(user defined daemon only)
- * Start daemons (e.g. FRR/Quagga)
+ * Start daemons (e.g. FRR)
* Configure daemon logging files
"""
self.logger.debug('starting')
@@ -826,7 +823,7 @@ class TopoRouter(TopoGear):
memleak_file = (
os.environ.get("TOPOTESTS_CHECK_MEMLEAK") or self.options["memleak_path"]
)
- if memleak_file is None:
+ if memleak_file == "" or memleak_file == None:
return
self.stop()
@@ -1015,7 +1012,7 @@ def diagnose_env_linux():
logger.info("Running environment diagnostics")
# Load configuration
- config = configparser.ConfigParser(tgen_defaults)
+ config = configparser.ConfigParser(defaults=tgen_defaults)
pytestini_path = os.path.join(CWD, "../pytest.ini")
config.read(pytestini_path)
@@ -1041,12 +1038,10 @@ def diagnose_env_linux():
# Assert that FRR utilities exist
frrdir = config.get("topogen", "frrdir")
- hasfrr = False
if not os.path.isdir(frrdir):
logger.error("could not find {} directory".format(frrdir))
ret = False
else:
- hasfrr = True
try:
pwd.getpwnam("frr")[2]
except KeyError:
@@ -1095,56 +1090,6 @@ def diagnose_env_linux():
os.system("{} -v 2>&1 >/tmp/topotests/frr_zebra.txt".format(path))
- # Assert that Quagga utilities exist
- quaggadir = config.get("topogen", "quaggadir")
- if hasfrr:
- # if we have frr, don't check for quagga
- pass
- elif not os.path.isdir(quaggadir):
- logger.info(
- "could not find {} directory (quagga tests will not run)".format(quaggadir)
- )
- else:
- ret = True
- try:
- pwd.getpwnam("quagga")[2]
- except KeyError:
- logger.info('could not find "quagga" user')
-
- try:
- grp.getgrnam("quagga")[2]
- except KeyError:
- logger.info('could not find "quagga" group')
-
- try:
- if "quagga" not in grp.getgrnam("quaggavty").gr_mem:
- logger.error(
- '"quagga" user and group exist, but user is not under "quaggavty"'
- )
- except KeyError:
- logger.warning('could not find "quaggavty" group')
-
- for fname in [
- "zebra",
- "ospfd",
- "ospf6d",
- "bgpd",
- "ripd",
- "ripngd",
- "isisd",
- "pimd",
- "pbrd"
- ]:
- path = os.path.join(quaggadir, fname)
- if not os.path.isfile(path):
- logger.warning("could not find {} in {}".format(fname, quaggadir))
- ret = False
- else:
- if fname != "zebra":
- continue
-
- os.system("{} -v 2>&1 >/tmp/topotests/quagga_zebra.txt".format(path))
-
# Test MPLS availability
krel = platform.release()
if topotest.version_cmp(krel, "4.5") < 0:
@@ -1162,10 +1107,10 @@ def diagnose_env_linux():
# TODO remove me when we start supporting exabgp >= 4
try:
- output = subprocess.check_output(["exabgp", "-v"])
- line = output.split("\n")[0]
- version = line.split(" ")[2]
- if topotest.version_cmp(version, "4") >= 0:
+ p = os.popen("exabgp -v")
+ line = p.readlines()
+ version = line[0].split()
+ if topotest.version_cmp(version[2], "4") >= 0:
logger.warning(
"BGP topologies are still using exabgp version 3, expect failures"
)