mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-05 16:03:35 +00:00
Merge pull request #6988 from mjstapp/fix_topo_stop_logic
tests: improve topotest stop logic
This commit is contained in:
commit
b532b92d31
@ -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:
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user