docker_swarm: extend tests (part I) (#53005)
* Restructure tests. * Allow tests to work when ansible_default_ipv4.address is undefined.
This commit is contained in:
parent
cd63a0714b
commit
e017d94766
4 changed files with 154 additions and 135 deletions
|
@ -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', '>=')
|
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!"
|
- fail: msg="Too old docker / docker-py version to run docker_swarm tests!"
|
||||||
|
|
8
test/integration/targets/docker_swarm/tasks/run-test.yml
Normal file
8
test/integration/targets/docker_swarm/tasks/run-test.yml
Normal 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 }}"
|
|
@ -1,134 +0,0 @@
|
||||||
---
|
|
||||||
- block:
|
|
||||||
- name: Make sure we're not already using Docker swarm
|
|
||||||
docker_swarm:
|
|
||||||
state: absent
|
|
||||||
force: true
|
|
||||||
diff: no
|
|
||||||
|
|
||||||
- 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
|
|
||||||
diff: yes
|
|
||||||
register: output_1
|
|
||||||
|
|
||||||
- name: Create a Swarm cluster
|
|
||||||
docker_swarm:
|
|
||||||
state: present
|
|
||||||
advertise_addr: "{{ansible_default_ipv4.address}}"
|
|
||||||
diff: yes
|
|
||||||
register: output_2
|
|
||||||
|
|
||||||
- name: Create a Swarm cluster (idempotent)
|
|
||||||
docker_swarm:
|
|
||||||
state: present
|
|
||||||
advertise_addr: "{{ansible_default_ipv4.address}}"
|
|
||||||
diff: yes
|
|
||||||
register: output_3
|
|
||||||
|
|
||||||
- name: Create a Swarm cluster (idempotent, check mode)
|
|
||||||
docker_swarm:
|
|
||||||
state: present
|
|
||||||
advertise_addr: "{{ansible_default_ipv4.address}}"
|
|
||||||
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'
|
|
||||||
|
|
||||||
- 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'
|
|
||||||
|
|
||||||
always:
|
|
||||||
- name: Cleanup
|
|
||||||
docker_swarm:
|
|
||||||
state: absent
|
|
||||||
force: true
|
|
||||||
diff: no
|
|
132
test/integration/targets/docker_swarm/tasks/tests/basic.yml
Normal file
132
test/integration/targets/docker_swarm/tasks/tests/basic.yml
Normal 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'
|
Loading…
Reference in a new issue