diff options
author | Felix Fontein <felix@fontein.de> | 2018-10-26 02:51:41 +0200 |
---|---|---|
committer | Jordan Borean <jborean93@gmail.com> | 2018-10-26 10:51:41 +1000 |
commit | f19ab56eb4842674cefd169a281e0cd4e3758b5e (patch) | |
tree | 8d33c9b101746a832f4873761faabb98d86f83ec /test/integration/targets/docker_image | |
parent | 300db3af848b1e5865496ced48a74b7736d68e23 (diff) | |
download | ansible-f19ab56eb4842674cefd169a281e0cd4e3758b5e.tar.gz |
docker_image, docker_image_facts, docker_volume: add basic integration tests (#47383)
* Add docker_image_facts tests.
* Add basic integration test for docker_volume.
* Add basic docker_image tests.
* Only start test registry when tests are actually run (i.e. not on CentOS 6).
Diffstat (limited to 'test/integration/targets/docker_image')
5 files changed, 168 insertions, 0 deletions
diff --git a/test/integration/targets/docker_image/aliases b/test/integration/targets/docker_image/aliases new file mode 100644 index 0000000000..2b3832dde5 --- /dev/null +++ b/test/integration/targets/docker_image/aliases @@ -0,0 +1,4 @@ +shippable/posix/group2 +skip/osx +skip/freebsd +destructive diff --git a/test/integration/targets/docker_image/meta/main.yml b/test/integration/targets/docker_image/meta/main.yml new file mode 100644 index 0000000000..07da8c6dda --- /dev/null +++ b/test/integration/targets/docker_image/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - setup_docker diff --git a/test/integration/targets/docker_image/tasks/main.yml b/test/integration/targets/docker_image/tasks/main.yml new file mode 100644 index 0000000000..e9c53b4543 --- /dev/null +++ b/test/integration/targets/docker_image/tasks/main.yml @@ -0,0 +1,51 @@ +--- +- name: Create random name prefix and test registry name + set_fact: + name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}" + registry_name: "{{ 'ansible-test-registry-%0x' % ((2**32) | random) }}" +- name: Create image and container list + set_fact: + inames: [] + cnames: + - "{{ registry_name }}" + +- debug: + msg: "Using name prefix {{ name_prefix }} and test registry name {{ registry_name }}" + +- block: + - name: Start test registry + docker_container: + name: "{{ registry_name }}" + image: registry:2.6.1 + ports: 5000 + + - name: Get registry URL + set_fact: + registry_address: "localhost:{{ docker_container.NetworkSettings.Ports['5000/tcp'].0.HostPort }}" + + - debug: msg="Registry available under {{ registry_address }}" + + - include_tasks: run-test.yml + with_fileglob: + - "tests/*.yml" + + always: + - name: "Make sure all images are removed" + docker_image: + name: "{{ item }}" + state: absent + with_items: "{{ inames }}" + - name: "Get registry logs" + command: "docker logs {{ registry_name }}" + register: registry_logs + - name: "Printing registry logs" + debug: var=registry_logs.stdout_lines + - name: "Make sure all containers are removed" + docker_container: + name: "{{ item }}" + state: absent + stop_timeout: 1 + with_items: "{{ cnames }}" + + # Skip for CentOS 6 + when: ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6 diff --git a/test/integration/targets/docker_image/tasks/run-test.yml b/test/integration/targets/docker_image/tasks/run-test.yml new file mode 100644 index 0000000000..a299937014 --- /dev/null +++ b/test/integration/targets/docker_image/tasks/run-test.yml @@ -0,0 +1,3 @@ +--- +- name: "Loading tasks from {{ item }}" + include_tasks: "{{ item }}" diff --git a/test/integration/targets/docker_image/tasks/tests/basic.yml b/test/integration/targets/docker_image/tasks/tests/basic.yml new file mode 100644 index 0000000000..b09c4fbba1 --- /dev/null +++ b/test/integration/targets/docker_image/tasks/tests/basic.yml @@ -0,0 +1,107 @@ +--- +#################################################################### +## basic ########################################################### +#################################################################### + +- name: Make sure image is not there + docker_image: + name: "hello-world:latest" + state: absent + register: absent_1 + +- name: Make sure image is not there (idempotency) + docker_image: + name: "hello-world:latest" + state: absent + register: absent_2 + +- assert: + that: + - absent_2 is not changed + +- name: Make sure image is there + docker_image: + name: "hello-world:latest" + state: present + pull: no + register: present_1 + +- name: Make sure image is there (idempotent) + docker_image: + name: "hello-world:latest" + state: present + pull: yes + register: present_2 + +- assert: + that: + - present_1 is changed + - present_2 is not changed + +#################################################################### +## interact with test registry ##################################### +#################################################################### + +- name: Make sure image is not there + docker_image: + name: "{{ registry_address }}/test/hello-world:latest" + state: absent + +- name: Push image to test registry + docker_image: + name: "hello-world:latest" + repository: "{{ registry_address }}/test/hello-world" + push: yes + register: push_1 + +- name: Push image to test registry (idempotent) + docker_image: + name: "hello-world:latest" + repository: "{{ registry_address }}/test/hello-world" + push: yes + register: push_2 + +- assert: + that: + - push_1 is changed + - push_2 is not changed + +- name: Get facts of local image + docker_image_facts: + name: "{{ registry_address }}/test/hello-world:latest" + register: facts_1 + +- name: Make sure image is not there + docker_image: + name: "{{ registry_address }}/test/hello-world:latest" + state: absent + +- name: Get facts of local image (absent) + docker_image_facts: + name: "{{ registry_address }}/test/hello-world:latest" + register: facts_2 + +- name: Pull image from test registry + docker_image: + name: "{{ registry_address }}/test/hello-world:latest" + state: present + register: pull_1 + +- name: Pull image from test registry (idempotency) + docker_image: + name: "{{ registry_address }}/test/hello-world:latest" + state: present + register: pull_2 + +- name: Get facts of local image (present) + docker_image_facts: + name: "{{ registry_address }}/test/hello-world:latest" + register: facts_3 + +- assert: + that: + - pull_1 is changed + - pull_2 is not changed + - facts_1.images | length == 1 + - facts_2.images | length == 0 + - facts_3.images | length == 1 |