ansible: fix put_file() for large temporary files.
Reverts 49736b3a
, large file copies can't avoid the RTT.
The parent stack must be blocked while FileService progresses, as unlike
the small file path, it does not make a snapshot of the (possibly
temporary) file passed by the action plug-in. So we need to keep that
file alive while the service runs.
Add a new integration test and a new soak test to cover both.
pull/372/head
parent
530fd18e4c
commit
638b196a45
@ -0,0 +1,66 @@
|
||||
# Verify copy module for small and large files, and inline content.
|
||||
|
||||
- name: integration/action/synchronize.yml
|
||||
hosts: test-targets
|
||||
any_errors_fatal: true
|
||||
tasks:
|
||||
- copy:
|
||||
dest: /tmp/copy-tiny-file
|
||||
content:
|
||||
this is a tiny file.
|
||||
connection: local
|
||||
|
||||
- copy:
|
||||
dest: /tmp/copy-large-file
|
||||
# Must be larger than Connection.SMALL_SIZE_LIMIT.
|
||||
content: "{% for x in range(200000) %}x{% endfor %}"
|
||||
connection: local
|
||||
|
||||
# end of making files
|
||||
|
||||
- file:
|
||||
state: absent
|
||||
path: "{{item}}"
|
||||
with_items:
|
||||
- /tmp/copy-tiny-file.out
|
||||
- /tmp/copy-large-file.out
|
||||
- /tmp/copy-tiny-inline-file.out
|
||||
- /tmp/copy-large-inline-file.out
|
||||
|
||||
# end of cleaning out files
|
||||
|
||||
- copy:
|
||||
dest: /tmp/copy-large-file.out
|
||||
src: /tmp/copy-large-file
|
||||
|
||||
- copy:
|
||||
dest: /tmp/copy-tiny-file.out
|
||||
src: /tmp/copy-tiny-file
|
||||
|
||||
- copy:
|
||||
dest: /tmp/copy-tiny-inline-file.out
|
||||
content: "tiny inline content"
|
||||
|
||||
- copy:
|
||||
dest: /tmp/copy-large-inline-file.out
|
||||
content: |
|
||||
{% for x in range(200000) %}y{% endfor %}
|
||||
|
||||
# stat results
|
||||
|
||||
- stat:
|
||||
path: "{{item}}"
|
||||
with_items:
|
||||
- /tmp/copy-tiny-file.out
|
||||
- /tmp/copy-large-file.out
|
||||
- /tmp/copy-tiny-inline-file.out
|
||||
- /tmp/copy-large-inline-file.out
|
||||
register: stat
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- stat.results[0].stat.checksum == "f29faa9a6f19a700a941bf2aa5b281643c4ec8a0"
|
||||
- stat.results[1].stat.checksum == "62951f943c41cdd326e5ce2b53a779e7916a820d"
|
||||
- stat.results[2].stat.checksum == "b26dd6444595e2bdb342aa0a91721b57478b5029"
|
||||
- stat.results[3].stat.checksum == "d675f47e467eae19e49032a2cc39118e12a6ee72"
|
||||
|
@ -0,0 +1,6 @@
|
||||
- file:
|
||||
path: /tmp/foo-{{inventory_hostname}}
|
||||
state: absent
|
||||
- copy:
|
||||
dest: /tmp/foo-{{inventory_hostname}}
|
||||
content: "{{content}}"
|
@ -0,0 +1,6 @@
|
||||
- hosts: all
|
||||
tasks:
|
||||
- set_fact:
|
||||
content: "{% for x in range(126977) %}x{% endfor %}"
|
||||
- include_tasks: _file_service_loop.yml
|
||||
with_sequence: start=1 end=100
|
Loading…
Reference in New Issue