Merge pull request #1060 from moreati/issue1059

Speed up test suite
pull/1072/head^2
Alex Willmer 6 months ago committed by GitHub
commit 23d9d0bc82
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -247,6 +247,15 @@ Noteworthy Differences
part of the core library, and should therefore be straightforward to fix as
part of 0.2.x.
* Connection and become timeouts are applied differently. Mitogen may consider
a connection to have timed out, when Ansible would have waited longer or
indefinately. For example if SSH authentication completes within the
timeout, but execution of login scripts exceeds it - then Mitogen will
consider the task to have timed out and that host to have failed.
..
tests/ansible/integration/ssh/timeouts.yml covers (some of) this behaviour.
..
* SSH and ``become`` are treated distinctly when applying timeouts, and
timeouts apply up to the point when the new interpreter is ready to accept

@ -1,14 +1,16 @@
- name: bench/file_transfer.yml
hosts: test-targets
tasks:
- name: Make 32MiB file
delegate_to: localhost
run_once: true
shell: openssl rand 33554432 > /tmp/bigfile.in
args:
creates: /tmp/bigfile.in
- name: Make 320MiB file
delegate_to: localhost
run_once: true
shell: >
cat
/tmp/bigfile.in
@ -22,6 +24,8 @@
/tmp/bigfile.in
/tmp/bigfile.in
> /tmp/bigbigfile.in
args:
creates: /tmp/bigbigfile.in
- name: Delete SSH file is present.
file:
@ -36,17 +40,20 @@
copy:
src: /tmp/bigfile.in
dest: /tmp/bigfile.out
mode: ugo=rw
- name: Copy 320MiB file via SSH
copy:
src: /tmp/bigbigfile.in
dest: /tmp/bigbigfile.out
mode: ugo=rw
- name: Delete localhost sudo file if present.
file:
path: "{{item}}"
state: absent
delegate_to: localhost
run_once: true
become: true
with_items:
- /tmp/bigfile.out
@ -56,21 +63,51 @@
- name: Copy 32MiB file via localhost sudo
delegate_to: localhost
run_once: true
become: true
copy:
src: /tmp/bigfile.in
dest: /tmp/bigfile.out
mode: ugo=rw
tags:
- requires_local_sudo
- name: Copy 320MiB file via localhost sudo
delegate_to: localhost
run_once: true
become: true
copy:
src: /tmp/bigbigfile.in
dest: /tmp/bigbigfile.out
mode: ugo=rw
tags:
- requires_local_sudo
- name: Local cleanup
file:
path: "{{ item.path }}"
state: absent
loop:
- /tmp/bigfile.in
- /tmp/bigfile.out
- /tmp/bigbigfile.in
- /tmp/bigbigfile.out
delegate_to: localhost
run_once: true
tags:
- cleanup_local
- cleanup
- name: Target cleanup
file:
path: "{{ item.path }}"
state: absent
loop:
- /tmp/bigfile.out
- /tmp/bigbigfile.out
tags:
- cleanup_target
- cleanup
tags:
- resource_intensive

@ -9,6 +9,7 @@
content:
this is a tiny file.
delegate_to: localhost
run_once: true
- name: Create large file
copy:
@ -16,6 +17,7 @@
# Must be larger than Connection.SMALL_SIZE_LIMIT.
content: "{% for x in range(200000) %}x{% endfor %}"
delegate_to: localhost
run_once: true
- name: Cleanup copied files
file:

@ -38,6 +38,7 @@
- name: Create local weird mode file
delegate_to: localhost
run_once: true
copy:
content: "weird mode"
dest: "/tmp/weird-mode"

@ -24,18 +24,21 @@
path: /tmp/sync-test
state: absent
delegate_to: localhost
run_once: true
- name: Create sync-test
file:
path: /tmp/sync-test
state: directory
delegate_to: localhost
run_once: true
- name: Create syn-test item
copy:
dest: /tmp/sync-test/item
content: "item!"
delegate_to: localhost
run_once: true
# TODO: https://github.com/dw/mitogen/issues/692
# - file:

@ -0,0 +1,17 @@
- name: Cleanup local file
file:
path: /tmp/{{ file_name }}
state: absent
delegate_to: localhost
run_once: true
tags:
- cleanup_local
- cleanup
- name: Cleanup target file
file:
path: /tmp/{{ file_name }}.out
state: absent
tags:
- cleanup_target
- cleanup

@ -1,20 +1,21 @@
---
- name: Create {{ file_name }}
shell: dd if=/dev/urandom of=/tmp/{{ file_name }} bs=1024 count={{ file_size }}
args:
command:
cmd: dd if=/dev/urandom of=/tmp/{{ file_name }} bs=1024 count={{ file_size_kib }}
creates: /tmp/{{file_name}}
delegate_to: localhost
run_once: true
- name: Copy {{ file_name }}
copy:
dest: /tmp/{{file_name}}.out
src: /tmp/{{file_name}}
mode: "{{ file_mode }}"
- name: Stat created {{ file_name }}
stat: path=/tmp/{{ file_name }}
register: original
delegate_to: localhost
run_once: true
- name: Stat copied {{ file_name }}
stat: path=/tmp/{{ file_name }}.out

