diff --git a/tests/fixtures.py b/tests/fixtures.py index b94539d2b..193c17b25 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -161,38 +161,19 @@ def node_factory(request, directory, test_name, bitcoind, executor, teardown_che for e in errs: teardown_checks.add_error(e) - if VALGRIND: - for node in nf.nodes: - if printValgrindErrors(node): - teardown_checks.add_node_error(node, "reported valgrind errors") - - for node in nf.nodes: - if printCrashLog(node): - teardown_checks.add_node_error(node, "had crash.log files") - - for node in [n for n in nf.nodes if not n.allow_broken_log]: - if checkBroken(node): - teardown_checks.add_node_error(node, "had BROKEN messages") - - for node in nf.nodes: - if checkReconnect(node): - teardown_checks.add_node_error(node, "had unexpected reconnections") - - for node in [n for n in nf.nodes if not n.allow_bad_gossip]: - if checkBadGossip(node): - teardown_checks.add_node_error(node, "had bad gossip messages") - - for node in nf.nodes: - if checkBadReestablish(node): - teardown_checks.add_node_error(node,"had bad reestablish") - - for node in nf.nodes: - if checkBadHSMRequest(node): - teardown_checks.add_node_error(node, "had bad hsm requests") - - for node in nf.nodes: - if checkMemleak(node): - teardown_checks.add_node_error(node, "had memleak messages") + def map_node_error(nodes, f, msg): + for n in nodes: + if n and f(n): + teardown_checks.add_node_error(n, msg) + + map_node_error(nf.nodes, printValgrindErrors, "reported valgrind errors") + map_node_error(nf.nodes, printCrashLog, "had crash.log files") + map_node_error(nf.nodes, lambda n: not n.allow_broken_log and n.daemon.is_in_log(r'\*\*BROKEN\*\*'), "had BROKEN messages") + map_node_error(nf.nodes, checkReconnect, "had unexpected reconnections") + map_node_error(nf.nodes, checkBadGossip, "had bad gossip messages") + map_node_error(nf.nodes, lambda n: n.daemon.is_in_log('Bad reestablish'), "had bad reestablish") + map_node_error(nf.nodes, lambda n: n.daemon.is_in_log('bad hsm request'), "had bad hsm requests") + map_node_error(nf.nodes, checkMemleak, "had memleak messages") if not ok: teardown_checks.add_error("At least one lightning exited with unexpected non-zero return code") @@ -249,6 +230,8 @@ def checkReconnect(node): def checkBadGossip(node): + if node.allow_bad_gossip: + return 0 # We can get bad gossip order from inside error msgs. if node.daemon.is_in_log('Bad gossip order from (?!error)'): # This can happen if a node sees a node_announce after a channel @@ -264,6 +247,8 @@ def checkBadGossip(node): def checkBroken(node): + if node.allow_broken_log: + return 0 # We can get bad gossip order from inside error msgs. if node.daemon.is_in_log(r'\*\*BROKEN\*\*'): return 1 @@ -289,7 +274,7 @@ def checkMemleak(node): @pytest.fixture -def executor(): +def executor(teardown_checks): ex = futures.ThreadPoolExecutor(max_workers=20) yield ex ex.shutdown(wait=False)