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/win_wait_for/tasks/main.yml

323 lines
9.2 KiB
YAML

---
- name: ensure test folder is deleted for clean slate
win_file:
path: '{{test_win_wait_for_path}}'
state: absent
- name: ensure test folder exists
win_file:
path: '{{test_win_wait_for_path}}'
state: directory
- name: template out the test server
win_template:
src: http-server.ps1
dest: '{{test_win_wait_for_path}}\http-server.ps1'
# invalid arguments
- name: fail to set port and path
win_wait_for:
path: a
port: 0
register: fail_port_and_path
failed_when: fail_port_and_path.msg != 'port and path parameter can not both be passed to win_wait_for'
- name: fail to set exclude_hosts when state isn't drain
win_wait_for:
port: 0
exclude_hosts: a
state: present
register: fail_exclude_hosts_not_drained
failed_when: fail_exclude_hosts_not_drained.msg != 'exclude_hosts should only be with state=drained'
- name: fail to set state drained with path
win_wait_for:
path: a
state: drained
register: fail_path_drained
failed_when: fail_path_drained.msg != 'state=drained should only be used for checking a port in the win_wait_for module'
- name: fail to set exclude_hosts with path
win_wait_for:
path: a
exclude_hosts: a
register: fail_path_exclude_hosts
failed_when: fail_path_exclude_hosts.msg != 'exclude_hosts should only be with state=drained'
- name: fail to set search_regex with port
win_wait_for:
port: 0
search_regex: a
register: fail_port_search_regex
failed_when: fail_port_search_regex.msg != 'search_regex should by used when checking a string in a file in the win_wait_for module'
- name: fail to set exclude_hosts with port whens tate is not drained
win_wait_for:
port: 0
exclude_hosts: a
state: present
register: fail_port_exclude_hosts_not_drained
failed_when: fail_port_exclude_hosts_not_drained.msg != 'exclude_hosts should only be with state=drained'
# path tests
- name: timeout while waiting for file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: present
timeout: 5
register: fail_timeout_file_present
ignore_errors: True
- name: assert timeout while waiting for file
assert:
that:
- fail_timeout_file_present.msg == 'timeout while waiting for file ' + test_win_wait_for_path + '\\test.txt to be present'
- fail_timeout_file_present.wait_attempts == 5
- fail_timeout_file_present.elapsed > 5
- name: wait for file to not exist - non existing file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
register: wait_remove_no_file
- name: assert wait for file to not exist - non existing file
assert:
that:
- wait_remove_no_file.wait_attempts == 1
- name: create file for next test
win_file:
path: '{{test_win_wait_for_path}}\test.txt'
state: touch
- name: run async task to remove file after a timeout
win_shell: Start-Sleep -Seconds 5; Remove-Item -Path '{{test_win_wait_for_path}}\test.txt' -Force
async: 30
poll: 0
- name: wait for file to not exist - existing file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
register: wait_remove_existing_file
- name: assert wait for file to not exist - existing file
assert:
that:
- wait_remove_existing_file.wait_attempts > 1
- name: run async task to create file after a timeout
win_shell: Start-Sleep -Seconds 5; New-Item -Path '{{test_win_wait_for_path}}\test.txt' -Type File
async: 30
poll: 0
- name: wait for file to exist - non existing file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: present
register: wait_new_missing_file
- name: assert wait for file to exist - non existing file
assert:
that:
- wait_new_missing_file.wait_attempts > 1
- name: wait for file to exist - existing file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: present
register: wait_new_existing_file
- name: assert wait for file to exist - existing file
assert:
that:
- wait_new_existing_file.wait_attempts == 1
- name: timeout while waiting for file to not exist
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
timeout: 5
register: fail_timeout_file_absent
ignore_errors: True
- name: assert timeout while waiting for file to not exist
assert:
that:
- fail_timeout_file_absent.msg == 'timeout while waiting for file ' + test_win_wait_for_path + '\\test.txt to be absent'
- fail_timeout_file_absent.wait_attempts == 5
- fail_timeout_file_absent.elapsed > 5
- name: run async task to populate file contents
win_shell: Start-Sleep -Seconds 5; Set-Content -Path '{{test_win_wait_for_path}}\test.txt' -Value 'hello world`r`nfile contents`r`nEnd line'
async: 30
poll: 0
- name: wait for file contents to match regex - empty file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: present
search_regex: file c.*
register: wait_regex_match_new
- name: assert wait for file contents to match regex - empty file
assert:
that:
- wait_regex_match_new.wait_attempts > 1
- name: wait for file contents to match regex - existing file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: present
search_regex: file c.*
register: wait_regex_match_existing
- name: assert wait for file contents to match regex - existing file
assert:
that:
- wait_regex_match_existing.wait_attempts == 1
- name: run async task to clear file contents
win_shell: Start-Sleep -Seconds 5; Set-Content -Path '{{test_win_wait_for_path}}\test.txt' -Value 'hello world`r`nother contents for file`r`nEnd line'
async: 30
poll: 0
- name: wait for file content to not match regex
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
search_regex: file c.*
register: wait_regex_match_absent_remove
- name: assert wait for file content to not match regex
assert:
that:
- wait_regex_match_absent_remove.wait_attempts > 1
- name: wait for file content to not match regex - existing
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
search_regex: file c.*
register: wait_regex_match_absent_existing
- name: assert wait for file content to not match regex
assert:
that:
- wait_regex_match_absent_existing.wait_attempts == 1
- name: remove file to test search_regex works on missing files
win_file:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
- name: wait for file content to not match regex - missing file
win_wait_for:
path: '{{test_win_wait_for_path}}\test.txt'
state: absent
search_regex: file c.*
register: wait_regex_match_absent_missing
- name: assert wait for file content to not match regex - missing file
assert:
that:
- wait_regex_match_absent_missing.wait_attempts == 1
# port tests
- name: timeout waiting for port to come online
win_wait_for:
port: '{{test_win_wait_for_port}}'
timeout: 5
state: started
register: fail_timeout_port_online
ignore_errors: True
- name: assert timeout while waiting for port to come online
assert:
that:
- "fail_timeout_port_online.msg == 'timeout while waiting for 127.0.0.1:' + test_win_wait_for_port|string + ' to start listening'"
- fail_timeout_port_online.wait_attempts > 1
- fail_timeout_port_online.elapsed > 5
- name: run async task to start web server
win_shell: Start-Sleep -Seconds 5; {{test_win_wait_for_path}}\http-server.ps1
async: 30
poll: 0
- name: wait for port to come online
win_wait_for:
port: '{{test_win_wait_for_port}}'
state: started
register: wait_for_port_to_start
- name: assert wait for port to come online
assert:
that:
- wait_for_port_to_start.wait_attempts > 1
- name: start web server
win_shell: '{{test_win_wait_for_path}}\http-server.ps1'
async: 30
poll: 0
- name: wait for port that is already online
win_wait_for:
port: '{{test_win_wait_for_port}}'
state: started
register: wait_for_port_already_started
- name: assert wait for port that is already online
assert:
that:
- wait_for_port_already_started.wait_attempts == 1
# add a manual wait to make sure the port is truly offline for next test
- name: wait for port to be offline
win_wait_for:
port: '{{test_win_wait_for_port}}'
state: stopped
- name: wait for port that is already offline
win_wait_for:
port: '{{test_win_wait_for_port}}'
state: stopped
register: wait_for_port_already_stopped
- name: assert wait for port that is already offline
assert:
that:
- wait_for_port_already_stopped.wait_attempts == 1
- name: start web server for offline port test
win_shell: '{{test_win_wait_for_path}}\http-server.ps1'
async: 30
poll: 0
- name: wait for port to go offline
win_wait_for:
port: '{{test_win_wait_for_port}}'
state: stopped
register: wait_for_port_to_be_stopped
- name: assert wait for port to go offline
assert:
that:
- wait_for_port_to_be_stopped.wait_attempts > 1
- name: wait for offline port to be drained
win_wait_for:
port: '{{test_win_wait_for_port}}'
state: drained
register: wait_for_drained_port_no_port
- name: assert wait for offline port to be drained
assert:
that:
- wait_for_drained_port_no_port.wait_attempts == 1
- name: clear testing folder
win_file:
path: '{{test_win_wait_for_path}}'
state: absent