Skip to content
Snippets Groups Projects
Unverified Commit a4860f7b authored by Rafael Guterres Jeffman's avatar Rafael Guterres Jeffman Committed by GitHub
Browse files

Merge pull request #1270 from t-woerner/truncate_stdout_and_stderr_in_upstream_test_log

Truncate stdout and stderr in upstream test log
parents 16a4eb81 3dfa026e
Branches
Tags
No related merge requests found
...@@ -162,6 +162,22 @@ def _run_playbook(playbook): ...@@ -162,6 +162,22 @@ def _run_playbook(playbook):
return process return process
def _truncate(lines, charcount, minlines=0):
output = ""
line_count = 1
for i in range(len(lines) - 1, -1, -1):
if len(output) + len(lines[i]) + 1 <= charcount or \
line_count < minlines:
output = lines[i] + "\n" + output
line_count += 1
else:
remaining = charcount - len(output) - 1 - 4
if remaining > 60:
output = "... " + lines[i][-(remaining):] + "\n" + output
break
return output
def run_playbook(playbook, allow_failures=False): def run_playbook(playbook, allow_failures=False):
""" """
Run an Ansible playbook and assert the return code. Run an Ansible playbook and assert the return code.
...@@ -183,13 +199,26 @@ def run_playbook(playbook, allow_failures=False): ...@@ -183,13 +199,26 @@ def run_playbook(playbook, allow_failures=False):
status_code_msg = "ansible-playbook return code: {0}".format( status_code_msg = "ansible-playbook return code: {0}".format(
result.returncode result.returncode
) )
_stdout = result.stdout.decode("utf8")
_stderr = result.stderr.decode("utf8")
# Truncate stdout and stderr in the way that it hopefully
# shows all important information. At least 15 lines of stdout
# (Ansible tasks) and remaining from stderr to fill up to
# maxlen size.
maxlen = 2000
factor = maxlen / (len(_stdout) + len(_stderr))
stdout = _truncate(_stdout.splitlines(),
int(factor * len(_stdout)),
minlines=15)
stderr = _truncate(_stderr.splitlines(), maxlen - len(stdout))
assert_msg = "\n".join( assert_msg = "\n".join(
[ [
"", "",
"-" * 30 + " Captured stdout " + "-" * 30, "-" * 30 + " Captured stdout " + "-" * 30,
result.stdout.decode("utf8"), stdout,
"-" * 30 + " Captured stderr " + "-" * 30, "-" * 30 + " Captured stderr " + "-" * 30,
result.stderr.decode("utf8"), stderr,
"-" * 30 + " Playbook Return Code " + "-" * 30, "-" * 30 + " Playbook Return Code " + "-" * 30,
status_code_msg, status_code_msg,
] ]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment