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