From 95460a6b7ecd82dc5210774a0cefea665da86921 Mon Sep 17 00:00:00 2001 From: Lou Berger Date: Sat, 30 Jun 2018 12:37:21 -0400 Subject: [PATCH] lib: collect and report shutdown errors across whole topology Signed-off-by: Lou Berger --- tests/topotests/lib/topogen.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/topotests/lib/topogen.py b/tests/topotests/lib/topogen.py index b8d7307147..63d3a5afdd 100644 --- a/tests/topotests/lib/topogen.py +++ b/tests/topotests/lib/topogen.py @@ -321,11 +321,13 @@ class Topogen(object): killed and try with a different signal. """ logger.info('stopping topology: {}'.format(self.modname)) - + errors = "" for gear in self.gears.values(): - gear.stop(False) + gear.stop(False, False) for gear in self.gears.values(): - gear.stop(True) + errors += gear.stop(True, False) + if len(errors) > 0: + assert "Errors found post shutdown - details follow:" == 0, errors self.net.stop() @@ -426,9 +428,10 @@ class TopoGear(object): "Basic start function that just reports equipment start" logger.info('starting "{}"'.format(self.name)) - def stop(self, wait=True): + def stop(self, wait=True, assertOnError=True): "Basic start function that just reports equipment stop" logger.info('stopping "{}"'.format(self.name)) + return "" def run(self, command): """ @@ -662,13 +665,13 @@ class TopoRouter(TopoGear): return result - def stop(self, wait=True): + def stop(self, wait=True, assertOnError=True): """ Stop router: * Kill daemons """ self.logger.debug('stopping') - return self.tgen.net[self.name].stopRouter(wait) + return self.tgen.net[self.name].stopRouter(wait, assertOnError) def vtysh_cmd(self, command, isjson=False, daemon=None): """ @@ -902,9 +905,10 @@ class TopoExaBGP(TopoHost): output = '' logger.info('{} exabgp started, output={}'.format(self.name, output)) - def stop(self, wait=True): + def stop(self, wait=True, assertOnError=True): "Stop ExaBGP peer and kill the daemon" self.run('kill `cat /var/run/exabgp/exabgp.pid`') + return "" # -- 2.39.5