@ -10,6 +10,8 @@
- name: Run _disconnect_during_module.yml
delegate_to: localhost
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
ansible-playbook
{% for inv in ansible_inventory_sources %}

@ -6,9 +6,11 @@
gather_facts: no
vars:
file_name: large-file
file_size: 512
file_size_kib: 512
file_mode: u=rw,go=
tasks:
- include_tasks: _put_file.yml
- include_tasks: _cleanup_file.yml
tags:
- put_file
- put_large_file

@ -6,9 +6,11 @@
gather_facts: no
vars:
file_name: small-file
file_size: 123
file_size_kib: 123
file_mode: u=rw,go=
tasks:
- include_tasks: _put_file.yml
- include_tasks: _cleanup_file.yml
tags:
- put_file
- put_small_file

@ -1,23 +1,27 @@
- name: integration/playbook_semantics/delegate_to.yml
hosts: test-targets
vars:
local_path: "/tmp/delegate_to.{{ inventory_hostname }}.txt"
tasks:
#
# delegate_to, no sudo
#
- name: "delegate_to, no sudo"
copy:
dest: /tmp/delegate_to.yml.txt
dest: "{{ local_path }}"
content: "Hello, world."
register: out
mode: u=rw,go=r
delegate_to: localhost
- name: "delegate_to, no sudo"
assert:
that: "lookup('file', '/tmp/delegate_to.yml.txt') == 'Hello, world.'"
that:
- lookup('file', local_path) == 'Hello, world.'
fail_msg: "{{ lookup('file', local_path) }}"
- name: "delegate_to, no sudo"
file:
path: /tmp/delegate_to.yml.txt
path: "{{ local_path }}"
state: absent
delegate_to: localhost
@ -27,18 +31,20 @@
#
- name: "connection:local, no sudo"
copy:
dest: /tmp/delegate_to.yml.txt
dest: "{{ local_path }}"
content: "Hello, world."
register: out
mode: u=rw,go=r
connection: local
- name: "connection:local, no sudo"
assert:
that: "lookup('file', '/tmp/delegate_to.yml.txt') == 'Hello, world.'"
that:
- lookup('file', local_path) == 'Hello, world.'
fail_msg: "{{ lookup('file', local_path) }}"
- name: "connection:local, no sudo"
file:
path: /tmp/delegate_to.yml.txt
path: "{{ local_path }}"
state: absent
connection: local
@ -47,7 +53,10 @@
# delegate_to, sudo
#
- name: "delegate_to, sudo"
shell: whoami > /tmp/delegate_to.yml.txt
shell: |
whoami > "{{ local_path }}"
args:
creates: "{{ local_path }}"
delegate_to: localhost
become: true
tags:
@ -55,13 +64,15 @@
- name: "delegate_to, sudo"
assert:
that: "lookup('file', '/tmp/delegate_to.yml.txt') == 'root'"
that:
- lookup('file', local_path) == 'root'
fail_msg: "{{ lookup('file', local_path) }}"
tags:
- requires_local_sudo
- name: "delegate_to, sudo"
file:
path: /tmp/delegate_to.yml.txt
path: "{{ local_path }}"
state: absent
delegate_to: localhost
become: true
@ -73,7 +84,10 @@
# connection:local, sudo
#
- name: "connection:local, sudo"
shell: whoami > /tmp/delegate_to.yml.txt
shell: |
whoami > "{{ local_path }}"
args:
creates: "{{ local_path }}"
connection: local
become: true
tags:
@ -81,13 +95,15 @@
- name: "connection:local, sudo"
assert:
that: "lookup('file', '/tmp/delegate_to.yml.txt') == 'root'"
that:
- lookup('file', local_path) == 'root'
fail_msg: "{{ lookup('file', local_path) }}"
tags:
- requires_local_sudo
- name: "connection:local, sudo"
file:
path: /tmp/delegate_to.yml.txt
path: "{{ local_path }}"
state: absent
connection: local
become: true

@ -10,6 +10,7 @@
- shell: >
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -c local -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"

@ -1,12 +1,13 @@
- name: integration/runner/missing_module.yml
hosts: test-targets[0]
connection: local
tasks:
- name: Run missing_module
connection: local
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
ansible -vvv
ansible
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
{% endfor %}
@ -15,6 +16,8 @@
args:
chdir: ../..
register: out
changed_when: false
check_mode: false
ignore_errors: true
- assert:

@ -1,7 +1,12 @@
# Ensure 'ssh' connections time out correctly.
# mitogen__slow_user performs a long sleep in ~/.profile.
# Mitogen counts this time towards the connection timeout. Ansible doesn't.
# ansible_python_interpreter=python3000 is an optimisation, to avoid waiting
# on the timeout multiple times (e.g. interpreter discovery).
- name: integration/ssh/timeouts.yml
hosts: test-targets
gather_facts: false
tasks:
- include_tasks: ../_mitogen_only.yml
@ -9,17 +14,21 @@
connection: local
environment:
ANSIBLE_SSH_TIMEOUT: 10
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
ansible -vvv
ansible
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
{% endfor %}
test-targets
-m custom_python_detect_environment
"{{ inventory_hostname }}"
-m ping
-e ansible_user=mitogen__slow_user -e ansible_password=slow_user_password
-e ansible_python_interpreter=python3000
args:
chdir: ../..
register: out
changed_when: false
check_mode: false
ignore_errors: true
- name: Verify connection timeout occurred

