From 2c17d60ffd2afa9ff2541c224a2495e05cc55ee0 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Sun, 1 Apr 2018 21:24:31 +0100 Subject: [PATCH] issue #106: import basic regtest.py --- examples/playbook/regtest.py | 63 ++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 examples/playbook/regtest.py diff --git a/examples/playbook/regtest.py b/examples/playbook/regtest.py new file mode 100644 index 00000000..15fc9e3c --- /dev/null +++ b/examples/playbook/regtest.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +import difflib +import logging +import re +import subprocess +import tempfile + + +LOG = logging.getLogger(__name__) + +suffixes = [ + '-m bin_bash_module', + '-m binary_producing_json', + '-m binary_producing_junk', + '-m old_style_module', + '-m python_new_style_module', + '-m python_want_json_module', + '-m single_null_binary', + '-m want_json_module', + '-m json_args_python', + '-m setup', +] + +fixups = [ + ('Shared connection to localhost closed\\.(\r\n)?', ''), # TODO +] + + +def fixup(s): + for regex, to in fixups: + s = re.sub(regex, to, s, re.DOTALL|re.M) + return s + + +def run(s): + LOG.debug('running: %r', s) + with tempfile.NamedTemporaryFile() as fp: + # https://www.systutorials.com/docs/linux/man/1-ansible-playbook/#lbAG + returncode = subprocess.call(s, stdout=fp, stderr=fp, shell=True) + fp.write('\nReturn code: %s\n' % (returncode,)) + fp.seek(0) + return fp.read() + + +logging.basicConfig(level=logging.DEBUG) + +for suffix in suffixes: + ansible = run('ansible localhost %s' % (suffix,)) + mitogen = run('ANSIBLE_STRATEGY=mitogen ansible localhost %s' % (suffix,)) + + diff = list(difflib.unified_diff( + a=fixup(ansible).splitlines(), + b=fixup(mitogen).splitlines(), + fromfile='ansible-output.txt', + tofile='mitogen-output.txt', + )) + if diff: + print '++ differ! suffix: %r' % (suffix,) + for line in diff: + print line + print + print