summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/service/files
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/service/files')
-rw-r--r--test/integration/targets/service/files/ansible-broken.upstart10
-rw-r--r--test/integration/targets/service/files/ansible.rc16
-rw-r--r--test/integration/targets/service/files/ansible.systemd11
-rwxr-xr-xtest/integration/targets/service/files/ansible.sysv134
-rw-r--r--test/integration/targets/service/files/ansible.upstart9
-rw-r--r--test/integration/targets/service/files/ansible_test_service.py74
6 files changed, 254 insertions, 0 deletions
diff --git a/test/integration/targets/service/files/ansible-broken.upstart b/test/integration/targets/service/files/ansible-broken.upstart
new file mode 100644
index 0000000..4e9c669
--- /dev/null
+++ b/test/integration/targets/service/files/ansible-broken.upstart
@@ -0,0 +1,10 @@
+description "ansible test daemon"
+
+start on runlevel [345]
+stop on runlevel [!345]
+
+expect daemon
+
+exec ansible_test_service
+
+manual
diff --git a/test/integration/targets/service/files/ansible.rc b/test/integration/targets/service/files/ansible.rc
new file mode 100644
index 0000000..ec77d52
--- /dev/null
+++ b/test/integration/targets/service/files/ansible.rc
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# PROVIDE: ansible_test_service
+# REQUIRE: FILESYSTEMS devfs
+# BEFORE: LOGIN
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="ansible_test_service"
+rcvar="ansible_test_service_enable"
+command="/usr/sbin/${name}"
+pidfile="/var/run/${name}.pid"
+extra_commands=reload
+load_rc_config $name
+run_rc_command "$1"
diff --git a/test/integration/targets/service/files/ansible.systemd b/test/integration/targets/service/files/ansible.systemd
new file mode 100644
index 0000000..3466f25
--- /dev/null
+++ b/test/integration/targets/service/files/ansible.systemd
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ansible Test Service
+
+[Service]
+ExecStart=/usr/sbin/ansible_test_service "Test\nthat newlines in scripts\nwork"
+ExecReload=/bin/true
+Type=forking
+PIDFile=/var/run/ansible_test_service.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/test/integration/targets/service/files/ansible.sysv b/test/integration/targets/service/files/ansible.sysv
new file mode 100755
index 0000000..1df0423
--- /dev/null
+++ b/test/integration/targets/service/files/ansible.sysv
@@ -0,0 +1,134 @@
+#!/bin/sh
+#
+
+# LSB header
+
+### BEGIN INIT INFO
+# Provides: ansible-test
+# Default-Start: 3 4 5
+# Default-Stop: 0 1 2 6
+# Short-Description: test daemon for ansible
+# Description: This is a test daemon used by ansible for testing only
+### END INIT INFO
+
+# chkconfig header
+
+# chkconfig: 345 99 99
+# description: This is a test daemon used by ansible for testing only
+#
+# processname: /usr/sbin/ansible_test_service
+
+# Sanity checks.
+[ -x /usr/sbin/ansible_test_service ] || exit 0
+
+DEBIAN_VERSION=/etc/debian_version
+SUSE_RELEASE=/etc/SuSE-release
+# Source function library.
+if [ -f $DEBIAN_VERSION ]; then
+ . /lib/lsb/init-functions
+elif [ -f $SUSE_RELEASE -a -r /etc/rc.status ]; then
+ . /etc/rc.status
+else
+ . /etc/rc.d/init.d/functions
+fi
+
+SERVICE=ansible_test_service
+PROCESS=ansible_test_service
+CONFIG_ARGS=" "
+if [ -f $DEBIAN_VERSION ]; then
+ LOCKFILE=/var/lock/$SERVICE
+else
+ LOCKFILE=/var/lock/subsys/$SERVICE
+fi
+
+RETVAL=0
+
+start() {
+ echo -n "Starting ansible test daemon: "
+ if [ -f $SUSE_RELEASE ]; then
+ startproc -p /var/run/${SERVICE}.pid -f /usr/sbin/ansible_test_service
+ rc_status -v
+ elif [ -e $DEBIAN_VERSION ]; then
+ if [ -f $LOCKFILE ]; then
+ echo -n "already started, lock file found"
+ RETVAL=1
+ elif /usr/sbin/ansible_test_service; then
+ echo -n "OK"
+ RETVAL=0
+ fi
+ else
+ daemon --check $SERVICE $PROCESS --daemonize $CONFIG_ARGS
+ fi
+ RETVAL=$?
+ echo
+ [ $RETVAL -eq 0 ] && touch $LOCKFILE
+ return $RETVAL
+}
+
+stop() {
+ echo -n "Stopping ansible test daemon: "
+ if [ -f $SUSE_RELEASE ]; then
+ killproc -TERM /usr/sbin/ansible_test_service
+ rc_status -v
+ elif [ -f $DEBIAN_VERSION ]; then
+ # Added this since Debian's start-stop-daemon doesn't support spawned processes
+ if ps -ef | grep "/usr/sbin/ansible_test_service" | grep -v grep | awk '{print $2}' | xargs kill &> /dev/null; then
+ echo -n "OK"
+ RETVAL=0
+ else
+ echo -n "Daemon is not started"
+ RETVAL=1
+ fi
+ else
+ killproc -p /var/run/${SERVICE}.pid
+ fi
+ RETVAL=$?
+ echo
+ if [ $RETVAL -eq 0 ]; then
+ rm -f $LOCKFILE
+ rm -f /var/run/$SERVICE.pid
+ fi
+}
+
+restart() {
+ stop
+ start
+}
+
+# See how we were called.
+case "$1" in
+ start|stop|restart)
+ $1
+ ;;
+ status)
+ if [ -f $SUSE_RELEASE ]; then
+ echo -n "Checking for ansible test service "
+ checkproc /usr/sbin/ansible_test_service
+ rc_status -v
+ elif [ -f $DEBIAN_VERSION ]; then
+ if [ -f $LOCKFILE ]; then
+ RETVAL=0
+ echo "ansible test is running."
+ else
+ RETVAL=1
+ echo "ansible test is stopped."
+ fi
+ else
+ status $PROCESS
+ RETVAL=$?
+ fi
+ ;;
+ condrestart)
+ [ -f $LOCKFILE ] && restart || :
+ ;;
+ reload)
+ echo "ok"
+ RETVAL=0
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|status|restart|condrestart|reload}"
+ exit 1
+ ;;
+esac
+exit $RETVAL
+
diff --git a/test/integration/targets/service/files/ansible.upstart b/test/integration/targets/service/files/ansible.upstart
new file mode 100644
index 0000000..369f61a
--- /dev/null
+++ b/test/integration/targets/service/files/ansible.upstart
@@ -0,0 +1,9 @@
+description "ansible test daemon"
+
+start on runlevel [345]
+stop on runlevel [!345]
+
+expect daemon
+
+exec ansible_test_service
+
diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py
new file mode 100644
index 0000000..522493f
--- /dev/null
+++ b/test/integration/targets/service/files/ansible_test_service.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+# this is mostly based off of the code found here:
+# http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+import os
+import resource
+import signal
+import sys
+import time
+
+UMASK = 0
+WORKDIR = "/"
+MAXFD = 1024
+
+if (hasattr(os, "devnull")):
+ REDIRECT_TO = os.devnull
+else:
+ REDIRECT_TO = "/dev/null"
+
+
+def createDaemon():
+ try:
+ pid = os.fork()
+ except OSError as e:
+ raise Exception("%s [%d]" % (e.strerror, e.errno))
+
+ if (pid == 0):
+ os.setsid()
+
+ try:
+ pid = os.fork()
+ except OSError as e:
+ raise Exception("%s [%d]" % (e.strerror, e.errno))
+
+ if (pid == 0):
+ os.chdir(WORKDIR)
+ os.umask(UMASK)
+ else:
+ f = open('/var/run/ansible_test_service.pid', 'w')
+ f.write("%d\n" % pid)
+ f.close()
+ os._exit(0)
+ else:
+ os._exit(0)
+
+ maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
+ if (maxfd == resource.RLIM_INFINITY):
+ maxfd = MAXFD
+
+ for fd in range(0, maxfd):
+ try:
+ os.close(fd)
+ except OSError: # ERROR, fd wasn't open to begin with (ignored)
+ pass
+
+ os.open(REDIRECT_TO, os.O_RDWR)
+ os.dup2(0, 1)
+ os.dup2(0, 2)
+
+ return (0)
+
+
+if __name__ == "__main__":
+
+ signal.signal(signal.SIGHUP, signal.SIG_IGN)
+
+ retCode = createDaemon()
+
+ while True:
+ time.sleep(1000)