Implemented Trigger Repetition (#32938)

* Implemented Trigger Repetition

* Refactorings and integration tests for Trigger Repetition

* Suggestions of first review

* Changes of second review
This commit is contained in:
David Vilar Benet 2018-01-11 23:08:50 +01:00 committed by Jordan Borean
commit 57ff84251e
4 changed files with 360 additions and 41 deletions

View file

@ -121,3 +121,37 @@
months_of_year: fakemonth
register: fail_trigger_invalid_month_of_year
failed_when: fail_trigger_invalid_month_of_year.msg != "invalid month name 'fakemonth', please specify full month name"
- name: fail trigger repetition with duration in incorrect format
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
triggers:
- type: boot
repetition:
- duration: fake
register: fail_trigger_repetition_invalid_duration
failed_when: fail_trigger_repetition_invalid_duration.msg != "trigger option 'duration' must be in the XML duration format but was 'fake'"
- name: fail trigger repetition with interval in incorrect format
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
triggers:
- type: boot
repetition:
- interval: fake
register: fail_trigger_repetition_invalid_interval
failed_when: fail_trigger_repetition_invalid_interval.msg != "trigger option 'interval' must be in the XML duration format but was 'fake'"
- name: fail trigger repetition option interval greater than duration
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
triggers:
- type: boot
repetition:
- interval: PT5M
duration: PT1M
register: fail_trigger_repetition_interval_greater_than_duration
failed_when: fail_trigger_repetition_interval_greater_than_duration.msg != "trigger repetition option 'interval' value 'PT5M' must be less than or equal to 'duration' value 'PT1M'"

View file

@ -288,6 +288,184 @@
that:
- trigger_monthlydow_again is not changed
- name: create trigger repetition (check mode)
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
actions:
- path: cmd.exe
triggers:
- type: registration
repetition:
- interval: PT1M
duration: PT5M
stop_at_duration_end: yes
register: create_trigger_repetition_check
check_mode: yes
- name: get result of create trigger repetition (check mode)
win_scheduled_task_stat:
path: \
name: '{{test_scheduled_task_name}}'
register: create_trigger_repetition_result_check
- name: assert results of create trigger repetition (check mode)
assert:
that:
- create_trigger_repetition_check is changed
- create_trigger_repetition_result_check.task_exists == True
- create_trigger_repetition_result_check.triggers|count == 1
- create_trigger_repetition_result_check.triggers[0].type == "TASK_TRIGGER_MONTHLYDOW"
- create_trigger_repetition_result_check.triggers[0].enabled == True
- create_trigger_repetition_result_check.triggers[0].start_boundary == "2000-01-01T00:00:01"
- create_trigger_repetition_result_check.triggers[0].end_boundary == None
- create_trigger_repetition_result_check.triggers[0].weeks_of_month == "1,2"
- create_trigger_repetition_result_check.triggers[0].days_of_week == "monday,wednesday"
- create_trigger_repetition_result_check.triggers[0].repetition.interval == None
- create_trigger_repetition_result_check.triggers[0].repetition.duration == None
- create_trigger_repetition_result_check.triggers[0].repetition.stop_at_duration_end == False
- name: create trigger repetition
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
actions:
- path: cmd.exe
triggers:
- type: registration
repetition:
- interval: PT1M
duration: PT5M
stop_at_duration_end: yes
register: create_trigger_repetition
- name: get result of create trigger repetition
win_scheduled_task_stat:
path: \
name: '{{test_scheduled_task_name}}'
register: create_trigger_repetition_result
- name: assert results of create trigger repetition
assert:
that:
- create_trigger_repetition is changed
- create_trigger_repetition_result.task_exists == True
- create_trigger_repetition_result.triggers|count == 1
- create_trigger_repetition_result.triggers[0].type == "TASK_TRIGGER_REGISTRATION"
- create_trigger_repetition_result.triggers[0].enabled == True
- create_trigger_repetition_result.triggers[0].start_boundary == None
- create_trigger_repetition_result.triggers[0].end_boundary == None
- create_trigger_repetition_result.triggers[0].repetition.interval == "PT1M"
- create_trigger_repetition_result.triggers[0].repetition.duration == "PT5M"
- create_trigger_repetition_result.triggers[0].repetition.stop_at_duration_end == True
- name: create trigger repetition (idempotent)
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
actions:
- path: cmd.exe
triggers:
- type: registration
repetition:
- interval: PT1M
duration: PT5M
stop_at_duration_end: yes
register: create_trigger_repetition_again
- name: assert results of create trigger repetition (idempotent)
assert:
that:
- create_trigger_repetition_again is not changed
- name: change trigger repetition (check mode)
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
actions:
- path: cmd.exe
triggers:
- type: registration
repetition:
- interval: PT10M
duration: PT20M
stop_at_duration_end: no
register: change_trigger_repetition_check
check_mode: yes
- name: get result of change trigger repetition (check mode)
win_scheduled_task_stat:
path: \
name: '{{test_scheduled_task_name}}'
register: change_trigger_repetition_result_check
- name: assert results of change trigger repetition (check mode)
assert:
that:
- change_trigger_repetition_check is changed
- change_trigger_repetition_result_check.task_exists == True
- change_trigger_repetition_result_check.triggers|count == 1
- change_trigger_repetition_result_check.triggers[0].type == "TASK_TRIGGER_REGISTRATION"
- change_trigger_repetition_result_check.triggers[0].enabled == True
- change_trigger_repetition_result_check.triggers[0].start_boundary == None
- change_trigger_repetition_result_check.triggers[0].end_boundary == None
- change_trigger_repetition_result_check.triggers[0].repetition.interval == "PT1M"
- change_trigger_repetition_result_check.triggers[0].repetition.duration == "PT5M"
- change_trigger_repetition_result_check.triggers[0].repetition.stop_at_duration_end == True
- name: change trigger repetition
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
actions:
- path: cmd.exe
triggers:
- type: registration
repetition:
- interval: PT10M
duration: PT20M
stop_at_duration_end: no
register: change_trigger_repetition
- name: get result of change trigger repetition
win_scheduled_task_stat:
path: \
name: '{{test_scheduled_task_name}}'
register: change_trigger_repetition_result
- name: assert results of change trigger repetition
assert:
that:
- change_trigger_repetition is changed
- change_trigger_repetition_result.task_exists == True
- change_trigger_repetition_result.triggers|count == 1
- change_trigger_repetition_result.triggers[0].type == "TASK_TRIGGER_REGISTRATION"
- change_trigger_repetition_result.triggers[0].enabled == True
- change_trigger_repetition_result.triggers[0].start_boundary == None
- change_trigger_repetition_result.triggers[0].end_boundary == None
- change_trigger_repetition_result.triggers[0].repetition.interval == "PT10M"
- change_trigger_repetition_result.triggers[0].repetition.duration == "PT20M"
- change_trigger_repetition_result.triggers[0].repetition.stop_at_duration_end == False
- name: change trigger repetition (idempotent)
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
state: present
actions:
- path: cmd.exe
triggers:
- type: registration
repetition:
- interval: PT10M
duration: PT20M
stop_at_duration_end: no
register: change_trigger_repetition_again
- name: assert results of change trigger repetition (idempotent)
assert:
that:
- change_trigger_repetition_again is not changed
- name: create task with multiple triggers (check mode)
win_scheduled_task:
name: '{{test_scheduled_task_name}}'
@ -321,12 +499,13 @@
- create_multiple_triggers_check is changed
- create_multiple_triggers_result_check.task_exists == True
- create_multiple_triggers_result_check.triggers|count == 1
- create_multiple_triggers_result_check.triggers[0].type == "TASK_TRIGGER_MONTHLYDOW"
- create_multiple_triggers_result_check.triggers[0].type == "TASK_TRIGGER_REGISTRATION"
- create_multiple_triggers_result_check.triggers[0].enabled == True
- create_multiple_triggers_result_check.triggers[0].start_boundary == "2000-01-01T00:00:01"
- create_multiple_triggers_result_check.triggers[0].start_boundary == None
- create_multiple_triggers_result_check.triggers[0].end_boundary == None
- create_multiple_triggers_result_check.triggers[0].weeks_of_month == "1,2"
- create_multiple_triggers_result_check.triggers[0].days_of_week == "monday,wednesday"
- create_multiple_triggers_result_check.triggers[0].repetition.interval == "PT10M"
- create_multiple_triggers_result_check.triggers[0].repetition.duration == "PT20M"
- create_multiple_triggers_result_check.triggers[0].repetition.stop_at_duration_end == False
- name: create task with multiple triggers
win_scheduled_task: