summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/set_stats
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/set_stats')
-rw-r--r--test/integration/targets/set_stats/aliases2
-rwxr-xr-xtest/integration/targets/set_stats/runme.sh13
-rw-r--r--test/integration/targets/set_stats/test_aggregate.yml13
-rw-r--r--test/integration/targets/set_stats/test_simple.yml79
4 files changed, 107 insertions, 0 deletions
diff --git a/test/integration/targets/set_stats/aliases b/test/integration/targets/set_stats/aliases
new file mode 100644
index 0000000..2e198a7
--- /dev/null
+++ b/test/integration/targets/set_stats/aliases
@@ -0,0 +1,2 @@
+shippable/posix/group4
+context/controller # this is a controller-only action, the module is just for documentation
diff --git a/test/integration/targets/set_stats/runme.sh b/test/integration/targets/set_stats/runme.sh
new file mode 100755
index 0000000..27193dc
--- /dev/null
+++ b/test/integration/targets/set_stats/runme.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+set -eux
+
+export ANSIBLE_SHOW_CUSTOM_STATS=yes
+
+# Simple tests
+ansible-playbook test_simple.yml -i "${INVENTORY_PATH}"
+
+# This playbook does two set_stats calls setting my_int to 10 and 15.
+# The aggregated output should add to 25.
+output=$(ansible-playbook test_aggregate.yml -i "${INVENTORY_PATH}" | grep -c '"my_int": 25')
+test "$output" -eq 1
diff --git a/test/integration/targets/set_stats/test_aggregate.yml b/test/integration/targets/set_stats/test_aggregate.yml
new file mode 100644
index 0000000..7f12895
--- /dev/null
+++ b/test/integration/targets/set_stats/test_aggregate.yml
@@ -0,0 +1,13 @@
+---
+- hosts: testhost
+ gather_facts: false
+ tasks:
+ - name: First set_stats
+ set_stats:
+ data:
+ my_int: 10
+
+ - name: Second set_stats
+ set_stats:
+ data:
+ my_int: 15
diff --git a/test/integration/targets/set_stats/test_simple.yml b/test/integration/targets/set_stats/test_simple.yml
new file mode 100644
index 0000000..0f62120
--- /dev/null
+++ b/test/integration/targets/set_stats/test_simple.yml
@@ -0,0 +1,79 @@
+---
+- hosts: testhost
+ gather_facts: false
+ tasks:
+ - name: test simple data with defaults
+ set_stats:
+ data:
+ my_int: 42
+ my_string: "foo"
+ register: result
+
+ - name: assert simple data return
+ assert:
+ that:
+ - result is succeeded
+ - not result.changed
+ - '"ansible_stats" in result'
+ - '"data" in result.ansible_stats'
+ - result.ansible_stats.data.my_int == 42
+ - result.ansible_stats.data.my_string == "foo"
+ - '"per_host" in result.ansible_stats'
+ - not result.ansible_stats.per_host
+ - '"aggregate" in result.ansible_stats'
+ - result.ansible_stats.aggregate
+
+ - name: test per_host and aggregate settings
+ set_stats:
+ data:
+ my_int: 42
+ per_host: yes
+ aggregate: no
+ register: result
+
+ - name: assert per_host and aggregate changes
+ assert:
+ that:
+ - result is succeeded
+ - not result.changed
+ - '"ansible_stats" in result'
+ - '"per_host" in result.ansible_stats'
+ - result.ansible_stats.per_host
+ - '"aggregate" in result.ansible_stats'
+ - not result.ansible_stats.aggregate
+
+ - name: Test bad call
+ block:
+ - name: "EXPECTED FAILURE - test invalid data type"
+ set_stats:
+ data:
+ - 1
+ - 2
+
+ - fail:
+ msg: "should not get here"
+ rescue:
+ - assert:
+ that:
+ - ansible_failed_task.name == "EXPECTED FAILURE - test invalid data type"
+ - ansible_failed_result.msg == "The 'data' option needs to be a dictionary/hash"
+
+ - name: Test options from template
+ set_stats:
+ data:
+ my_string: "foo"
+ aggregate: "x"
+
+ - name: Test bad data
+ block:
+ - name: "EXPECTED FAILURE - bad data"
+ set_stats:
+ data:
+ .bad: 1
+ - fail:
+ msg: "should not get here"
+ rescue:
+ - assert:
+ that:
+ - ansible_failed_task.name == "EXPECTED FAILURE - bad data"
+ - ansible_failed_result.msg == "The variable name '.bad' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores."