Commit Graph

394 Commits (e7bf6d4bf9c859800eabc18800b31bda2dca255b)

Author SHA1 Message Date
Matt Clay c37870a735
[stable-2.12] ansible-test - Improve container management. (#79611)
* ansible-test: Set max number of open files in containers to 10240 (#75498)

(cherry picked from commit e50ad6f118)

* ansible-test - Add RHEL 9 support. (#76217)

* Move RHEL pip package install into function.
* Add RHEL 9 support to bootstrap script.
* ansible-test - Add RHEL 9 support.
* Add install and uninstall instructions for RHEL9 to paramiko tests
* Skip incidental_inventory_docker_swarm on RHEL 9.
* Update dnf tests for rhel9
* Fix prepare_http_tests on RHEL 9.
* fix RHEL9 Python discovery tests to match distro map
* Skip subversion test on RHEL 9.0b.

Co-authored-by: Matt Martz <matt@sivel.net>
Co-authored-by: Matt Davis <mrd@redhat.com>
(cherry picked from commit 730194e2b6)

* fix support containers under podman (#76292)

* `podman inspect` falls back to a same-named image if the named container is not present; since eg `http-test-container` is both the name of the image and container, it wasn't working properly under podman in many instances. Switching to `docker|podman container inspect` limits the query to containers only for both podman and docker, allowing the support container detection/creation to work properly.

(cherry picked from commit abac141122)

* ansible-test - Code cleanup. (#76540)

* Add missing typing imports.
* Remove unnecessary non-capturing group.
* Whitespace.
* Add type hints.
* Ignore PyCharm false positives.
* Remove Python 2.x plugin loading logic.
* Remove Python 2.x exception handling.
* Remove Python 2.x display logic.
* Add changelog.

(cherry picked from commit 4e70156d7e)

* ansible-test - Fix type hints.

(cherry picked from commit d2daa67b00)

* ansible-test - Fix plugin loading.

This fixes a traceback when loading plugins that use dataclasses.

(cherry picked from commit 7e814dd4db)

* ansible-test - Remove AIX provisioning support. (#76747)

* ansible-test - Remove AIX provisioning support.
* Remove `skip/aix` integration test aliases.
* Remove build for AIX binary module.

(cherry picked from commit 3a891827b7)

* ansible-test: fix typo in validate-modules (#76765)

The correct error strategy for the to_text method is surrogate_or_strict

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
(cherry picked from commit a0f6747f07)

* ansible-test - Improve help for unsupported cwd. (#76866)

* ansible-test - Improve help for unsupported cwd.

* The `--help` option is now available when an unsupported cwd is in use.
* The `--help` output now shows the same instructions about cwd as would be shown in error messages if the cwd is unsupported.
* Add `--version` support to show the ansible-core version.
* The explanation about cwd usage has been improved to explain more clearly what is required.

Resolves https://github.com/ansible/ansible/issues/64523
Resolves https://github.com/ansible/ansible/issues/67551

(cherry picked from commit de5f60e374)

* ansible-test - Validate collection ns and name.

Resolves https://github.com/ansible/ansible/issues/62079

(cherry picked from commit 26b43f425f)

* ansible-test - Add default for Windows remotes.

(cherry picked from commit 18ed2c64e5)

* ansible-test - Clean up future boilerplate. (#76874)

* ansible-test - Clarify need for empty __init__.py
* ansible-test - Update code-smell boilerplate.
* Update code-smell boilerplate for core.
* Update future boilerplate test for ansible-test.

All ansible-test code (except for targets) and core-specific sanity tests now use the same boilerplate.

The test also checks for unwanted `__future__` and `metaclass` boilerplate.

* Relocate target tools to the correct directory.

Several tools used on target Python versions were incorrectly placed in the controller directory.

(cherry picked from commit d19b506ce8)

* ansible-test - Remove obsolete display of MAXFD.

Use of ``subprocess.MAXFD`` only worked on Python 2.x, which is no longer supported.

(cherry picked from commit dc6b0d4857)

* ansible-test - Code cleanup and refactoring. (#77169)

* Remove unnecessary PyCharm ignores.
* Ignore intentional undefined attribute usage.
* Add missing type hints. Fix existing type hints.
* Fix docstrings and comments.
* Use function to register completion handler.
* Pass strings to display functions.
* Fix CompositeAction handling of dest argument.
* Use consistent types in expressions/assignments.
* Use custom function to keep linters happy.
* Add missing raise for custom exception.
* Clean up key/value type handling in cloud plugins.
* Use dataclass instead of dict for results.
* Add custom type_guard function to check lists.
* Ignore return type that can't be checked (yet).
* Avoid changing types on local variables.

(cherry picked from commit a06fa496d3)

* ansible-test - Simplify type hints.

(cherry picked from commit af2b1361ff)

* Support podman-remote in ansible-test (#75753)

(cherry picked from commit 7cb581ed2c)

* docker_util: Handle error in JSON parsing (#77298)

While getting hostname from container, podman command
fails to return JSON so wrap exception and return
hostname as 'None'

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
(cherry picked from commit 1100289a45)

* ansible-test - Remove RHEL 9.0b support.

Support can be restored once RHEL 9 has been released.

(cherry picked from commit 55f90ba31f)

* ansible-test - Don't fail if network cannot be disconnected (#77472)

* Don't fail if network cannot be disconnected

* add clog frag

(cherry picked from commit 66c5844978)

* ansible-test - Backport `InternalError`

NOTE: This is a partial backport, including only one new class.

(cherry picked from commit b960641759)

* ansible-test - Fix subprocess management. (#77641)

* Run code-smell sanity tests in UTF-8 Mode.
* Update subprocess use in sanity test programs.
* Use raw_command instead of run_command with always=True set.
* Add more capture=True usage.
* Don't expose stdin to subprocesses.
* Capture more output. Warn on retry.
* Add more captures.
* Capture coverage cli output.
* Capture windows and network host checks.
* Be explicit about interactive usage.
* Use a shell for non-captured, non-interactive subprocesses.
* Add integration test to assert no TTY.
* Add unit test to assert no TTY.
* Require blocking stdin/stdout/stderr.
* Use subprocess.run in ansible-core sanity tests.
* Remove unused arg.
* Be explicit with subprocess.run check=False.
* Add changelog.
* Use a Python subprocess instead of a shell.
* Use InternalError instead of Exception.
* Require capture argument.
* Check for invalid raw_command arguments.
* Removed pointless communicate=True usage.
* Relocate stdout w/o capture check.
* Use threads instead of a subprocess for IO.

(cherry picked from commit 5c2d830dea)

* ansible-test - Add support for remote Ubuntu VMs.

(cherry picked from commit 6513453310)

* ansible-test - Fix remote completion validation.

(cherry picked from commit e2200e8dfc)

* ansible-test - Add multi-arch remote support.

(cherry picked from commit 2cc74b04c4)

* ansible-test - Enhance the shell command. (#77734)

* ansible-test - Add shell --export option.

* ansible-test - Support cmd args for shell command.

Also allow shell to be used without a valid layout if no delegation is required.

* ansible-test - Improve stderr/stdout consistency.

By default all output goes to stdout only, with the exception of a fatal error.

When using any of the following, all output defaults to stderr instead:

* sanity with the `--lint` option -- sanity messages to stdout
* coverage analyze -- output to stdout if the output file is `/dev/stdout`
* shell -- shell output to stdout

This fixes issues two main issues:

* Unpredictable output order when using both info and error/warning messages.
* Mixing of lint/command/shell output with bootstrapping messages on stdout.

* ansible-test - Add changelog fragment.

(cherry picked from commit fe349a1ccd)

* ansible-test - Fix remote args restriction.

The platform-specific and global fallbacks were not working with the `--remote` option.

This regression was introduced by https://github.com/ansible/ansible/pull/77711

(cherry picked from commit 76ead1e768)

* ansible-test - Fix shell target options handling.

(cherry picked from commit f933314101)

* Refactor ansible-test integration tests. (#78168)

* Relocate update-ignore.py for easier re-use.

* Add script to ease collection testing.

* Skip ignore rewrite if file does not exist.

* Add integration test for the shebang sanity test.

* Fix ansible-test-no-tty integration test.

Previously the test only verified a TTY was not used if a TTY already existed.
This prevented the test from verifying behavior when run in CI.
Now the test creates a PTY before invoking ansible-test.

* Clean up ansible-test-docker integration test.

(cherry picked from commit f70cc2fb7e)

* ansible-test - Fix TTY and output handling. (#78350)

(cherry picked from commit a3c90dd0bc)

* ansible-test - Parse content config only once. (#78418)

(cherry picked from commit f2abfc4b3d)

* ansible-test - Fix self-test change handling. (#78521)

(cherry picked from commit 99016653a2)

* ansible-test - Fix integration test target filter. (#78862)

- Allow disabled, unsupported, unstable and destructive integration test targets to be selected using their respective prefixes.
- Allow unstable tests to run when targeted changes are made and the ``--allow-unstable-changed`` option is specified (resolves https://github.com/ansible/ansible/issues/74213).

(cherry picked from commit d3d7785472)

* [stable-2.13] ansible-test - Improve container management. (#79538)

* ansible-test - More flexible become support.

(cherry picked from commit 5666c6d6a3)

* ansible-test - Add support for more remotes.

(cherry picked from commit 24d91f552c)

* ansible-test - Enable ACLs on FreeBSD remotes.

This allows integration tests to switch from one unprivileged user
to another, sharing files between the users using ACLs.

(cherry picked from commit b63812bc08)

* ansible-test - Enable ACL support on more remotes. (#78299)

(cherry picked from commit 8bb20fe06b)

* ansible-test - Install `acl` on Alpine remotes. (#78303)

(cherry picked from commit 8565deaae3)

* ansible-test - Use sudo for all remotes. (#78310)

(cherry picked from commit f3f4ad9332)

* ansible-test - Fix Ubuntu 20.04 bootstrapping. (#78551)

(cherry picked from commit d683c5bd21)

* ansible-test - Verify executables are executable. (#78606)

(cherry picked from commit ece85abbc4)

* ansible-test - Use --tmpfs to run containers. (#78605)

(cherry picked from commit 4187707f03)

* ansible-test - Remove Fedora 35 support. (#78720)

(cherry picked from commit 38a82a5cc4)

* ansible-test - Fix container error handling. (#78739)

(cherry picked from commit 79f67ed561)

* ansible-test - Improve container management. (#78550)

See changelogs/fragments/ansible-test-container-management.yml for details.

(cherry picked from commit cda16cc5e9)

* ansible-test - Fix container detection. (#79530)

(cherry picked from commit 80d2f8da02)

* Update test matrix symlinks. (#78737)

* Add remote platform symlinks.

These were already supported by ansible-test.
This change adds the symlinks for use in the CI test matrix.

* Remove obsolete AIX test symlink.

AIX was already removed from ansible-test.

(cherry picked from commit 62221a3be2)

* Use patched containers without VOLUME instruction.

* Make test suite compatible with older ansible.

* Fix compatibility with Python 3.8.

(cherry picked from commit 1d7436935f)

* ansible-test - fix warning to include image name (#79560)

(cherry picked from commit 0a12d8a5bc)

* ansible-test - Fix target PyPI proxy config.

(cherry picked from commit dcc08eec35)

* ansible-test - Fix `--prime-containers` and `--explain` (#79581)

* Remove unused code.
* Fix explain errors.
* Fix `--prime-containers` with docker on cgroup v2.

(cherry picked from commit da3b1d3f50)

* ansible-test - Support RSA SHA-1 for SSH clients.

(cherry picked from commit 75b60b17ee)

* ansible-test - Limit paramiko to < 2.9.0

(cherry picked from commit d6588293fb)

* Add more retries to ansible-test-container test.

(cherry picked from commit f6c0e22f98)

* ansible-test - Improve container startup handling.

Also improve the ansible-test-container integration test:

 - Add coverage for the no-probe code path.
 - Add work-arounds for centos6 containers (to support backporting).
 - Avoid systemd debug when the container doesn't use cgroup.

(cherry picked from commit 04fc98c794)

* Fix shebang test.

A false positive is generated by the test and a fix was never backported to stable-2.12.

Co-authored-by: Andrew Klychkov <aklychko@redhat.com>
Co-authored-by: Matt Davis <nitzmahone@users.noreply.github.com>
Co-authored-by: Dimitri Savineau <dsavinea@redhat.com>
Co-authored-by: Matt Martz <matt@sivel.net>
Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com>
Co-authored-by: Martin Krizek <martin.krizek@gmail.com>
3 years ago
Matt Clay 7df9c1bc91
[stable-2.12] ansible-test - Managed venv fixes. (#77100)
* ansible-test - Remove cap on cryptography version.

(cherry picked from commit 00a2b7788e)

* ansible-test - Fix consistency of managed venvs. (#77028)

(cherry picked from commit 68fb3bf90e)

* Avoid system-site-packages in AZP coverage venvs.

The use of `--venv-system-site-packages` was an optimization to use the `coverage` package pre-installed in the AZP test container.
However, now that the venv is bootstrapped by ansible-test that optimization no longer makes sense, since other downloads are already taking place.

(cherry picked from commit 177336a9d3)

* ansible-test - Clean up venv code.

(cherry picked from commit addb9baec2)

* Adjust virtualenv version for Python 2.6.

* Adjust bootstrap URL to work with Python 2.6.

* Enable PyPI proxy for generic tests.

This is needed to support ansible-test integration tests on Python 2.6.

* Freeze plugin import sanity test requirements.

Based on https://github.com/ansible/ansible/pull/76308
4 years ago
Matt Clay 48e2fc3b9b [stable-2.12] Fix Windows CI scripts.
The scripts now use `--list-targets -v` instead of `--explain` to evaluate changes.

This is faster and does not trigger parsing of a non-existent inventory file.
(cherry picked from commit 97f729c3d6)

Co-authored-by: Matt Clay <matt@mystile.com>
4 years ago
Matt Clay 4ea8d9a782
ansible-test - split controller/target testing (#75605) 4 years ago
Matt Clay f6c292d210 Remove unused CI scripts. 5 years ago
Matt Clay bdffb59978
Update Python versions used to run network tests. (#74647) 5 years ago
Matt Clay d85809d592 Update Python versions used to run Windows tests. 5 years ago
Matt Clay 68e9e1c999
Switch incidental OS X tests to macOS. (#74564)
* Switch incidental OS X tests to macOS.
* Rename incidental osx.sh to macos.sh.
5 years ago
Matt Clay be7de9844e Remove obsolete Shippable specific scripts.
Also remove some other unncessary code from CI scripts.
5 years ago
Matt Davis 4c5ce5a1a9
module compat for py3.8+ controller (#73423)
* module compat for py3.8+ controller

* replaced internal usages of selinux bindings with internal ctypes binding (allows basic selinux operations from any Python interpreter), plus tests

* added new respawn_module API to allow modules to import Python packages that are only available under a well-known interpreter, plus tests

* added respawn logic to modules that need Python libs from a specific system interpreter (apt, apt_repository, dnf, yum)

minimize internal HAVE_SELINUX usage

spurious junk

pep8

* pylint fixes

* add RHEL8 Python 3.8 testing

* more pylint

* import sanity

* unit tests

* changelog update

* fix a bunch of stuff

* tweak changelog

* fix setup_rpm_repo on EL8

* misc sanity/test fixes

* misc feedback tweaks

* fix import fallback in test module

* fix selinux MU test

* fix dnf tests to avoid python-dependent test packages

* add trailing LFs to aliases

* fix yum tests to avoid test package with Python deps

* hack create_repo for EL6 to create noarch package
5 years ago
Matt Clay 3a633b278d [devel] Azure Pipelines configuration. 5 years ago
Sam Doran 6984081111
Test changes to allow using "macos" test image (#71849)
* Add link to remote.sh from macos.sh
* Add skip/macos to tests that have skip/osx
5 years ago
Rick Elrod 4f54fb8d43
Remove incidental azure tests (#71164)
Change:
- All incidental coverage from these tests has moved to intentional
  coverage.

Test Plan:
- CI

Signed-off-by: Rick Elrod <rick@elrod.me>
6 years ago
Matt Martz fa1fb2d13b
Test ansible-galaxy against pulp/pulp_ansible (#69605)
* Test galaxy cli against pulp

* linting fix

* Renames and small fixes

* Better handling for resetting pulp

* Clean up some things, add a comment

* I can't spell

* Bump fallaxy, use alternate pulp image

* Only reset pulp when we're are executing against pulp

* Update for updated pulp container

* Update some comments with correct URLs and typos

* Linting fix

* Pin pulp-fedora31 to a digest

* Address review comments for documentation
6 years ago
Matt Clay 0faec62354 Remove temporary migration hack from CI scripts. 6 years ago
Felix Fontein a114da80ee
Use antsibull-changelog instead of packaged changelog generator (#69313)
Replace the ansible-base changelog linting and generation tool with antsibull-changelog and make it available for linting collections. Previously changelog linting was limited to ansible-base.
6 years ago
Jordan Borean f5f3ba7ab5
ansible-test - fix up relative util import for powershell validate-modules (#69753)
* ansible-test - fix up relative util import for powershell validate-modules

* Use different tactic for generic group

* Use python 2 and 3
6 years ago
Matt Clay 5fc01c0a1d
Use a custom build container on Shippable. (#69660)
* Use a custom build container on Shippable.

This supports key generation before git_sync, to avoid issues with pre-migration PRs.

If the node pool is switched to another version, a matching build container should be built and used.

* Don't kill our own custom container.
6 years ago
Yanis Guenane 46d82179d8
Testing: Add support for CentOS Linux On Power platform (#68130)
* Testing: Add CentOS Linux On Power platform

* Add arch designation to remotes.

This avoids overloading the provider with the arch.

Also add a changelog entry.

Co-authored-by: Matt Clay <matt@mystile.com>
6 years ago
Matt Clay 41f6c73be0 Update ansible-test network test provisioning. (#68220)
* Update network provisioning defaults.

* Update network test requirements.
6 years ago
Matt Clay 27ce6dbc1f Remove test support option from ansible-test.
This option was added to facilitate migration and is no longer needed.
6 years ago
Matt Clay fb3e6d6b00 Remove unused Shippable scripts. 6 years ago
Matt Clay 4cecacb915 Update Shippable test matrix. (#68117)
* Update Shippable test matrix.

* Remove unit test groups.

* Remove extra windows groups.
6 years ago
Matt Clay a51266ba85 Skip removed windows CI groups after migration. 6 years ago
Matt Clay 3508e1197e
Update test matrix to prepare for migration. (#67983)
* Split fallaxy tests into their own group.

This keeps expected pass/fail tests separate during migration prep.

* Move network tests down in matrix.

This will help keep pass/fail tests grouped together during migration prep.

* Group all incidental tests together.

This will keep pass/fail tests separate leading up to migration.
6 years ago
Matt Clay f4b923a29b Automatically enable test plugins after migration. 6 years ago
Matt Clay 64782dd815
Split unit tests into 3 groups. (#67917) 6 years ago
Matt Clay 42eba3ce25 Increase unit test timeout. 6 years ago
Matt Clay bcddf2bda9 Increase unit test coverage timeout. 6 years ago
Matt Clay 7c8b046b5f
Fourth batch of incidental integration tests. (#67873)
* Copy in incidental posix tests.

* Update incidental test aliases.

* Update target names.

* Add support plugins.

* Fix paths.

* Update ignores.

* Update integration-aliases sanity test.

* Add incidental tests to CI.
6 years ago
Matt Clay f735fd672a
Third batch of incidental integration tests. (#67830)
* Copy in incidental windows tests.

* Update incidental test aliases.

* Add support plugins.

* Update target references.

* Update sanity ignores.

* Update integration-aliases test.

* Add to CI.
6 years ago
Matt Clay e3591223a0
Second batch of incidental integration tests. (#67765)
* Update incidental test aliases.

* Rewrite target references for renamed targets.

* Add incidental tests to CI.

* Update sanity tests for incidental cloud tests.

* Initial copy of incidental tests.

* Copy contrib files into test.

* Update paths in test.

* Add support plugins.

* Update plugin to work around missing deps.

* Update sanity ignores.

* Fix matrix entries.

* Remove debug echo.
6 years ago
Matt Clay 4e571248a9
First batch of incidental integration tests. (#67717)
* Initial copy of incidental network tests.

* Update incidental test aliases.

* Add incidental tests to CI.

* Rewrite module references in tests.

This should not be necessary once module redirection is supported.

* Rewrite target references for renamed targets.

* Add support collections for incidental tests.

* Add ignores for test support code.

* Remove echo used for debugging.
6 years ago
John Barker 9b91068e23 Remove unused DCI script 6 years ago
Matt Clay 2dadc259d3
Split hcloud tests into two CI groups. (#67683)
* Split hcloud tests into two CI groups.

This will hopefully resolve CI failures when running with code coverage.

* Fix smoketest logic.
6 years ago
Matt Clay 4a885072af Split vyos tests to avoid timeouts with coverage. 6 years ago
Matt Clay a64b562071
Fix up network testing on Shippable. (#67678)
This prepares for code coverage collection for initial setup of incidental test coverage.
6 years ago
Matt Clay 19f6fc68d4
Relocate Shippable tools. (#67556)
* Move Shippable tools to hacking directory.

These limits the `test/utils/shippable/` directory to scripts required for CI.

* Fix `test/utils/shippable/` file classification.

* Update package-data sanity test.
6 years ago
Matt Clay 80561ccef0 Improve sanity test handling in CI after migration. 6 years ago
Matt Clay a0242b2173 Improve unit test handling in CI after migration. (#67217)
* Improve unit test handling in CI after migration.

* Fix undefined var in bash 4.3 and earlier.

See https://git.savannah.gnu.org/cgit/bash.git/tree/CHANGES?id=3ba697465bc74fab513a26dea700cc82e9f4724e#n878
6 years ago
Matt Clay 5e68bb3d93
Add code coverage target analysis to ansible-test. (#67141)
* Refactor coverage file enumeration.
* Relocate sanitize_filename function.
* Support sets when writing JSON files.
* Generalize setting of info_stderr mode.
* Split out coverage path checking.
* Split out collection regex logic.
* Improve sanitize_filename type hints and docs.
* Clean up coverage erase command.
* Fix docs and type hints for initialize_coverage.
* Update type hints on CoverageConfig.
* Split out logic for finding modules.
* Split out arc enumeration.
* Split out powershell coverage enumeration.
* Raise verbosity level of empty coverage warnings.
* Add code coverage target analysis to ansible-test.
6 years ago
Yanis Guenane 4fd2dce7f3
Testing: Add support for AIX platform (#65802) 6 years ago
Matt Clay 0971a0e7bc Consolidate remote Shippable scripts. 6 years ago
Matt Clay 5c1fe78685
Move CI coverage stub to sanity/5. (#66827) 6 years ago
Matt Clay 452ade007e Clean up Shippable scripts in tools directory. 6 years ago
Matt Clay 78e476eb20 Increase unit test timeout in CI. 6 years ago
Matt Clay d2562cde1c Temporarily increase CI timeout. 6 years ago
Matt Clay ada02f1966 Limit Shippable matrix check to ansible repo. 6 years ago
Gonéri Le Bouder cc758ea574 Revert "shippable: temporary bump the timeout for Azure jobs"
The Azure timeout should not accure anymore since
173d47d1f4.

This reverts commit aaa8835311.
6 years ago
Sam Doran c9e7a2122d
Increase unit test timeout to account for long image download times (#61717) 6 years ago