summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/service/tasks/tests.yml
blob: cfb42152055a1c7bfe579988960c473fe36d2450 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
- name: disable the ansible test service
  service: name=ansible_test enabled=no

- name: (check mode run) enable the ansible test service
  service: name=ansible_test enabled=yes
  register: enable_in_check_mode_result
  check_mode: yes

- name: assert that changes reported for check mode run
  assert:
    that:
      - "enable_in_check_mode_result is changed"

- name: (check mode run) test that service defaults are used
  service:
  register: enable_in_check_mode_result
  check_mode: yes
  module_defaults:
    service:
      name: ansible_test
      enabled: yes

- name: assert that changes reported for check mode run
  assert:
    that:
      - "enable_in_check_mode_result is changed"

- name: (check mode run) test that specific module defaults are used
  service:
  register: enable_in_check_mode_result
  check_mode: yes
  when: "ansible_service_mgr in ['sysvinit', 'systemd']"
  module_defaults:
    sysvinit:
      name: ansible_test
      enabled: yes
    systemd:
      name: ansible_test
      enabled: yes

- name: assert that changes reported for check mode run
  assert:
    that:
      - "enable_in_check_mode_result is changed"
  when: "ansible_service_mgr in ['sysvinit', 'systemd']"

- name: enable the ansible test service
  service: name=ansible_test enabled=yes
  register: enable_result

- name: assert that the service was enabled and changes reported
  assert:
    that:
      - "enable_result.enabled == true"
      - "enable_result is changed"

- name: start the ansible test service
  service: name=ansible_test state=started
  register: start_result

- name: assert that the service was started
  assert:
    that:
      - "start_result.state == 'started'"
      - "start_result is changed"

- name: check that the service was started
  shell: 'cat /proc/$(cat /var/run/ansible_test_service.pid)/cmdline'
  register: cmdline
  failed_when: cmdline is failed or '\0/usr/sbin/ansible_test_service\0' not in cmdline.stdout
  # No proc on BSD
  when: not ansible_distribution.lower().endswith('bsd')

- name: check that the service was started (*bsd)
  shell: 'ps -p $(cat /var/run/ansible_test_service.pid)'
  register: cmdline
  failed_when: cmdline is failed or '/usr/sbin/ansible_test_service' not in cmdline.stdout
  when: ansible_distribution.lower().endswith('bsd')

- name: find the service with a pattern
  service: name=ansible_test pattern="ansible_test_ser" state=started
  register: start2_result

- name: assert that the service was started via the pattern
  assert:
    that:
      - "start2_result.name == 'ansible_test'"
      - "start2_result.state == 'started'"
      - "start2_result is not changed"

- name: fetch PID for ansible_test service (before restart)
  command: 'cat /var/run/ansible_test_service.pid'
  register: pid_before_restart

- name: restart the ansible test service
  service: name=ansible_test state=restarted
  register: restart_result

- name: assert that the service was restarted
  assert:
    that:
      - "restart_result.state == 'started'"
      - "restart_result is changed"

- name: fetch PID for ansible_test service (after restart)
  command: 'cat /var/run/ansible_test_service.pid'
  register: pid_after_restart

- name: "check that PIDs aren't the same"
  fail:
  when: pid_before_restart.stdout == pid_after_restart.stdout

- name: check that service is started
  command: 'cat /proc/{{ pid_after_restart.stdout }}/cmdline'
  register: cmdline
  failed_when: cmdline is failed or '\0/usr/sbin/ansible_test_service\0' not in cmdline.stdout
  # No proc on BSD
  when: not ansible_distribution.lower().endswith('bsd')

- name: check that the service is started (*bsd)
  shell: 'ps -p {{ pid_after_restart.stdout }}'
  register: cmdline
  failed_when: cmdline is failed or '/usr/sbin/ansible_test_service' not in cmdline.stdout
  when: ansible_distribution.lower().endswith('bsd')

- name: restart the ansible test service with a sleep
  service: name=ansible_test state=restarted sleep=2
  register: restart_sleep_result

