mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #8015 from cchurch/test_win_service
win_service module updates and tests
This commit is contained in:
commit
1a3a3af04c
4 changed files with 219 additions and 2 deletions
|
@ -48,14 +48,27 @@ $svc = Get-Service -Name $svcName -ErrorAction SilentlyContinue
|
|||
If (-not $svc) {
|
||||
Fail-Json $result "Service '$svcName' not installed"
|
||||
}
|
||||
# Use service name instead of display name for remaining actions.
|
||||
If ($svcName -ne $svc.ServiceName) {
|
||||
$svcName = $svc.ServiceName
|
||||
}
|
||||
|
||||
Set-Attr $result "name" $svc.ServiceName
|
||||
Set-Attr $result "display_name" $svc.DisplayName
|
||||
|
||||
$svcMode = Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='$svcName'"
|
||||
If ($startMode) {
|
||||
$svcMode = Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='$svcName'"
|
||||
|
||||
If ($svcMode.StartMode.ToLower() -ne $startMode) {
|
||||
Set-Service -Name $svcName -StartupType $startMode
|
||||
Set-Attr $result "changed" $true
|
||||
Set-Attr $result "start_mode" $startMode
|
||||
}
|
||||
Else {
|
||||
Set-Attr $result "start_mode" $svcMode.StartMode.ToLower()
|
||||
}
|
||||
}
|
||||
Else {
|
||||
Set-Attr $result "start_mode" $svcMode.StartMode.ToLower()
|
||||
}
|
||||
|
||||
If ($state) {
|
||||
|
@ -87,5 +100,7 @@ If ($state) {
|
|||
Set-Attr $result "changed" $true;
|
||||
}
|
||||
}
|
||||
$svc.Refresh()
|
||||
Set-Attr $result "state" $svc.Status.ToString().ToLower()
|
||||
|
||||
Exit-Json $result;
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
|
||||
# Service is commonly available and usually disabled/stopped by default.
|
||||
test_win_service_name: SSDPSRV
|
||||
test_win_service_display_name: "SSDP Discovery"
|
196
test/integration/roles/test_win_service/tasks/main.yml
Normal file
196
test/integration/roles/test_win_service/tasks/main.yml
Normal file
|
@ -0,0 +1,196 @@
|
|||
# test code for the win_service module
|
||||
# (c) 2014, Chris Church <chris@ninemoreminutes.com>
|
||||
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
- name: test win_service module with short name
|
||||
win_service: name="{{ test_win_service_name }}"
|
||||
register: win_service_name
|
||||
|
||||
- name: check win_service result with short name
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_name|changed"
|
||||
- "win_service_name.name"
|
||||
- "win_service_name.display_name"
|
||||
- "win_service_name.start_mode"
|
||||
- "win_service_name.state"
|
||||
|
||||
- name: test win_service module with display name
|
||||
win_service: name="{{ test_win_service_display_name }}"
|
||||
register: win_service_display_name
|
||||
|
||||
- name: check win_service result with display name
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_display_name|changed"
|
||||
- "win_service_display_name.name"
|
||||
- "win_service_display_name.display_name"
|
||||
- "win_service_display_name.start_mode"
|
||||
- "win_service_display_name.state"
|
||||
|
||||
- name: test win_service module with invalid name
|
||||
win_service: name="iamnotaservice"
|
||||
ignore_errors: true
|
||||
register: win_service_invalid
|
||||
|
||||
- name: check win_service result with invalid_name
|
||||
assert:
|
||||
that:
|
||||
- "win_service_invalid|failed"
|
||||
- "win_service_invalid.msg"
|
||||
|
||||
- name: make sure the service is stopped and disabled
|
||||
win_service: name="{{ test_win_service_name }}" state=stopped start_mode=disabled
|
||||
register: win_service_stopped_disabled
|
||||
|
||||
- name: check result of disabling and stopping the service
|
||||
assert:
|
||||
that:
|
||||
- "win_service_stopped_disabled.start_mode == 'disabled'"
|
||||
- "win_service_stopped_disabled.state == 'stopped'"
|
||||
|
||||
- name: try to start the disabled service
|
||||
win_service: name="{{ test_win_service_name }}" state=started
|
||||
register: win_service_start_disabled
|
||||
ignore_errors: true
|
||||
|
||||
- name: check that starting the disabled service fails
|
||||
assert:
|
||||
that:
|
||||
- "win_service_start_disabled|failed"
|
||||
- "win_service_start_disabled.msg"
|
||||
|
||||
- name: enable the service for manual startup
|
||||
win_service: name="{{ test_win_service_name }}" start_mode=manual
|
||||
register: win_service_manual_start_mode
|
||||
|
||||
- name: check that enabling the service succeeds for manual startup
|
||||
assert:
|
||||
that:
|
||||
- "win_service_manual_start_mode|changed"
|
||||
- "win_service_manual_start_mode.start_mode == 'manual'"
|
||||
- "win_service_manual_start_mode.state == 'stopped'"
|
||||
|
||||
- name: enable the service again for manual startup
|
||||
win_service: name="{{ test_win_service_name }}" start_mode=manual
|
||||
register: win_service_manual_start_mode_again
|
||||
|
||||
- name: check that enabling the service succeeds for manual startup
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_manual_start_mode_again|changed"
|
||||
- "win_service_manual_start_mode_again.start_mode == 'manual'"
|
||||
- "win_service_manual_start_mode_again.state == 'stopped'"
|
||||
|
||||
- name: try to start the manual service
|
||||
win_service: name="{{ test_win_service_name }}" state=started
|
||||
register: win_service_start_manual
|
||||
|
||||
- name: check that starting the manual service succeeds
|
||||
assert:
|
||||
that:
|
||||
- "win_service_start_manual|changed"
|
||||
- "win_service_start_manual.start_mode == 'manual'"
|
||||
- "win_service_start_manual.state == 'running'"
|
||||
|
||||
- name: try to start the manual service again
|
||||
win_service: name="{{ test_win_service_name }}" state=started
|
||||
register: win_service_start_manual_again
|
||||
|
||||
- name: check that starting the manual service again succeeds without changes
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_start_manual_again|changed"
|
||||
- "win_service_start_manual_again.start_mode == 'manual'"
|
||||
- "win_service_start_manual_again.state == 'running'"
|
||||
|
||||
- name: enable the service for automatic startup
|
||||
win_service: name="{{ test_win_service_name }}" start_mode=auto
|
||||
register: win_service_auto_start_mode
|
||||
|
||||
- name: check that enabling the service succeeds for automatic startup
|
||||
assert:
|
||||
that:
|
||||
- "win_service_auto_start_mode|changed"
|
||||
- "win_service_auto_start_mode.start_mode == 'auto'"
|
||||
- "win_service_auto_start_mode.state == 'running'"
|
||||
|
||||
- name: enable the service again for automatic startup
|
||||
win_service: name="{{ test_win_service_name }}" start_mode=auto
|
||||
register: win_service_auto_start_mode_again
|
||||
|
||||
- name: check that enabling the service succeeds for automatic startup without changes
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_auto_start_mode_again|changed"
|
||||
- "win_service_auto_start_mode_again.start_mode == 'auto'"
|
||||
- "win_service_auto_start_mode_again.state == 'running'"
|
||||
|
||||
- name: restart the service
|
||||
win_service: name="{{ test_win_service_name }}" state=restarted
|
||||
register: win_service_restart_auto
|
||||
|
||||
- name: check that restarting the service succeeds with changes
|
||||
assert:
|
||||
that:
|
||||
- "win_service_restart_auto|changed"
|
||||
- "win_service_restart_auto.start_mode == 'auto'"
|
||||
- "win_service_restart_auto.state == 'running'"
|
||||
|
||||
- name: disable the service again
|
||||
win_service: name="{{ test_win_service_name }}" start_mode=disabled
|
||||
register: win_service_disabled_start_mode
|
||||
|
||||
- name: check that disabling the service succeeds, service is still running
|
||||
assert:
|
||||
that:
|
||||
- "win_service_disabled_start_mode|changed"
|
||||
- "win_service_disabled_start_mode.start_mode == 'disabled'"
|
||||
- "win_service_disabled_start_mode.state == 'running'"
|
||||
|
||||
- name: disable the service again
|
||||
win_service: name="{{ test_win_service_name }}" start_mode=disabled
|
||||
register: win_service_disabled_start_mode_again
|
||||
|
||||
- name: check that disabling the service succeeds again
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_disabled_start_mode_again|changed"
|
||||
- "win_service_disabled_start_mode_again.start_mode == 'disabled'"
|
||||
- "win_service_disabled_start_mode_again.state == 'running'"
|
||||
|
||||
- name: stop the service
|
||||
win_service: name="{{ test_win_service_name }}" state=stopped
|
||||
register: win_service_stop_disabled
|
||||
|
||||
- name: check that stopping the service succeeds with changes
|
||||
assert:
|
||||
that:
|
||||
- "win_service_stop_disabled|changed"
|
||||
- "win_service_stop_disabled.start_mode == 'disabled'"
|
||||
- "win_service_stop_disabled.state == 'stopped'"
|
||||
|
||||
- name: stop the service again
|
||||
win_service: name="{{ test_win_service_name }}" state=stopped
|
||||
register: win_service_stop_disabled_again
|
||||
|
||||
- name: check that stopping the service again succeeds without changes
|
||||
assert:
|
||||
that:
|
||||
- "not win_service_stop_disabled_again|changed"
|
||||
- "win_service_stop_disabled_again.start_mode == 'disabled'"
|
||||
- "win_service_stop_disabled_again.state == 'stopped'"
|
|
@ -28,3 +28,4 @@
|
|||
- { role: test_win_stat, tags: test_win_stat }
|
||||
- { role: test_win_get_url, tags: test_win_get_url }
|
||||
- { role: test_win_msi, tags: test_win_msi }
|
||||
- { role: test_win_service, tags: test_win_service }
|
||||
|
|
Loading…
Reference in a new issue