You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/wait_for/tasks/main.yml

207 lines
4.9 KiB
YAML

---
- name: test wait_for with delegate_to
wait_for:
timeout: 2
delegate_to: localhost
register: waitfor
- assert:
that:
- waitfor is successful
- waitfor.elapsed >= 2
- name: setup create a directory to serve files from
file:
dest: "{{ files_dir }}"
state: directory
- name: setup webserver
copy:
src: "testserver.py"
dest: "{{ remote_tmp_dir }}/testserver.py"
- name: setup a path
file:
path: "{{ remote_tmp_dir }}/wait_for_file"
state: touch
- name: setup remove a file after 3s
shell: sleep 3 && rm {{ remote_tmp_dir }}/wait_for_file
async: 20
poll: 0
- name: test for absent path
wait_for:
path: "{{ remote_tmp_dir }}/wait_for_file"
state: absent
timeout: 20
register: waitfor
- name: verify test for absent path
assert:
that:
- waitfor is successful
- waitfor.path == "{{ remote_tmp_dir | expanduser }}/wait_for_file"
- waitfor.elapsed >= 2
- waitfor.elapsed <= 15
- name: setup create a file after 3s
shell: sleep 3 && touch {{ remote_tmp_dir }}/wait_for_file
async: 20
poll: 0
- name: test for present path
wait_for:
path: "{{ remote_tmp_dir }}/wait_for_file"
timeout: 5
register: waitfor
- name: verify test for absent path
assert:
that:
- waitfor is successful
- waitfor.path == "{{ remote_tmp_dir | expanduser }}/wait_for_file"
- waitfor.elapsed >= 2
- waitfor.elapsed <= 15
- name: setup write keyword to file after 3s
shell: sleep 3 && echo completed > {{remote_tmp_dir}}/wait_for_keyword
async: 20
poll: 0
- name: test wait for keyword in file
wait_for:
path: "{{remote_tmp_dir}}/wait_for_keyword"
search_regex: completed
timeout: 5
register: waitfor
- name: verify test wait for keyword in file
assert:
that:
- waitfor is successful
- "waitfor.search_regex == 'completed'"
- waitfor.elapsed >= 2
- waitfor.elapsed <= 15
- name: setup write keyword to file after 3s
shell: sleep 3 && echo "completed data 123" > {{remote_tmp_dir}}/wait_for_keyword
async: 20
poll: 0
- name: test wait for keyword in file with match groups
wait_for:
path: "{{remote_tmp_dir}}/wait_for_keyword"
search_regex: completed (?P<foo>\w+) ([0-9]+)
timeout: 25
register: waitfor
- name: verify test wait for keyword in file with match groups
assert:
that:
- waitfor is successful
- waitfor.elapsed >= 2
- waitfor.elapsed <= 15
- waitfor['match_groupdict'] | length == 1
- waitfor['match_groupdict']['foo'] == 'data'
- waitfor['match_groups'] == ['data', '123']
- name: write non-ascii file
script: write_utf16.py "{{remote_tmp_dir}}/utf16.txt"
args:
executable: '{{ ansible_facts.python.executable }}'
- name: test non-ascii file
wait_for:
path: "{{remote_tmp_dir}}/utf16.txt"
search_regex: completed
- name: test non mmapable file
wait_for:
path: "/sys/class/net/lo/carrier"
search_regex: "1"
timeout: 30
when: ansible_os_family not in ['FreeBSD', 'Darwin']
- name: test wait for port timeout
wait_for:
port: 12121
timeout: 3
register: waitfor
ignore_errors: true
- name: verify test wait for port timeout
assert:
that:
- waitfor is failed
- waitfor.elapsed == 3
- "waitfor.msg == 'Timeout when waiting for 127.0.0.1:12121'"
- name: test fail with custom msg
wait_for:
port: 12121
msg: fail with custom message
timeout: 3
register: waitfor
ignore_errors: true
- name: verify test fail with custom msg
assert:
that:
- waitfor is failed
- waitfor.elapsed == 3
- "waitfor.msg == 'fail with custom message'"
- name: setup start SimpleHTTPServer
shell: sleep 3 && cd {{ files_dir }} && {{ ansible_python.executable }} {{ remote_tmp_dir}}/testserver.py {{ http_port }}
async: 120 # this test set can take ~1m to run on FreeBSD (via Shippable)
poll: 0
- name: test wait for port with sleep
wait_for:
port: "{{ http_port }}"
sleep: 3
register: waitfor
- name: verify test wait for port sleep
assert:
that:
- waitfor is successful
- waitfor is not changed
- "waitfor.port == {{ http_port }}"
- name: install psutil using pip (non-Linux only)
pip:
name: psutil==5.8.0
when: ansible_system != 'Linux'
- name: Copy zombie.py
copy:
src: zombie.py
dest: "{{ remote_tmp_dir }}"
- name: Create zombie process
shell: "{{ ansible_python.executable }} {{ remote_tmp_dir }}/zombie"
async: 90
poll: 0
- name: test wait for port drained
wait_for:
port: "{{ http_port }}"
state: drained
register: waitfor
- name: verify test wait for port
assert:
that:
- waitfor is successful
- waitfor is not changed
- "waitfor.port == {{ http_port }}"
- name: test wait_for with delay
wait_for:
timeout: 2
delay: 2
register: waitfor
- name: verify test wait_for with delay
assert:
that:
- waitfor is successful
- waitfor.elapsed >= 4