Merge pull request #6988 from mjstapp/fix_topo_stop_logic

tests: improve topotest stop logic
This commit is contained in:
Donald Sharp 2020-08-25 14:59:11 -04:00 committed by GitHub
commit b532b92d31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 46 additions and 11 deletions

View File

@ -263,6 +263,22 @@ def test_error_messages_daemons():
if log: if log:
error_logs += "r%s LDPd StdErr Output:\n" % i error_logs += "r%s LDPd StdErr Output:\n" % i
error_logs += log error_logs += log
log = net['r1'].getStdErr('nhrpd')
if log:
error_logs += "r%s NHRPd StdErr Output:\n" % i
error_logs += log
log = net['r1'].getStdErr('babeld')
if log:
error_logs += "r%s BABELd StdErr Output:\n" % i
error_logs += log
log = net['r1'].getStdErr('pbrd')
if log:
error_logs += "r%s PBRd StdErr Output:\n" % i
error_logs += log
log = net['r%s' % i].getStdErr('zebra') log = net['r%s' % i].getStdErr('zebra')
if log: if log:
error_logs += "r%s Zebra StdErr Output:\n" error_logs += "r%s Zebra StdErr Output:\n"
@ -1182,6 +1198,19 @@ def test_shutdown_check_stderr():
log = net['r1'].getStdErr('bgpd') log = net['r1'].getStdErr('bgpd')
if log: if log:
print("\nBGPd StdErr Log:\n" + log) print("\nBGPd StdErr Log:\n" + log)
log = net['r1'].getStdErr('nhrpd')
if log:
print("\nNHRPd StdErr Log:\n" + log)
log = net['r1'].getStdErr('pbrd')
if log:
print("\nPBRd StdErr Log:\n" + log)
log = net['r1'].getStdErr('babeld')
if log:
print("\nBABELd StdErr Log:\n" + log)
if (net['r1'].daemon_available('ldpd')): if (net['r1'].daemon_available('ldpd')):
log = net['r1'].getStdErr('ldpd') log = net['r1'].getStdErr('ldpd')
if log: if log:

View File

@ -70,7 +70,6 @@ from lib.common_config import (
create_route_maps, create_route_maps,
shutdown_bringup_interface, shutdown_bringup_interface,
start_router_daemons, start_router_daemons,
kill_router_daemons,
create_static_routes, create_static_routes,
create_vrf_cfg, create_vrf_cfg,
create_interfaces_cfg, create_interfaces_cfg,

View File

@ -62,7 +62,6 @@ from lib.common_config import (
verify_rib, verify_rib,
step, step,
start_router_daemons, start_router_daemons,
kill_router_daemons,
create_static_routes, create_static_routes,
create_vrf_cfg, create_vrf_cfg,
create_route_maps, create_route_maps,

View File

@ -68,7 +68,6 @@ from lib.common_config import (
create_route_maps, create_route_maps,
verify_cli_json, verify_cli_json,
start_router_daemons, start_router_daemons,
kill_router_daemons,
create_static_routes, create_static_routes,
stop_router, stop_router,
start_router, start_router,

View File

@ -335,9 +335,7 @@ class Topogen(object):
logger.info("stopping topology: {}".format(self.modname)) logger.info("stopping topology: {}".format(self.modname))
errors = "" errors = ""
for gear in self.gears.values(): for gear in self.gears.values():
gear.stop(False, False) errors += gear.stop()
for gear in self.gears.values():
errors += gear.stop(True, False)
if len(errors) > 0: if len(errors) > 0:
assert "Errors found post shutdown - details follow:" == 0, errors assert "Errors found post shutdown - details follow:" == 0, errors
@ -703,14 +701,26 @@ class TopoRouter(TopoGear):
return result return result
def stop(self, wait=True, assertOnError=True): def __stop_internal(self, wait=True, assertOnError=True):
""" """
Stop router: Stop router, private internal version
* Kill daemons * Kill daemons
""" """
self.logger.debug("stopping") self.logger.debug("stopping: wait {}, assert {}".format(
wait, assertOnError))
return self.tgen.net[self.name].stopRouter(wait, assertOnError) return self.tgen.net[self.name].stopRouter(wait, assertOnError)
def stop(self):
"""
Stop router cleanly:
* Signal daemons twice, once without waiting, and then a second time
with a wait to ensure the daemons exit cleanly
"""
self.logger.debug("stopping")
self.__stop_internal(False, False)
return self.__stop_internal()
def startDaemons(self, daemons): def startDaemons(self, daemons):
""" """
Start Daemons: to start specific daemon(user defined daemon only) Start Daemons: to start specific daemon(user defined daemon only)
@ -819,8 +829,7 @@ class TopoRouter(TopoGear):
if memleak_file is None: if memleak_file is None:
return return
self.stop(False, False) self.stop()
self.stop(wait=True)
self.logger.info("running memory leak report") self.logger.info("running memory leak report")
self.tgen.net[self.name].report_memory_leaks(memleak_file, testname) self.tgen.net[self.name].report_memory_leaks(memleak_file, testname)