You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitogen/tests/ansible
David Wilson 2ad05f1238 issue #251, #412, #434: fix connection configuration brainwrong
This refactors connection.py to pull the two huge dict-building
functions out into new transport_transport_config.PlayContextSpec and
MitogenViaSpec classes, leaving a lot more room to breath in both files
to figure out exactly how connection configuration should work.

The changes made in 1f21a30 / 3d58832 are updated or completely removed,
the original change was misguided, in a bid to fix connection delegation
taking variables from the wrong place when delegate_to was active.

The Python path no longer defaults to '/usr/bin/python', this does not
appear to be Ansible's normal behaviour. This has changed several times,
so it may have to change again, and it may cause breakage after release.

Connection delegation respects the c.DEFAULT_REMOTE_USER whereas the
previous version simply tried to fetch whatever was in the
'ansible_user' hostvar. Many more connection delegation variables closer
match vanilla's handling, but this still requires more work. Some of the
variables need access to the command line, and upstream are in the
process of changing all that stuff around.
6 years ago
..
bench issue #426: fix local/delegate_to issue 6 years ago
gcloud Copy random test setup changes out of linear2 branch. 6 years ago
hosts tests: clean up / deduplicate Ansible inventory. 6 years ago
integration issue #251, #412, #434: fix connection configuration brainwrong 6 years ago
lib tests: make assert_equal work on newer Ansibles. 6 years ago
regression tests: Pythonize print_env.sh. 6 years ago
soak ansible: fix put_file() for large temporary files. 6 years ago
tests issue #424: ansible: make put_file() raise AnsibleFileNotFound 6 years ago
.gitignore Copy random test setup changes out of linear2 branch. 6 years ago
Makefile tests: import custom binaries for tests 6 years ago
README.md issue #409: Pythonize run_ansible_playbook.sh 6 years ago
all.yml Revert "try to catch EINTR on travis" 7 years ago
ansible.cfg issue #434: tests: set a default remote_user in ansible.cfg. 6 years ago
ara_env.py tests: import ara_env helper script. 6 years ago
compare_output_test.py tests: prevent compare_output_test running on import. 6 years ago
mitogen_ansible_playbook.py tests: replace another shell script. 6 years ago
requirements.txt tests: import fork_histogram.py. 6 years ago
run_ansible_playbook.py issue #426: remove LANG and LC_ALL during tests. 6 years ago

README.md

tests/ansible Directory

This is an an organically growing collection of integration and regression tests used for development and end-user bug reports.

It will be tidied up over time, meanwhile, the playbooks here are a useful demonstrator for what does and doesn't work.

Preparation

See ../image_prep/README.md.

run_ansible_playbook.py

This is necessary to set some environment variables used by future tests, as there appears to be no better way to inject them into the top-level process environment before the Mitogen connection process forks.

Running Everything

ANSIBLE_STRATEGY=mitogen_linear ./run_ansible_playbook.py all.yml

hosts/ and common-hosts

To support running the tests against a dev machine that has the requisite user accounts, the the default inventory is a directory containing a 'localhost' file that defines 'localhost' to be named 'target' in Ansible inventory, and a symlink to 'common-hosts', which defines additional targets that all derive from 'target'.

This allows ansible_tests.sh to reuse the common-hosts definitions while replacing localhost as the test target by creating a new directory that similarly symlinks in common-hosts.

There may be a better solution for this, but it works fine for now.