aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyril Hrubis <chrubis@suse.cz>2014-03-26 13:51:38 +0100
committerCyril Hrubis <chrubis@suse.cz>2014-03-26 14:02:11 +0100
commit790407496b324fc7cc0b99c17c72ac0f82d420d9 (patch)
tree3d5e9979054d1dfe2e4d8f9c1b6336e87564145f
parentb44f410efc466d4eec7ed92bcee4ee799501a2e7 (diff)
cmdlib.sh: Move daemon functions to daemonlib.sh
Move the daemon start/stop functions to separate daemonlib.sh library. Add documentation to test-writing-guidelines Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
-rw-r--r--doc/test-writing-guidelines.txt50
-rw-r--r--testcases/lib/cmdlib.sh61
-rw-r--r--testcases/lib/daemonlib.sh81
3 files changed, 132 insertions, 60 deletions
diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index f637da65d..337a6a800 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -764,6 +764,56 @@ TST_CLEANUP=cleanup
tst_exit
-------------------------------------------------------------------------------
+2.3.4 Restarting daemons
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Restarting system daemons is a complicated task for two reasons.
+
+* There are different init systems
+ (SysV init, systemd, etc...)
+
+* Daemon names are not unified between distributions
+ (apache vs httpd, cron vs crond, various syslog variations)
+
+To solve these problems LTP has 'testcases/lib/daemonlib.sh' library that
+provides functions to start/stop/query daemons as well as variables that store
+correct daemon name.
+
+.Supported operations
+|==============================================================================
+| start_daemon() | Starts daemon, name is passed as first parameter.
+| stop_daemon() | Stops daemon, name is passed as first parameter.
+| restart_daemon() | Restarts daemon, name is passed as first parameter.
+| status_daemon() | Returns daemon status, TODO: what is return value?
+|==============================================================================
+
+.Variables with detected names
+|==============================================================================
+| CROND_DAEMON | Cron daemon name (cron, crond).
+| SYSLOG_DAEMON | Syslog daemon name (syslog, syslog-ng, rsyslog).
+|==============================================================================
+
+.Cron daemon restart example
+[source,sh]
+-------------------------------------------------------------------------------
+#!/bin/sh
+#
+# Cron daemon restart example
+#
+TCID=cron01
+TST_COUNT=1
+. test.sh
+. daemonlib.sh
+
+...
+
+restart_daemon $CROND_DAEMON
+
+...
+
+tst_exit
+-------------------------------------------------------------------------------
+
3. Common problems
------------------
diff --git a/testcases/lib/cmdlib.sh b/testcases/lib/cmdlib.sh
index 412fe236c..104504fff 100644
--- a/testcases/lib/cmdlib.sh
+++ b/testcases/lib/cmdlib.sh
@@ -154,63 +154,4 @@ TCID=${TCID:=}
[ -z "$TCID" ] && TCID=${0##*/}
TC=$(echo "$TCID" | awk '{ sub( /[0-9]+$/,""); print; }')
-# running under systemd?
-if command -v systemctl >/dev/null 2>&1; then
- HAVE_SYSTEMCTL=1
-else
- HAVE_SYSTEMCTL=0
-fi
-
-# Check to see if syslogd, syslog-ng or rsyslogd exists
-SYSLOG_DAEMON=""
-if command -v syslogd >/dev/null 2>&1; then
- SYSLOG_DAEMON="syslog"
-elif command -v syslog-ng >/dev/null 2>&1; then
- SYSLOG_DAEMON="syslog-ng"
-elif command -v rsyslogd >/dev/null 2>&1; then
- SYSLOG_DAEMON="rsyslog"
-fi
-
-# Check to see if cron or crond exists
-CROND_DAEMON=""
-if command -v crond >/dev/null 2>&1; then
- CROND_DAEMON="crond"
-elif command -v cron >/dev/null 2>&1; then
- CROND_DAEMON="cron"
-fi
-
-start_daemon()
-{
- if [ $HAVE_SYSTEMCTL -eq 1 ]; then
- systemctl start $1.service > /dev/null 2>&1
- else
- service $1 start > /dev/null 2>&1
- fi
-}
-
-stop_daemon()
-{
- if [ $HAVE_SYSTEMCTL -eq 1 ]; then
- systemctl stop $1.service > /dev/null 2>&1
- else
- service $1 stop > /dev/null 2>&1
- fi
-}
-
-status_daemon()
-{
- if [ $HAVE_SYSTEMCTL -eq 1 ]; then
- systemctl status $1.service > /dev/null 2>&1
- else
- service $1 status > /dev/null 2>&1
- fi
-}
-
-restart_daemon()
-{
- if [ $HAVE_SYSTEMCTL -eq 1 ]; then
- systemctl restart $1.service > /dev/null 2>&1
- else
- service $1 restart > /dev/null 2>&1
- fi
-}
+. daemonlib.sh
diff --git a/testcases/lib/daemonlib.sh b/testcases/lib/daemonlib.sh
new file mode 100644
index 000000000..b924e1781
--- /dev/null
+++ b/testcases/lib/daemonlib.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+#
+# Copyright (C) 2009, Cisco Systems Inc.
+# Garrett Cooper, August 2009
+# Copyright (C) 2012-2014 Linux Test Project
+#
+# This program 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 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+# running under systemd?
+if command -v systemctl >/dev/null 2>&1; then
+ HAVE_SYSTEMCTL=1
+else
+ HAVE_SYSTEMCTL=0
+fi
+
+# Check to see if syslogd, syslog-ng or rsyslogd exists
+SYSLOG_DAEMON=""
+if command -v syslogd >/dev/null 2>&1; then
+ SYSLOG_DAEMON="syslog"
+elif command -v syslog-ng >/dev/null 2>&1; then
+ SYSLOG_DAEMON="syslog-ng"
+elif command -v rsyslogd >/dev/null 2>&1; then
+ SYSLOG_DAEMON="rsyslog"
+fi
+
+# Check to see if cron or crond exists
+CROND_DAEMON=""
+if command -v crond >/dev/null 2>&1; then
+ CROND_DAEMON="crond"
+elif command -v cron >/dev/null 2>&1; then
+ CROND_DAEMON="cron"
+fi
+
+start_daemon()
+{
+ if [ $HAVE_SYSTEMCTL -eq 1 ]; then
+ systemctl start $1.service > /dev/null 2>&1
+ else
+ service $1 start > /dev/null 2>&1
+ fi
+}
+
+stop_daemon()
+{
+ if [ $HAVE_SYSTEMCTL -eq 1 ]; then
+ systemctl stop $1.service > /dev/null 2>&1
+ else
+ service $1 stop > /dev/null 2>&1
+ fi
+}
+
+status_daemon()
+{
+ if [ $HAVE_SYSTEMCTL -eq 1 ]; then
+ systemctl status $1.service > /dev/null 2>&1
+ else
+ service $1 status > /dev/null 2>&1
+ fi
+}
+
+restart_daemon()
+{
+ if [ $HAVE_SYSTEMCTL -eq 1 ]; then
+ systemctl restart $1.service > /dev/null 2>&1
+ else
+ service $1 restart > /dev/null 2>&1
+ fi
+}