docker_swarm: extend tests (part I) (#53005)

* Restructure tests.

* Allow tests to work when ansible_default_ipv4.address is undefined.

(cherry picked from commit e017d94766)
This commit is contained in:
Felix Fontein 2019-02-26 20:18:30 +01:00 committed by Toshio Kuratomi
parent 2ee64fd507
commit 7c500a4002
4 changed files with 154 additions and 109 deletions

View file

@ -1,4 +1,17 @@
- include_tasks: test_swarm.yml
---
# Run the tests
- block:
- include_tasks: run-test.yml
with_fileglob:
- "tests/*.yml"
always:
- name: Cleanup
docker_swarm:
state: absent
force: true
diff: no
when: docker_py_version is version('2.6.0', '>=') and docker_api_version is version('1.25', '>=')
- fail: msg="Too old docker / docker-py version to run docker_swarm tests!"

View file

@ -0,0 +1,8 @@
---
- name: Make sure we're not already using Docker swarm
docker_swarm:
state: absent
force: true
diff: no
- name: "Loading tasks from {{ item }}"
include_tasks: "{{ item }}"

View file

@ -1,108 +0,0 @@
---
- block:
- name: Make sure we're not already using Docker swarm
docker_swarm:
state: absent
force: true
- name: Test parameters with state=join
docker_swarm:
state: join
ignore_errors: yes
register: output
- name: assert failure when called with state=join and no advertise_addr,remote_addrs,join_token
assert:
that:
- 'output.failed'
- 'output.msg == "state is join but all of the following are missing: advertise_addr, remote_addrs, join_token"'
- name: Test parameters with state=remove
docker_swarm:
state: remove
ignore_errors: yes
register: output
- name: assert failure when called with state=remove and no node_id
assert:
that:
- 'output.failed'
- 'output.msg == "state is remove but all of the following are missing: node_id"'
- name: Create a Swarm cluster (check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
check_mode: yes
register: output_1
- name: Create a Swarm cluster
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
register: output_2
- name: Create a Swarm cluster (idempotent)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
register: output_3
- name: Create a Swarm cluster (idempotent, check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
check_mode: yes
register: output_4
- name: assert changed when create a new swarm cluster
assert:
that:
- 'output_1 is changed'
- 'output_2 is changed'
- 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- 'output_2.swarm_facts.JoinTokens.Manager'
- 'output_2.swarm_facts.JoinTokens.Worker'
- 'output_3 is not changed'
- 'output_4 is not changed'
- name: Remove a Swarm cluster (check mode)
docker_swarm:
state: absent
force: true
check_mode: yes
register: output_1
- name: Remove a Swarm cluster
docker_swarm:
state: absent
force: true
register: output_2
- name: Remove a Swarm cluster (idempotent)
docker_swarm:
state: absent
force: true
register: output_3
- name: Remove a Swarm cluster (idempotent, check mode)
docker_swarm:
state: absent
force: true
check_mode: yes
register: output_4
- name: assert changed when remove a swarm cluster
assert:
that:
- 'output_1 is changed'
- 'output_2 is changed'
- 'output_2.actions[0] == "Node has left the swarm cluster"'
- 'output_3 is not changed'
- 'output_4 is not changed'
always:
- name: Cleanup
docker_swarm:
state: absent
force: true

View file

@ -0,0 +1,132 @@
---
####################################################################
## Errors ##########################################################
####################################################################
- name: Test parameters with state=join
docker_swarm:
state: join
ignore_errors: yes
register: output
- name: assert failure when called with state=join and no advertise_addr,remote_addrs,join_token
assert:
that:
- 'output.failed'
- 'output.msg == "state is join but all of the following are missing: advertise_addr, remote_addrs, join_token"'
- name: Test parameters with state=remove
docker_swarm:
state: remove
ignore_errors: yes
register: output
- name: assert failure when called with state=remove and no node_id
assert:
that:
- 'output.failed'
- 'output.msg == "state is remove but all of the following are missing: node_id"'
####################################################################
## Creation ########################################################
####################################################################
- name: Create a Swarm cluster (check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
check_mode: yes
diff: yes
register: output_1
- name: Create a Swarm cluster
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
diff: yes
register: output_2
- name: Create a Swarm cluster (idempotent)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
diff: yes
register: output_3
- name: Create a Swarm cluster (idempotent, check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
check_mode: yes
diff: yes
register: output_4
- name: assert changed when create a new swarm cluster
assert:
that:
- 'output_1 is changed'
- 'output_1.diff.before is defined'
- 'output_1.diff.after is defined'
- 'output_2 is changed'
- 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- 'output_2.swarm_facts.JoinTokens.Manager'
- 'output_2.swarm_facts.JoinTokens.Worker'
- 'output_2.diff.before is defined'
- 'output_2.diff.after is defined'
- 'output_3 is not changed'
- 'output_3.diff.before is defined'
- 'output_3.diff.after is defined'
- 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'
####################################################################
## Removal #########################################################
####################################################################
- name: Remove a Swarm cluster (check mode)
docker_swarm:
state: absent
force: true
check_mode: yes
diff: yes
register: output_1
- name: Remove a Swarm cluster
docker_swarm:
state: absent
force: true
diff: yes
register: output_2
- name: Remove a Swarm cluster (idempotent)
docker_swarm:
state: absent
force: true
diff: yes
register: output_3
- name: Remove a Swarm cluster (idempotent, check mode)
docker_swarm:
state: absent
force: true
check_mode: yes
diff: yes
register: output_4
- name: assert changed when remove a swarm cluster
assert:
that:
- 'output_1 is changed'
- 'output_1.diff.before is defined'
- 'output_1.diff.after is defined'
- 'output_2 is changed'
- 'output_2.actions[0] == "Node has left the swarm cluster"'
- 'output_2.diff.before is defined'
- 'output_2.diff.after is defined'
- 'output_3 is not changed'
- 'output_3.diff.before is defined'
- 'output_3.diff.after is defined'
- 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'