allows loop pause for subseconds (#50461)

* allows loop pause for subseconds
* skip test on os x and bsd since date commands lacks nano

fixes #49951
This commit is contained in:
Brian Coca 2019-01-18 22:41:29 -05:00 committed by GitHub
parent d4dbc7f2e0
commit 30da7a363c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 1 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- loop_control's pause now allows for fractions of a second

View file

@ -28,7 +28,7 @@ class LoopControl(FieldAttributeBase):
_loop_var = FieldAttribute(isa='str', default='item')
_index_var = FieldAttribute(isa='str')
_label = FieldAttribute(isa='str')
_pause = FieldAttribute(isa='int', default=0)
_pause = FieldAttribute(isa='float', default=0)
_extended = FieldAttribute(isa='bool')
def __init__(self):

View file

@ -23,6 +23,25 @@
that:
- '(after.stdout |int) - (before.stdout|int) >= 4'
- name: test subsecond pause
block:
- name: Measure time before loop with .5s pause
set_fact:
times: "{{times|default([]) + [ lookup('pipe','date +%s.%3N') ]}}"
with_sequence: count=3
loop_control:
pause: 0.6
- name: ensure lag, since there is 3 rounds, and 0.5 seconds between, it should last 1.2 seconds, but allowing leeway due to CI lag
assert:
that:
- tdiff|float >= 1.2
- tdiff|int < 3
vars:
tdiff: '{{ times[2]|float - times[0]|float }}'
when:
- ansible_facts['distribution'] not in ("MacOSX", "FreeBSD")
#
# Tests of loop syntax with args
#