Merge pull request #14812 from mattclay/test-connection

Add tests for connection plugins.
This commit is contained in:
Matt Davis 2016-03-08 04:17:30 +00:00
commit 22344c5320
3 changed files with 80 additions and 1 deletions

View file

@ -21,8 +21,9 @@ MYTMPDIR = $(shell mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir')
VAULT_PASSWORD_FILE = vault-password
CONSUL_RUNNING := $(shell python consul_running.py)
EUID := $(shell id -u -r)
all: setup parsing test_var_precedence unicode test_templating_settings environment non_destructive destructive includes blocks pull check_mode test_hash test_handlers test_group_by test_vault test_tags test_lookup_paths no_log
all: setup parsing test_var_precedence unicode test_templating_settings environment non_destructive destructive includes blocks pull check_mode test_hash test_handlers test_group_by test_vault test_tags test_lookup_paths no_log test_connection
setup:
rm -rf $(TEST_DIR)
@ -72,6 +73,18 @@ environment: setup
non_destructive: setup
ansible-playbook non_destructive.yml -i $(INVENTORY) -e outputdir=$(TEST_DIR) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS)
# Skip connection plugins which require root when not running as root.
ifneq ($(EUID),0)
TEST_CONNECTION_FILTER := !chroot
endif
# Connection plugin test command to repeat with each locale setting.
TEST_CONNECTION_CMD = $(1) ansible-playbook test_connection.yml -i test_connection.inventory -l '!skip-during-build $(TEST_CONNECTION_FILTER)' $(TEST_FLAGS)
test_connection: setup
$(call TEST_CONNECTION_CMD)
$(call TEST_CONNECTION_CMD, LC_ALL=C LANG=C)
destructive: setup
ansible-playbook destructive.yml -i $(INVENTORY) -e outputdir=$(TEST_DIR) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS)

View file

@ -0,0 +1,31 @@
[local]
local-pipelining ansible_ssh_pipelining=true
local-no-pipelining ansible_ssh_pipelining=false
[local:vars]
ansible_host=localhost
ansible_connection=local
[chroot]
chroot-pipelining ansible_ssh_pipelining=true
chroot-no-pipelining ansible_ssh_pipelining=false
[chroot:vars]
ansible_host=/
ansible_connection=chroot
[ssh]
ssh-pipelining ansible_ssh_pipelining=true
ssh-no-pipelining ansible_ssh_pipelining=false
[ssh:vars]
ansible_host=localhost
ansible_connection=ssh
[paramiko_ssh]
paramiko_ssh-pipelining ansible_ssh_pipelining=true
paramiko_ssh-no-pipelining ansible_ssh_pipelining=false
[paramiko_ssh:vars]
ansible_host=localhost
ansible_connection=paramiko_ssh
[skip-during-build:children]
ssh
paramiko_ssh

View file

@ -0,0 +1,35 @@
- hosts: all
gather_facts: no
serial: 1
tasks:
### raw with unicode arg and output
- name: raw with unicode arg and output
raw: echo 汉语
register: command
- name: check output of raw with unicode arg and output
assert: { that: "'汉语' in command.stdout" }
### copy local file with unicode filename and content
- name: create local file with unicode filename and content
local_action: lineinfile dest=/tmp/ansible-local-汉语 create=true line=汉语
- name: remove remote file with unicode filename and content
file: path=/tmp/ansible-remote-汉语 state=absent
- name: copy local file with unicode filename and content
copy: src=/tmp/ansible-local-汉语 dest=/tmp/ansible-remote-汉语
### fetch remote file with unicode filename and content
- name: remove local file with unicode filename and content
local_action: file path=/tmp/ansible-local-汉语 state=absent
- name: fetch remote file with unicode filename and content
fetch: src=/tmp/ansible-remote-汉语 dest=/tmp/ansible-local-汉语 fail_on_missing=true validate_checksum=true flat=true
### remove local and remote temp files
- name: remove local temp file
local_action: file path=/tmp/ansible-local-汉语 state=absent
- name: remove remote temp file
file: path=/tmp/ansible-remote-汉语 state=absent