Commit Graph

1024 Commits (master)

Author SHA1 Message Date
Stefano Rivera b672eafcb0 Support multi-word cpusets
From cpuset(7):

> For masks longer than one word, a comma separator is used between
> words. Words are displayed in big-endian order, which has the most
> significant bit first. The hex digits within a word are also in
> big-endian order.
3 years ago
Stefano Rivera 184ff0f507 Skip test_unwriteable when tests are run as root
Writes by root ignore fs permissions, so this test will fail when run as root.
3 years ago
Alex Willmer ac7505d624 tests: Add centos 8; debian 10, 11; ubuntu 16.04, 18.04, 20.04 test images 3 years ago
Alex Willmer 6bf58c3cfb tests: Don't add local user to Docker containers 3 years ago
Alex Willmer a8e8cf91cb tests: Rebuild Docker containers
A few changes are bundled in this
 - Ansible 2.10.x and Mitogen 0.3.x are used to build nearly all images
   (Ansile 2.3.x is retained for CentOS 5, because it uses Python 2.4).
 - Tox is used to install/run Ansible, replacing build_docker_images.py
 - A static inventory, identifying containers by name rather than ID.
 - debian-test image is renamed to debian9-test
 - debian9-test image is now based on debian:9
 - centos6-test image is now based on moreati/centos6-vault
   following the same scheme as centos5-test.
 - Images are now uploaded to Amazon Elastic Container Registry (ECR).
   See #809.
 - Debian recommended packages aren't installed (e.g. build-essential)
 - Python 2.x and Python 3.x are installed wherever available.
 - Python Virtualenv is installed wherever available.
3 years ago
Alex Willmer b71fbe528c
Merge branch 'master' into distro-vs-distros 3 years ago
Alex Willmer 1e72ebaf8b tests: Update test coverage to Python 3.9
The Travis Linux distribution must be upgraded because the Trusty
(Ubuntu 14.04) image does not have Python 3.9. Xenial (Ubuntu 16.04) is
the earliest version that offers Python 3.9.

