Fix yum integration tests (#35177)

* use tests instead of filters

* Don't check 'rc', use success/failed tests

- yum module use 'fail_json' which set 'failed'
- 'rc' is for backward compatibility:
  bbd6b8bb42/lib/ansible/executor/task_executor.py (L571)
- besides yum module doesn't document any return values

* Allow to run tests twice in a row

ansible-test is executed with '--retry-on-error' switch, then tests must
be able to executed twice in a row.

Error was:
TASK [yum : install group] ***
ok: [testhost] => {
    "attempts": 1,
    "changed": false,
    "failed": false,
    "invocation": { [...] },
    "msg": "",
    "rc": 0,
    "results": []
}

TASK [yum : verify installation of the group] ***
fatal: [testhost]: FAILED! => {
    "assertion": "yum_result.changed",
    "attempts": 1,
    "changed": false,
    "evaluated_to": false,
    "failed": true
}
This commit is contained in:
Pilou 2018-01-27 12:35:18 +01:00 committed by Martin Krizek
parent eeeea1406b
commit 47d8d8c36e
2 changed files with 96 additions and 106 deletions

View file

@ -18,7 +18,32 @@
# Note: We install the yum package onto Fedora so that this will work on dnf systems
# We want to test that for people who don't want to upgrade their systems.
- include: 'yum.yml'
- block:
- include: 'yum.yml'
always:
- name: remove installed packages
yum:
name:
- bc
- sos
state: absent
# On CentOS 6 'yum groupremove "Development Tools"' fails when groupremove_leaf_only
# isn't enabled, that's why a package belonging to "Development Tools" (autoconf)
# is removed instead of the whole group.
- name: remove installed group
yum:
name: "@Development tools"
state: absent
when:
- (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and ansible_distribution_major_version|int > 6) or ansible_distribution in ['Fedora']
- name: remove a package from a group
yum:
name: 'autoconf'
state: absent
when:
- ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and ansible_distribution_major_version|int <= 6
when:
- ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux', 'Fedora']
- ansible_python.version.major == 2

View file

@ -5,14 +5,14 @@
- name: check sos with rpm
shell: rpm -q sos
failed_when: False
ignore_errors: True
register: rpm_result
- name: verify uninstallation of sos
assert:
that:
- "yum_result.rc == 0"
- "rpm_result.rc == 1"
- "yum_result is success"
- "rpm_result is failed"
# UNINSTALL AGAIN
- name: uninstall sos again in check mode
@ -23,7 +23,7 @@
- name: verify no change on re-uninstall in check mode
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
- name: uninstall sos again
yum: name=sos state=removed
@ -32,7 +32,7 @@
- name: verify no change on re-uninstall
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
# INSTALL
- name: install sos in check mode
@ -43,32 +43,28 @@
- name: verify installation of sos in check mode
assert:
that:
- "yum_result.changed"
- "yum_result is changed"
- name: install sos
yum: name=sos state=present
register: yum_result
- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_result
- name: verify installation of sos
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_result.rc == 0"
- "yum_result is success"
- "yum_result is changed"
- name: verify yum module outputs
assert:
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: check sos with rpm
shell: rpm -q sos
# INSTALL AGAIN
- name: install sos again in check mode
yum: name=sos state=present
@ -77,7 +73,7 @@
- name: verify no change on second install in check mode
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
- name: install sos again
yum: name=sos state=present
@ -85,7 +81,7 @@
- name: verify no change on second install
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
# INSTALL AGAIN WITH LATEST
- name: install sos again with state latest in check mode
@ -95,7 +91,7 @@
- name: verify install sos again with state latest in check mode
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
- name: install sos again with state latest idempotence
yum: name=sos state=latest
@ -103,7 +99,7 @@
- name: verify install sos again with state latest idempotence
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
# INSTALL WITH LATEST
- name: uninstall sos
@ -121,7 +117,7 @@
- name: verify install sos with state latest in check mode
assert:
that:
- "yum_result.changed"
- "yum_result is changed"
- name: install sos with state latest
yum: name=sos state=latest
@ -129,7 +125,7 @@
- name: verify install sos with state latest
assert:
that:
- "yum_result.changed"
- "yum_result is changed"
- name: install sos with state latest idempotence
yum: name=sos state=latest
@ -137,50 +133,43 @@
- name: verify install sos with state latest idempotence
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
# Multiple packages
- name: uninstall sos and bc
yum: name=sos,bc state=removed
register: yum_result
- name: check sos with rpm
shell: rpm -q sos
failed_when: False
ignore_errors: True
register: rpm_sos_result
- name: check bc with rpm
shell: rpm -q bc
failed_when: False
ignore_errors: True
register: rpm_bc_result
- name: verify packages installed
assert:
that:
- "rpm_sos_result.rc != 0"
- "rpm_bc_result.rc != 0"
- "rpm_sos_result is failed"
- "rpm_bc_result is failed"
- name: install sos and bc as comma separated
yum: name=sos,bc state=present
register: yum_result
- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result
- name: check bc with rpm
shell: rpm -q bc
failed_when: False
register: rpm_bc_result
- name: verify packages installed
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_sos_result.rc == 0"
- "rpm_bc_result.rc == 0"
- "yum_result is success"
- "yum_result is changed"
- name: check sos with rpm
shell: rpm -q sos
- name: check bc with rpm
shell: rpm -q bc
- name: uninstall sos and bc
yum: name=sos,bc state=removed
@ -194,23 +183,17 @@
state: present
register: yum_result
- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result
- name: check bc with rpm
shell: rpm -q bc
failed_when: False
register: rpm_bc_result
- name: verify packages installed
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_sos_result.rc == 0"
- "rpm_bc_result.rc == 0"
- "yum_result is success"
- "yum_result is changed"
- name: check sos with rpm
shell: rpm -q sos
- name: check bc with rpm
shell: rpm -q bc
- name: uninstall sos and bc
yum: name=sos,bc state=removed
@ -222,23 +205,17 @@
state: present
register: yum_result
- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result
- name: check sos with rpm
shell: rpm -q bc
failed_when: False
register: rpm_bc_result
- name: verify packages installed
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_sos_result.rc == 0"
- "rpm_bc_result.rc == 0"
- "yum_result is success"
- "yum_result is changed"
- name: check sos with rpm
shell: rpm -q sos
- name: check sos with rpm
shell: rpm -q bc
- name: uninstall sos and bc
yum: name=sos,bc state=removed
@ -260,26 +237,22 @@
yum: name=sos state=present installroot='/'
register: yum_result
- name: check sos with rpm
shell: rpm -q sos --root=/
failed_when: False
register: rpm_result
- name: verify installation of sos
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_result.rc == 0"
- "yum_result is success"
- "yum_result is changed"
- name: verify yum module outputs
assert:
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: check sos with rpm
shell: rpm -q sos --root=/
- name: uninstall sos
yum:
name: sos
@ -296,15 +269,14 @@
- name: verify installation of the group
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "yum_result is success"
- "yum_result is changed"
- name: verify yum module outputs
assert:
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: install the group again
@ -316,15 +288,14 @@
- name: verify nothing changed
assert:
that:
- "yum_result.rc == 0"
- "not yum_result.changed"
- "yum_result is success"
- "not yum_result is changed"
- name: verify yum module outputs
assert:
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: install the group again but also with a package that is not yet installed
@ -338,15 +309,14 @@
- name: verify sos is installed
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "yum_result is success"
- "yum_result is changed"
- name: verify yum module outputs
assert:
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: try to install the group again, with --check to check 'changed'
@ -359,7 +329,7 @@
- name: verify nothing changed
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
- name: verify yum module outputs
assert:
@ -378,8 +348,8 @@
- name: verify installation of the non existing group failed
assert:
that:
- "yum_result.rc == 1"
- "not yum_result.changed"
- "yum_result is failed"
- "not yum_result is changed"
- "yum_result is failed"
- name: verify yum module outputs
@ -387,7 +357,6 @@
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: try to install non existing file
@ -401,7 +370,7 @@
assert:
that:
- "yum_result is failed"
- "not yum_result.changed"
- "not yum_result is changed"
- name: verify yum module outputs
assert:
@ -420,7 +389,7 @@
assert:
that:
- "yum_result is failed"
- "not yum_result.changed"
- "not yum_result is changed"
- name: verify yum module outputs
assert:
@ -454,7 +423,7 @@
- name: verify httpd not installed
assert:
that:
- "not yum_result.changed"
- "not yum_result is changed"
- "'Packages providing httpd not installed due to update_only specified' in yum_result.results"
- name: try to install not compatible arch rpm, should fail
@ -467,8 +436,7 @@
- name: verify that yum failed
assert:
that:
- "yum_result.rc == 1"
- "not yum_result.changed"
- "not yum_result is changed"
- "yum_result is failed"
# setup for testing installing an RPM from url
@ -499,8 +467,8 @@
- name: verify installation
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "yum_result is success"
- "yum_result is changed"
- "yum_result is not failed"
- name: verify yum module outputs
@ -508,7 +476,6 @@
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: install the downloaded rpm again
@ -520,8 +487,8 @@
- name: verify installation
assert:
that:
- "yum_result.rc == 0"
- "not yum_result.changed"
- "yum_result is success"
- "not yum_result is changed"
- "yum_result is not failed"
- name: verify yum module outputs
@ -529,7 +496,6 @@
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: clean up
@ -546,8 +512,8 @@
- name: verify installation
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "yum_result is success"
- "yum_result is changed"
- "yum_result is not failed"
- name: verify yum module outputs
@ -555,7 +521,6 @@
that:
- "'changed' in yum_result"
- "'msg' in yum_result"
- "'rc' in yum_result"
- "'results' in yum_result"
- name: Create a temp RPM file which does not contain nevra information