- name: assert that the service was restarted with a sleep
  assert:
    that:
      - "restart_sleep_result.state == 'started'"
      - "restart_sleep_result is changed"

- name: reload the ansible test service
  service: name=ansible_test state=reloaded
  register: reload_result
  # don't do this on systems with systemd because it triggers error:
  #   Unable to reload service ansible_test: ansible_test.service is not active, cannot reload.
  when: service_type != "systemd"

- name: assert that the service was reloaded
  assert:
    that:
      - "reload_result.state == 'started'"
      - "reload_result is changed"
  when: service_type != "systemd"

- name: "test for #42786 (sysvinit)"
  when: service_type == "sysv"
  block:
    - name: "sysvinit (#42786): check state, 'enable' parameter isn't set"
      service: use=sysvinit name=ansible_test state=started

    - name: "sysvinit (#42786): check that service is still enabled"
      service: use=sysvinit name=ansible_test enabled=yes
      register: result_enabled
      failed_when: result_enabled is changed

- name: fetch PID for ansible_test service
  command: 'cat /var/run/ansible_test_service.pid'
  register: ansible_test_pid

- name: check that service is started
  command: 'cat /proc/{{ ansible_test_pid.stdout }}/cmdline'
  register: cmdline
  failed_when: cmdline is failed or '\0/usr/sbin/ansible_test_service\0' not in cmdline.stdout
  # No proc on BSD
  when: not ansible_distribution.lower().endswith('bsd')

- name: check that the service is started (*bsd)
  shell: 'ps -p {{ ansible_test_pid.stdout }}'
  register: cmdline
  failed_when: cmdline is failed or '/usr/sbin/ansible_test_service' not in cmdline.stdout
  when: ansible_distribution.lower().endswith('bsd')

- name: stop the ansible test service
  service: name=ansible_test state=stopped
  register: stop_result

- name: check that the service is stopped
  command: 'cat /proc/{{ ansible_test_pid.stdout }}/cmdline'
  register: cmdline
  failed_when: cmdline is not failed or '\0/usr/sbin/ansible_test_service\0' in cmdline.stdout
  # No proc on BSD
  when: not ansible_distribution.lower().endswith('bsd')

- name: check that the service is stopped (*bsd)
  shell: 'ps -p {{ ansible_test_pid.stdout }}'
  register: cmdline
  failed_when: cmdline is not failed or '/usr/sbin/ansible_test_service' in cmdline.stdout
  when: ansible_distribution.lower().endswith('bsd')

- name: assert that the service was stopped
  assert:
    that:
      - "stop_result.state == 'stopped'"
      - "stop_result is changed"

- name: disable the ansible test service
  service: name=ansible_test enabled=no
  register: disable_result

- name: assert that the service was disabled
  assert:
    that:
      - "disable_result.enabled == false"
      - "disable_result is changed"

- name: try to enable a broken service
  service: name=ansible_broken_test enabled=yes
  register: broken_enable_result
  ignore_errors: True

- name: assert that the broken test failed
  assert:
    that:
      - "broken_enable_result is failed"

- name: remove the test daemon script
  file: path=/usr/sbin/ansible_test_service state=absent
  register: remove_result

- name: assert that the test daemon script was removed
  assert:
    that:
      - "remove_result.path == '/usr/sbin/ansible_test_service'"
      - "remove_result.state == 'absent'"

- name: the module must fail when a service is not found
  service:
    name: 'nonexisting'
    state: stopped
  register: result
  ignore_errors: yes
  when: ansible_distribution != 'FreeBSD'

- assert:
    that:
      - result is failed
      - result is search("Could not find the requested service nonexisting")
  when: ansible_distribution != 'FreeBSD'

- name: the module must fail in check_mode as well when a service is not found
  service:
    name: 'nonexisting'
    state: stopped
  register: result
  check_mode: yes
  ignore_errors: yes
  when: ansible_distribution != 'FreeBSD'

- assert:
    that:
      - result is failed
      - result is search("Could not find the requested service nonexisting")
  when: ansible_distribution != 'FreeBSD'