@ -20,6 +20,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -36,6 +37,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -43,6 +45,7 @@
test-targets
-e ansible_ssh_user=mitogen__has_sudo
-e ansible_ssh_pass=wrong_password
-e ansible_python_interpreter=python3000
args:
chdir: ../..
register: out
@ -59,6 +62,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -75,6 +79,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -82,6 +87,7 @@
test-targets
-e ansible_user=mitogen__has_sudo
-e ansible_ssh_pass=wrong_password
-e ansible_python_interpreter=python3000
args:
chdir: ../..
register: out
@ -98,6 +104,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -114,6 +121,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -121,6 +129,7 @@
test-targets
-e ansible_user=mitogen__has_sudo
-e ansible_password=wrong_password
-e ansible_python_interpreter=python3000
args:
chdir: ../..
register: out
@ -142,6 +151,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -158,6 +168,7 @@
ANSIBLE_ANY_ERRORS_FATAL=false
ANSIBLE_STRATEGY=mitogen_linear
ANSIBLE_SSH_ARGS="-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
ANSIBLE_VERBOSITY="{{ ansible_verbosity }}"
ansible -m shell -a whoami
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
@ -165,6 +176,7 @@
test-targets
-e ansible_user=mitogen__has_sudo
-e ansible_ssh_private_key_file=/dev/null
-e ansible_python_interpreter=python3000
args:
chdir: ../..
register: out

@ -3,24 +3,26 @@
hosts: test-targets[0]
tasks:
- connection: local
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
ansible-playbook
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
{% endfor %}
-vvv
integration/strategy/_mixed_mitogen_vanilla.yml
args:
chdir: ../..
register: out
- connection: local
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
ansible-playbook
{% for inv in ansible_inventory_sources %}
-i "{{ inv }}"
{% endfor %}
-vvv
integration/strategy/_mixed_vanilla_mitogen.yml
args:
chdir: ../..

@ -12,6 +12,8 @@
- include_tasks: _end_play_if_not_sudo_linux.yml
- name: Run stub-lxc-info.py
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
sudo -nE "{{lookup('env', 'VIRTUAL_ENV')}}/bin/ansible"
-i localhost,

@ -12,6 +12,8 @@
- include_tasks: _end_play_if_not_sudo_linux.yml
- name: Run ansible stub-lxc.py
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
command: |
sudo -nE "{{lookup('env', 'VIRTUAL_ENV')}}/bin/ansible"
-i localhost,

@ -8,6 +8,7 @@
- name: Create file tree
connection: local
run_once: true
shell: >
mkdir /tmp/filetree.in;
seq -f /tmp/filetree.in/%g 1 1000 | xargs touch;
@ -21,17 +22,30 @@
file:
state: directory
path: /tmp/filetree.out
mode: u=rwx,go=rx
- name: Trigger nasty process pileup
copy:
src: "{{item.src}}"
dest: "/tmp/filetree.out/{{item.path}}"
mode: 0644
mode: u=rw,go=r
with_filetree: /tmp/filetree.in
when: item.state == 'file'
loop_control:
label: "/tmp/filetree.out/{{ item.path }}"
- name: Cleanup local file tree
connection: local
run_once: true
file:
path: /tmp/filetree.in
state: absent
- name: Cleanup remote file tree
file:
path: /tmp/filetree.out
state: absent
tags:
- resource_intensive
- issue_140

@ -4,10 +4,9 @@
# can test for.
- name: regression/issue_152__local_action_wrong_interpreter.yml
hosts: test-targets
hosts: test-targets[0]
connection: local
tasks:
- name: Create /tmp/issue_152_interpreter.sh
copy:
dest: /tmp/issue_152_interpreter.sh

@ -14,11 +14,14 @@
shell: |
dd if=/dev/zero of=/tmp/512mb.zero bs=1048576 count=512;
chmod go= /tmp/512mb.zero
args:
creates: /tmp/512mb.zero
- name: Fetch /tmp/512mb.zero
fetch:
src: /tmp/512mb.zero
dest: /tmp/fetch-out
dest: /tmp/fetch-{{ inventory_hostname }}-512mb.zero
flat: true
- name: Cleanup /tmp/512mb.zero
file:
@ -27,11 +30,10 @@
- name: Cleanup fetched file
file:
path: /tmp/fetch-out
path: /tmp/fetch-{{ inventory_hostname }}-512mb.zero
state: absent
become: false
delegate_to: localhost
run_once: true
tags:
- issue_615
- mitogen_only

@ -6,6 +6,8 @@
tasks:
- name: Test --ask-become-pass
delegate_to: localhost
environment:
ANSIBLE_VERBOSITY: "{{ ansible_verbosity }}"
expect:
command: >
ansible-playbook

Loading…
Cancel
Save