# Verify behaviour of a single asynchronous task, and presence of all output # fields. - name: integration/runner/async_one_job.yml hosts: all any_errors_fatal: true tasks: # Verify async jobs run in a new process. - name: get process ID. custom_python_detect_environment: register: sync_proc1 - name: get process ID again. custom_python_detect_environment: register: sync_proc2 - assert: that: - sync_proc1.pid == sync_proc2.pid when: is_mitogen - name: get async process ID. custom_python_detect_environment: register: async_proc1 async: 1000 poll: 0 - name: busy-poll up to 100000 times async_status: jid: "{{async_proc1.ansible_job_id}}" register: async_result1 until: async_result1.finished retries: 100000 delay: 0 - name: get async process ID again. custom_python_detect_environment: register: async_proc2 async: 1000 poll: 0 - name: busy-poll up to 100000 times async_status: jid: "{{async_proc2.ansible_job_id}}" register: async_result2 until: async_result2.finished retries: 100000 delay: 0 - assert: that: - sync_proc1.pid == sync_proc2.pid - async_result1.pid != sync_proc1.pid - async_result1.pid != async_result2.pid when: is_mitogen # Verify output of a single async job. - name: start 2 second op shell: | sleep 1; echo alldone async: 1000 poll: 0 register: job1 - assert: that: | job1.ansible_job_id and (job1.changed == True) and (job1.started == 1) and (job1.changed == True) and (job1.finished == 0) - name: busy-poll up to 100000 times async_status: jid: "{{job1.ansible_job_id}}" register: result1 until: result1.finished retries: 100000 delay: 0 - assert: that: - result1.ansible_job_id == job1.ansible_job_id - result1.attempts <= 100000 - result1.changed == True - result1.cmd == "sleep 1;\n echo alldone" - result1.delta|length == 14 - result1.start|length == 26 - result1.failed == False - result1.finished == 1 - result1.rc == 0 - result1.start|length == 26 - result1.stderr == "" - result1.stderr_lines == [] - result1.stdout == "alldone" - result1.stdout_lines == ["alldone"]