mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-07-25 00:44:42 +00:00
Merge pull request #1270 from t-woerner/truncate_stdout_and_stderr_in_upstream_test_log
Truncate stdout and stderr in upstream test log
This commit is contained in:
@@ -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):
|
|||||||
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,
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user