diff options
Diffstat (limited to 'tests/topotests/lib/topogen.py')
| -rw-r--r-- | tests/topotests/lib/topogen.py | 89 |
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" ) |
