aboutsummaryrefslogtreecommitdiff
path: root/test/functional/combine_logs.py
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2019-07-31 14:34:17 -0400
committerMarcoFalke <falke.marco@gmail.com>2019-08-02 09:04:21 -0400
commitfaf36838bdba7393960fce6ad0c56dc1f93f5870 (patch)
tree8951cbc927e75db509ee5a7932f48e7755a61de6 /test/functional/combine_logs.py
parentfa8a1d7ba30040f8c74f93fc41a61276c255a6a6 (diff)
downloadbitcoin-faf36838bdba7393960fce6ad0c56dc1f93f5870.tar.xz
test: Avoid hardcoding the chain name in combine_logs
Diffstat (limited to 'test/functional/combine_logs.py')
-rwxr-xr-xtest/functional/combine_logs.py40
1 files changed, 25 insertions, 15 deletions
diff --git a/test/functional/combine_logs.py b/test/functional/combine_logs.py
index 45ecaabe14..5364ac4b8c 100755
--- a/test/functional/combine_logs.py
+++ b/test/functional/combine_logs.py
@@ -8,6 +8,7 @@ If no argument is provided, the most recent test directory will be used."""
import argparse
from collections import defaultdict, namedtuple
+import glob
import heapq
import itertools
import os
@@ -76,9 +77,17 @@ def read_logs(tmp_dir):
Delegates to generator function get_log_events() to provide individual log events
for each of the input log files."""
+ # Find out what the folder is called that holds the debug.log file
+ chain = glob.glob("{}/node0/*/debug.log".format(tmp_dir))
+ if chain:
+ chain = chain[0] # pick the first one if more than one chain was found (should never happen)
+ chain = re.search('node0/(.+?)/debug\.log$', chain).group(1) # extract the chain name
+ else:
+ chain = 'regtest' # fallback to regtest (should only happen when none exists)
+
files = [("test", "%s/test_framework.log" % tmp_dir)]
for i in itertools.count():
- logfile = "{}/node{}/regtest/debug.log".format(tmp_dir, i)
+ logfile = "{}/node{}/{}/debug.log".format(tmp_dir, i, chain)
if not os.path.isfile(logfile):
break
files.append(("node%d" % i, logfile))
@@ -164,25 +173,26 @@ def get_log_events(source, logfile):
def print_logs_plain(log_events, colors):
- """Renders the iterator of log events into text."""
- for event in log_events:
- lines = event.event.splitlines()
- print("{0} {1: <5} {2} {3}".format(colors[event.source.rstrip()], event.source, lines[0], colors["reset"]))
- if len(lines) > 1:
- for line in lines[1:]:
- print("{0}{1}{2}".format(colors[event.source.rstrip()], line, colors["reset"]))
+ """Renders the iterator of log events into text."""
+ for event in log_events:
+ lines = event.event.splitlines()
+ print("{0} {1: <5} {2} {3}".format(colors[event.source.rstrip()], event.source, lines[0], colors["reset"]))
+ if len(lines) > 1:
+ for line in lines[1:]:
+ print("{0}{1}{2}".format(colors[event.source.rstrip()], line, colors["reset"]))
def print_logs_html(log_events):
- """Renders the iterator of log events into html."""
- try:
- import jinja2
- except ImportError:
- print("jinja2 not found. Try `pip install jinja2`")
- sys.exit(1)
- print(jinja2.Environment(loader=jinja2.FileSystemLoader('./'))
+ """Renders the iterator of log events into html."""
+ try:
+ import jinja2
+ except ImportError:
+ print("jinja2 not found. Try `pip install jinja2`")
+ sys.exit(1)
+ print(jinja2.Environment(loader=jinja2.FileSystemLoader('./'))
.get_template('combined_log_template.html')
.render(title="Combined Logs from testcase", log_events=[event._asdict() for event in log_events]))
+
if __name__ == '__main__':
main()