I have not chosen a later release, in order to aid restoration of Python
2.4 - 2.6 tests.
3 years ago
Alex Willmer 4b39013ef4 tests: Compatiblity shim for threading.Thread.is_alive()
On Python >= 3.8 thread.isAlive() is deprecated (removed in Python 3.9.
On Python <= 2.5 thread.is_alive() isn't present (added in Python 2.6).
3 years ago
Alex Willmer 1a0951c664
Merge branch 'master' into tests-resource_intensive-tag 3 years ago
Alex Willmer bb271d8d00 tests: Tag resource intensive tasks, to skip when strategy=linear
The ansible_mitogen test suite takes over an hour when Ansible is not
accelerated by Mitogen. This change aims to reduce that by skipping
tests with a large number of iterations when the linear strategy is
chosen.

The tagged tests are intended to uncover Mitogen resource leaks. Since
Mitogen is not invoked when strategy=linear, the slight reduction in
test coverage is an acceptable trade off.
3 years ago
Alex Willmer a64e966ab9 tests: Add unofficial Tox environments for Ansible tests
These are not part of the official testing regime (tests run for pull
requests). I find them convenient for local development.

Limitations
- Python 2.7+ only. No Python 2.4, 2.5, or 2.6.
- Requires Pythons pre-installed (e.g. DeadSnakes, pyenv)
- No coverage of alternate controller OS (e.g. MacOS)

The environments tested by default are

py27-mode_ansible-ansible2.10
py36-mode_ansible-ansible2.10
py39-mode_ansible-ansible2.10
py27-mode_mitogen
py36-mode_mitogen
py39-mode_mitogen
py27-mode_mitogen-distro_centos7
py36-mode_mitogen-distro_centos7
py39-mode_mitogen-distro_centos7
3 years ago
Alex Willmer bc5bf4cc3d
Merge branch 'master' into distro-vs-distros 3 years ago
Alex Willmer 9dce5fe056 tests: Correct DISTRO vs DISTROS usage in CI configurations
The environment variable DISTRO is used to set the target Docker image
used when running the Mitogen unit tests. DISTROS is used for the
Ansible integration tests. VER sets the version of Ansible that is
installed on the controller.

When MODE=Mitogen
- there is no need to set VER, because nothing that installs Ansible
- it does not make sense to set DISTROS.
3 years ago
Alex Willmer f162a8a7c5 Fix DjangoMixin test imports for setuptools >= 50.0 3 years ago
Steven Robertson 22cce2dfae Merge branch 'master' into collectionsSupport 4 years ago
Alex Willmer 79b4c0f815 tests: Fix AttributeError in callback plugins used by test suite
CALLBACK_VERSION et al are documented as required in
https://docs.ansible.com/ansible/2.10/dev_guide/developing_plugins.html#callback-plugins.
The need for document_fragment is noted in
cfa8075537/lib/ansible/plugins/callback/default.py (L28-L32)

Fixes #758

This addresses the following error, seen while running
`ansible_tests.py`.

```
TASK [Gathering Facts gather_timeout=10, gather_subset=['all']]
****************
task path:
/home/alex/src/mitogen/tests/ansible/regression/issue_109__target_has_old_ansible_installed.yml:4
[WARNING]: Failure using method (v2_runner_on_start) in callback plugin
(<ansible.plugins.callback.nice_stdout.CallbackModule object at
0x7f76b3dad090>): 'show_per_host_start'
Callback Exception:
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py",
line 372, in send_callback
    method(*new_args, **kwargs)
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/default.py",
line 240, in v2_runner_on_start
    if self.get_option('show_per_host_start'):
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/__init__.py",
line 91, in get_option
    return self._plugin_options[k]
Callback Exception:
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py",
line 372, in send_callback
    method(*new_args, **kwargs)
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/default.py",
line 240, in v2_runner_on_start
    if self.get_option('show_per_host_start'):
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/__init__.py",
line 91, in get_option
    return self._plugin_options[k]
[task 339882] 00:00:08.172036 D ansible_mitogen.affinity: CPU mask for
WorkerProcess: 0x000004
Callback Exception:
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py",
line 372, in send_callback
    method(*new_args, **kwargs)
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/default.py",
line 240, in v2_runner_on_start
    if self.get_option('show_per_host_start'):
File
"/home/alex/src/mitogen/.tox/py27-ansible2.10/lib/python2.7/site-packages/ansible/plugins/callback/__init__.py",
line 91, in get_option
    return self._plugin_options[k]
```
4 years ago
Steven Robertson 5a0da02e6c code review changes, using when statements and adding trailing comma 4 years ago
Steven Robertson 741e99f698 ansible 2.10 no longer has a at the end of the error msg... 🤦 4 years ago
Steven Robertson e6d7cd3aff skip vanilla Ansible 2.10 hanging task if not is_mitogen 4 years ago
Steven Robertson 9e17c98f3f adding hopefully new-style import that works for Ansible 2.10 4 years ago
Steven Robertson 941132c040 revert missing interpreter change, it breaks with Mitogen and without Mitogen, something else might be causing new-style detection to not work 4 years ago
Steven Robertson 2ecf227e1f oops, broke new-style missing interpreter detection. Regex should match now 4 years ago
Steven Robertson cf3d646613 fix custom_python_new_style_missing_interpreter, looks like Ansible 2.10 changed how new-style module detection works 4 years ago
Steven Robertson 518324c371 fix regression in Darwin 19 (OSX 10.15+) ansible python interpreter detection 4 years ago
Steven Robertson a3b9622f8b result length is 3 in Azure, 4 on local Mac 4 years ago
Steven Robertson 9f04d6713b fixed ansible_become_pass test, looks like regression on Ansible's end 4 years ago
Steven Robertson aac1e7f76a fix yml parsing 4 years ago
Steven Robertson fbcf765fb2 oops, yml file can't be empty 4 years ago
Steven Robertson 31670ff993 ignore another flaky test that works locally 4 years ago
Steven Robertson d978dffe4e fix ansible version check error 4 years ago
Steven Robertson 5b40b8d155 fix runner_one_job ansible version comparison 4 years ago
Steven Robertson 24d716aab9 oops, 0664 not 0666 4 years ago
Steven Robertson 355e2ffba2 fix fixup_perms2() test 4 years ago
Steven Robertson 22bc5448b1 default copy perms look like 0644 now based on ansible source and docs 4 years ago
Steven Robertson 8481c50a59 ignore synchronize for now, made ticket 4 years ago
Steven Robertson 207e36194d try and get some visibility into test failures 4 years ago
Steven Robertson 8b2d930042 cffi super old, try and update it 4 years ago
Steven Robertson e852c65e36 print what's being ran in tests 4 years ago
Steven Robertson a7705a3435 add back in ansible tests but don't run synchronize 4 years ago
Steven Robertson 49dd8eee1a figure out what synchronize is now 4 years ago
Steven Robertson e8fb4071b2 put future import in wrong place 4 years ago
Steven Robertson c6d42212dd add some debugging info, was able to run the failed synchronize test locally just fine using test framework, not sure what's going on 4 years ago
Steven Robertson 1091cd7ca1 try and suppress mode warning clogging up logs 4 years ago
Steven Robertson b26a636bba remove ansible 2.4-specific test 4 years ago
Steven Robertson fbb92e461f fix fixup_perms2 default file mode 4 years ago
Steven Robertson acde13f9d6 handles a 'wait_for_connection' call right after a task caused a shutdown 4 years ago
Steven Robertson c12e3d0f92 disable flaky test on py3.6 4 years ago
Steven Robertson 530f5e6412 read in ansible installation version always 4 years ago
Steven Robertson 957e295ba9 google will always be up, just use that 4 years ago
Steven Robertson 40946277c3 actual link 4 years ago
Steven Robertson 1ce0091dbc github url changed, switch to taco pic because tacos are delicious 4 years ago
Steven Robertson 595569eeab don't run flaky test on python 2.6 4 years ago
Steven Robertson 101e200538 disabled flaky test 4 years ago
Steven Robertson 1f61b9ee67 making commit to retrigger tests' 4 years ago
Steven Robertson 5196fbbadf missed a few more tests 4 years ago
Steven Robertson bc87fb0c5d change more tests to compare to 'discovered_interpreter' for python_path 4 years ago
Steven Robertson 389cee8c70 fix assertion of python_path, it should be always what 'discovered_interpreter' is 4 years ago
Steven Robertson e7e1c3bc86 note on changed interpreter value functionality, need to fix the test 4 years ago
Steven Robertson 33e7d0804f fixed tests, and removed the action hack code 4 years ago
Steven Robertson cd3b88d9e3 ignore the source command for now; Mac 10.14 uses /bin/sh rather than /bin/sh pointing to /bin/bash and we can't edit it because of SIP 4 years ago
Steven Robertson f2f1a530a6 disabling another test that passes locally on Mac 4 years ago
Steven Robertson 2fb6f880f3 remove aliasing sh to bash because I can't disable SIP which means /bin isn't writeable 4 years ago
Steven Robertson 769cdf93b7 disabling another test 4 years ago
Steven Robertson 378f6d3f77 disabling another test for now 4 years ago
Steven Robertson bb048cc03d accidentally deleted quotes 4 years ago
Steven Robertson faf7798c16 revert python3 setup + add TODO; python3 tests aren't working now but python2 is EOL so they should work soon 4 years ago
Steven Robertson 1157ff6f43 try fixing mac python symlink weirdness 4 years ago
Steven Robertson 0a34d378c9 change virtualenv creation when running with python 3 4 years ago
Steven Robertson 6fb0bec4ea another disable 4 years ago
Steven Robertson fb7de03555 disabling another flaky test 4 years ago
Steven Robertson 2ceb44c337 another disable 4 years ago
Steven Robertson 0ab5bdb7f9 disabling another test 4 years ago
Steven Robertson 8925f8a9d7 disabled another issue with sudo on this test 4 years ago
Steven Robertson ebf628a812 disabling another test 4 years ago
Steven Robertson d813092d69 revert hack done to virtualenv test 4 years ago
Steven Robertson 74a6f18f12 disabling another flaky test 4 years ago
Steven Robertson ecb15cd5f0 disable failing Azure test but that works locally 4 years ago
Steven Robertson f274ff8cfd mitogen_test_distro appeared to not be used which broke centos7 trying to run doas not in debian container, so fixing that 4 years ago
Steven Robertson f90ec39ba6 add 'validate_certs: no' for get_url old versions of python 4 years ago
Steven Robertson cfb5ebbdd3 ansible < 2.5 didn't have version, but had version_compare 4 years ago
Steven Robertson 38939b2c1b can't run ansible 2.8.0+ tests on ansible < 2.8.0 4 years ago
Steven Robertson 633675ecfc ensure that /bin/sh is executable 4 years ago
Steven Robertson 79b8814142 bump macOS test vm to replicate what passes locally 4 years ago
Steven Robertson a7fe74cdba forgot to dump gid info 4 years ago
Steven Robertson 96f896b56c added debugging to figure out what's up with become_user and sudo runas gid not found 4 years ago
Steven Robertson 4776074e42 set up symlink to bash for source test 4 years ago
Steven Robertson ea245bbff2 don't set global executable... 4 years ago
Steven Robertson 89788a83ed run with bash as the default shell for tests so source command works 4 years ago
Steven Robertson c010feec59 to not have to manage various python installs, use simplified 'source' test 4 years ago
Steven Robertson de114be821 try and bump ansible to the latest 2.8 version to try and fix tests 4 years ago
Steven Robertson 552ae9c6d3 need become: yes for package install 4 years ago
Steven Robertson c705645ade need to ensure we can install rh-python for testing 4 years ago
Steven Robertson 72e6abf6db attempt at fixing 'sudo runas gid invalid value' since the sudo command looks correct 4 years ago
Steven Robertson 51b43104e0 adding interpreter_discovery tests to ci 4 years ago
Steven Robertson 371ef07683 with statement doesn't exist in early python 4 years ago
Steven Robertson 9eedff97a6 closed fp after writing to temp files 4 years ago
Steven Robertson c9dd36dbc4 pegging back to ans 2.8 4 years ago
Steven Robertson 90d51fcbbd 'fix' test for virtualenv on mac 4 years ago
Steven Robertson 488ab3553e upgrade ansible back to 2.9.4, and fix issue with virtualenv on Mac 4 years ago
Steven Robertson e85720f4d5 peg to a previously-passing ansible version 4 years ago
Steven Robertson 6d179da480 ported over tests from ansible validating python interpreter discovery 4 years ago
Steven Robertson 868de4e5ba added ability to repro current virtualenv bug behind a proxy, and adding verbosity to see why azure is unhappy 4 years ago
David Wilson d6329f3446 Merge devel/290 @ 79b979ec8544ef5d8620c64068d4a42fabf50415 5 years ago
David Wilson 3023ab3b7b issue #633: skip test on older Ansibles. 5 years ago
David Wilson efd82dd35a issue #633: various task_vars fixes
- take host_vars from task_vars too
- make missing task_vars a hard error
- update tests to provide stub task_vars
5 years ago
David Wilson fc09b81949 issue #633: handle meta: reset_connection when become is active
- don't create a new connection during reset if no existing connection
  exists
- strip off last hop in connection stack if PlayContext.become is True.
- log a debug message if reset cannot find an existing connection
5 years ago
David Wilson b21be478e4 issue #627: add test and tweak Reaper behaviour. 5 years ago
David Wilson e86f371b93 issue #621: send ADD_ROUTE earlier and add test for early logging.
Logs were broken because ADD_ROUTE was being sent *after* messages
started flowing from the new child. That's an explicit non-goal of the
design, so fix it.
5 years ago
David Wilson c81f366fc6 issue #590: whoops, import missing test modules 5 years ago
David Wilson bdf6f1b9a9 issue #590: rework ParentEnumerationMethod to recursively handle bad modules
In the worst case it will start with sys.path and resolve everything
from scratch.
5 years ago
David Wilson 5d6e20bc21 tests: add a few extra service tests. 5 years ago
David Wilson bcca47df3c issue #533: update routing to account for DEL_ROUTE propagation race 5 years ago
David Wilson 3d72cf82e3 tests: use defer_sync() Rather than defer() + ancient sync_with_broker() 5 years ago
David Wilson 11923431a6 tests: one case from doas_test was invoking su 5 years ago
David Wilson 8f99ebdf6f tests: hide memory-mapped files from lsof output
Seems to be no saner way to do this.
5 years ago
David Wilson 8a870f1402 issue #625: use exec() instead of subprocess in mitogen_ansible_playbook
This is just to make CTRL+C handling less confusing. Alternate would be
ignoring SIGINT, but this is simpler.
5 years ago
David Wilson 0e489625ed issue #615: regression test 5 years ago
David Wilson 3f5ff17c8c issue #615: route a dead message to recipients when no reply is expected 5 years ago
David Wilson bc275b2526 tests: another random string changed in 2.8.3 5 years ago
David Wilson 7e0c2fd1af tests: fix sudo_flags_failure for Ansible 2.8.3 5 years ago
David Wilson 206a8d4aeb issue #558: disable test on OSX to cope with boundless mediocrity 5 years ago
David Wilson 8dfb3966df issue #558, #582: preserve remote tmpdir if caller did not supply one
The undocumented 'tmp' parameter controls whether _execute_module()
would delete anything on 2.3, so mimic that. This means
_execute_remove_stat() calls will not blow away the temp directory,
which broke the unarchive plugin.
5 years ago
David Wilson 0c1d882547 issue #613: must await 'exit' and 'disconnect' in wait=False test 5 years ago
David Wilson 4b9b1ca24d tests: work around AnsibleModule.run_command() race.
See https://github.com/ansible/ansible/issues/51393
5 years ago
David Wilson 9b45872246 issue #598: allow disabling preempt in terraform 5 years ago
David Wilson 4fa760cd21 issue #613: add tests for all the weird shutdown methods 5 years ago
David Wilson 57012e0f72 Add mitogen.core.now() and use it everywhere; closes #614. 5 years ago
David Wilson 7d4ae6cec4 issue #615: fix up FileService tests for new logic
Can't perform authorization test in the same process so easily any more
since it checks is_privileged
5 years ago
David Wilson 588859423a issue #615: another Py3x fix. 5 years ago
David Wilson 9e1e1ba015 issue #615: Py3x fix. 5 years ago
David Wilson 5af6c9b26f issue #615: use FileService for target->controll file transfers 5 years ago
David Wilson 8bac1cf368 issue #482: another Py3 fix 5 years ago
David Wilson cf23d0dee6 issue #279: add one more test for max_message_size 5 years ago
David Wilson 1e3621a88b tests: fix format string error 5 years ago
David Wilson 83a86a2ce1 issue #482: tests: fail DockerMixin tests if stray processes exist 5 years ago
David Wilson 5924af1566 [security] core: undirectional routing wasn't respected in some cases
When creating a context using Router.method(via=somechild),
unidirectional mode was set on the new child correctly, however if the
child were to call Router.method(), due to a typing mistake the new
child would start without it.

This doesn't impact the Ansible extension, as only forked tasks are
started directly by children, and they are not responsible for routing
messages.

Add test so it can't happen again.
5 years ago
David Wilson ecc570cbda select: make Select.add() handle multiple buffered items.
Previously given something like:

    l = mitogen.core.Latch()
    l.put(1)
    l.put(2)

    s = mitogen.select.Select([l], oneshot=False)
    assert 1 == s.get(block=False)
    assert 2 == s.get(block=False)

The second call would throw TimeoutError, because Select.add() only
queued the receiver/latch once if it was non-empty, rather than once for
each item as should happen.
5 years ago
David Wilson c0d87c0aa1 testlib: use lsof +E for much clearer leaked FD output 5 years ago
David Wilson f4cee16526 parent: zombie reaping v3
Improvements:

- Refactored off Process, separately testable without a connection
- Don't delay Broker shutdown indefinitely for detached children
5 years ago
David Wilson 9c0cb44ee9 issue #170: replace Timer.cancelled with Timer.active
It's more flexable: False can represent 'cancelled' or 'expired',
whereas setting cancelled=True for an expired timer didn't feel right.
5 years ago
David Wilson 22a07a043b tests: fix error in affinity_test 5 years ago
David Wilson 212f6a3529 tests: stop dumping Docker help output in the log. 5 years ago
David Wilson 711f46aee9 tests: move tty_create_child tests together 5 years ago
David Wilson aa06b960f5 parent: define Connection behaviour during Broker.shutdown()
- Connection attempt fails reliably, and it fails with CancelledError
- Add new mitogen.core.unlisten()
- Add test.
5 years ago
David Wilson 19b259a45f issue #549: skip Docker tests if Docker is unavailable 5 years ago
David Wilson dcfd733e6f issue #549: remove Linux-specific assumptions from create_child_test
Some stat fields are implementation-specific, little value even testing
them on Linux
5 years ago
David Wilson e4321f81a0 issue #600: /etc/environment may be non-ASCII in an unknown encoding 5 years ago
David Wilson b75198396d Fix unit_Test.ClientTest following 108015aa22
Closes #604
5 years ago
David Wilson 28b4d63e49 tests: terraform tweaks 5 years ago
David Wilson 5ed0b93669 tests: update gcloud.py to match terraform config 5 years ago