From 259b2e06a46771a08b6c85f76a25b35d7e163b8e Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sun, 17 Mar 2019 09:16:18 +0100 Subject: [PATCH] docker_swarm inventory plugin: add basic integration tests (#53908) * Add basic docker_swarm inventory plugin integration tests. * Call dependency explicitly. --- .../targets/inventory_docker_swarm/aliases | 10 ++++++ .../inventory_1.docker_swarm.yml | 3 ++ .../inventory_docker_swarm/meta/main.yml | 3 ++ .../playbooks/swarm_cleanup.yml | 9 +++++ .../playbooks/swarm_setup.yml | 11 ++++++ .../playbooks/test_inventory_1.yml | 34 +++++++++++++++++++ .../targets/inventory_docker_swarm/runme.sh | 20 +++++++++++ 7 files changed, 90 insertions(+) create mode 100644 test/integration/targets/inventory_docker_swarm/aliases create mode 100644 test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml create mode 100644 test/integration/targets/inventory_docker_swarm/meta/main.yml create mode 100644 test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml create mode 100644 test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml create mode 100644 test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml create mode 100755 test/integration/targets/inventory_docker_swarm/runme.sh diff --git a/test/integration/targets/inventory_docker_swarm/aliases b/test/integration/targets/inventory_docker_swarm/aliases new file mode 100644 index 00000000000..47a4e975b6a --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/aliases @@ -0,0 +1,10 @@ +shippable/posix/group2 +skip/osx +skip/freebsd +destructive +skip/docker # The tests sometimes make docker daemon unstable; hence, + # we skip all docker-based CI runs to avoid disrupting + # the whole CI system. On VMs, we restart docker daemon + # after finishing the tests to minimize potential effects + # on other tests. +needs/root diff --git a/test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml b/test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml new file mode 100644 index 00000000000..4ccbab6f62e --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml @@ -0,0 +1,3 @@ +--- +plugin: docker_swarm +host: unix://var/run/docker.sock diff --git a/test/integration/targets/inventory_docker_swarm/meta/main.yml b/test/integration/targets/inventory_docker_swarm/meta/main.yml new file mode 100644 index 00000000000..07da8c6ddae --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - setup_docker diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml b/test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml new file mode 100644 index 00000000000..85835b4f9dd --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml @@ -0,0 +1,9 @@ +--- +- hosts: 127.0.0.1 + connection: local + gather_facts: no + tasks: + - name: Make sure swarm is removed + docker_swarm: + state: absent + force: yes diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml b/test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml new file mode 100644 index 00000000000..b171415bca2 --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml @@ -0,0 +1,11 @@ +--- +- hosts: 127.0.0.1 + connection: local + tasks: + - name: Setup docker + include_role: + name: ../../setup_docker + - name: Create a Swarm cluster + docker_swarm: + state: present + advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}" diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml b/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml new file mode 100644 index 00000000000..9dd85fc2b3b --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml @@ -0,0 +1,34 @@ +--- +- hosts: all + connection: local # otherwise Ansible will complain that it cannot connect via ssh to 127.0.0.1:22 + tasks: + - name: Check for groups + assert: + that: + - "groups.manager | length > 0" + - "groups.worker | length >= 0" + - "groups.leader | length == 1" + run_once: yes + + - name: List manager group + debug: + var: groups.manager + run_once: yes + + - name: List worker group + debug: + var: groups.worker + run_once: yes + + - name: List leader group + debug: + var: groups.leader + run_once: yes + + - name: Print ansible_host per host + debug: + var: ansible_host + + - name: Print docker_swarm_node_attributes per host + debug: + var: docker_swarm_node_attributes diff --git a/test/integration/targets/inventory_docker_swarm/runme.sh b/test/integration/targets/inventory_docker_swarm/runme.sh new file mode 100755 index 00000000000..3eb775a700c --- /dev/null +++ b/test/integration/targets/inventory_docker_swarm/runme.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +[[ -n "$DEBUG" || -n "$ANSIBLE_DEBUG" ]] && set -x + +set -euo pipefail + +cleanup() { + echo "Cleanup" + ansible-playbook playbooks/swarm_cleanup.yml + echo "Done" + exit 0 +} + +trap cleanup INT TERM EXIT + +echo "Setup" +ansible-playbook playbooks/swarm_setup.yml + +echo "Test docker_swarm inventory 1" +ansible-playbook -i inventory_1.docker_swarm.yml playbooks/test_inventory_1.yml