Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion misc/init.d/cfengine3.in
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ fi
CFEXECD=${CFTEST_CFEXECD:-$PREFIX/bin/cf-execd}
CFSERVD=${CFTEST_CFSERVD:-$PREFIX/bin/cf-serverd}
CFMOND=${CFTEST_CFMOND:-$PREFIX/bin/cf-monitord}
CFREACTORD=${CFTEST_CFREACTORD:-$PREFIX/bin/cf-reactor}
CFAGENT=${CFTEST_CFAGENT:-$PREFIX/bin/cf-agent}

PIDFILE_TEMPLATE=$PREFIX/%s.pid
Expand Down Expand Up @@ -114,13 +115,15 @@ if [ "$DEBIAN" = "1" ]; then
else
DEFAULT=/etc/sysconfig/cfengine3
fi
DEFAULT=${CFTEST_DEFAULT:-$DEFAULT}

if [ -f $DEFAULT ]; then
. $DEFAULT
else
RUN_CF_EXECD=1
RUN_CF_SERVERD=1
RUN_CF_MONITORD=1
RUN_CF_REACTOR=1
fi

# Check /sbin/startproc for SUSE
Expand Down Expand Up @@ -227,7 +230,7 @@ cf_get_matching_pids()
for pid in $pids; do
# If the last character of the cgroup is not the root directory,
# then this is a container process.
if [ -f /proc/$pid/cgroup ] && sed 's_/\(-\|system\|user\).slice__;s_/user-[0-9]*.slice__;s_/session-[0-9]*.scope__;s_/cfengine3.service__;s_/cf-execd.service__;s_/cf-serverd.service__;s_/cf-monitord.service__' /proc/$pid/cgroup | egrep '[0-9]+:devices:/[^:]' > /dev/null; then
if [ -f /proc/$pid/cgroup ] && sed 's_/\(-\|system\|user\).slice__;s_/user-[0-9]*.slice__;s_/session-[0-9]*.scope__;s_/cfengine3.service__;s_/cf-execd.service__;s_/cf-serverd.service__;s_/cf-monitord.service__;s_/cf-reactor.service__' /proc/$pid/cgroup | egrep '[0-9]+:devices:/[^:]' > /dev/null; then
if [ $INSIDE_CONTAINER = 1 ]; then
echo $pid
fi
Expand Down Expand Up @@ -501,6 +504,11 @@ cf_start_core_daemons()
if [ "$RUN_CF_MONITORD" = "1" ]; then
cf_start_daemon "$CFMOND"
fi

# start cf-reactor
if [ "$RUN_CF_REACTOR" = "1" ]; then
cf_start_daemon "$CFREACTORD"
fi
}

cf_stop_core_daemons()
Expand Down Expand Up @@ -549,6 +557,11 @@ cf_stop_core_daemons()
cf_stop_daemon "$CFMOND" && any_process_present=1
fi

# shutdown cf-reactor
if [ "$RUN_CF_REACTOR" = "1" ]; then
cf_stop_daemon "$CFREACTORD" && any_process_present=1
fi

# In case agents were spawned just as we were trying to kill the
# daemons, try killing those too.
cf_stop_agents && any_process_present=1
Expand Down Expand Up @@ -588,6 +601,14 @@ cf_status_core_daemons()
fi
fi

# status cf-reactor
if [ "$RUN_CF_REACTOR" = "1" ]; then
cf_status_daemon "$CFREACTORD"
if [ "$?" = "3" ]; then
cf_status_core_daemons_exit=3
fi
fi

# Return the exit code
return $cf_status_core_daemons_exit
}
Expand Down
21 changes: 16 additions & 5 deletions tests/unit/init_script_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,11 @@ export CFTEST_PREFIX=/tmp/init_script_test.sh.$$
export CFTEST_CFEXECD=$CFTEST_PREFIX/bin/cf-test-execd
export CFTEST_CFSERVD=$CFTEST_PREFIX/bin/cf-test-serverd
export CFTEST_CFMOND=$CFTEST_PREFIX/bin/cf-test-monitord
export CFTEST_CFREACTORD=$CFTEST_PREFIX/bin/cf-test-reactor
export CFTEST_CFAGENT=$CFTEST_PREFIX/bin/cf-test-agent
# Don't pick up the host's /etc/default/cfengine3 or /etc/sysconfig/cfengine3.
# The file is never created, so the init script's built-in defaults apply.
export CFTEST_DEFAULT=$CFTEST_PREFIX/cfengine3
export OUTFILE=$CFTEST_PREFIX/outfile

rm -rf $CFTEST_PREFIX
Expand Down Expand Up @@ -94,6 +98,7 @@ set -e
cp init_script_test_helper $CFTEST_PREFIX/bin/cf-test-execd
cp init_script_test_helper $CFTEST_PREFIX/bin/cf-test-serverd
cp init_script_test_helper $CFTEST_PREFIX/bin/cf-test-monitord
cp init_script_test_helper $CFTEST_PREFIX/bin/cf-test-reactor
cp init_script_test_helper $CFTEST_PREFIX/bin/cf-test-agent

touch $CFTEST_PREFIX/inputs/promises.cf
Expand Down Expand Up @@ -150,6 +155,7 @@ verify_none_running()
no_matching_pid_exists $CFTEST_PREFIX/bin/cf-test-execd
no_matching_pid_exists $CFTEST_PREFIX/bin/cf-test-serverd
no_matching_pid_exists $CFTEST_PREFIX/bin/cf-test-monitord
no_matching_pid_exists $CFTEST_PREFIX/bin/cf-test-reactor
no_matching_pid_exists $CFTEST_PREFIX/bin/cf-test-agent
)
}
Expand All @@ -172,6 +178,7 @@ echo "TEST: Normal starting"
matching_pid_exists $CFTEST_PREFIX/bin/cf-test-execd
matching_pid_exists $CFTEST_PREFIX/bin/cf-test-serverd
matching_pid_exists $CFTEST_PREFIX/bin/cf-test-monitord
matching_pid_exists $CFTEST_PREFIX/bin/cf-test-reactor

echo "TEST: Normal stopping"
../../misc/init.d/cfengine3 stop
Expand All @@ -184,6 +191,9 @@ verify_none_running
$CFTEST_PREFIX/bin/cf-test-monitord
../../misc/init.d/cfengine3 stop
verify_none_running
$CFTEST_PREFIX/bin/cf-test-reactor
../../misc/init.d/cfengine3 stop
verify_none_running

echo "TEST: Stopping daemons and agents"
$CFTEST_PREFIX/bin/cf-test-execd --spawn-process $CFTEST_PREFIX/bin cf-test-agent
Expand Down Expand Up @@ -302,7 +312,7 @@ verify_none_running
$CFTEST_PREFIX/bin/cf-test-execd
../../misc/init.d/cfengine3 status > $OUTFILE \
&& retcode=$? || retcode=$?
for i in cf-test-serverd cf-test-monitord
for i in cf-test-serverd cf-test-monitord cf-test-reactor
do
cat $OUTFILE | grep "$i.*is not running"
done
Expand All @@ -314,9 +324,10 @@ test $retcode = 3
echo "TEST: Verify that status of all daemons works"
$CFTEST_PREFIX/bin/cf-test-serverd
$CFTEST_PREFIX/bin/cf-test-monitord
$CFTEST_PREFIX/bin/cf-test-reactor
../../misc/init.d/cfengine3 status > $OUTFILE \
&& retcode=$? || retcode=$?
for i in cf-test-execd cf-test-serverd cf-test-monitord
for i in cf-test-execd cf-test-serverd cf-test-monitord cf-test-reactor
do
cat $OUTFILE | egrep "$i.*(\.|is )running"
done
Expand All @@ -329,7 +340,7 @@ echo "TEST: Verify that status of no daemons works"
verify_none_running
../../misc/init.d/cfengine3 status > $OUTFILE \
&& retcode=$? || retcode=$?
for i in cf-test-execd cf-test-serverd cf-test-monitord
for i in cf-test-execd cf-test-serverd cf-test-monitord cf-test-reactor
do
cat $OUTFILE | grep "$i.*is not running"
done
Expand All @@ -344,7 +355,7 @@ $CFTEST_PREFIX/bin/cf-test-execd
$CFTEST_PREFIX/bin/cf-test-execd
../../misc/init.d/cfengine3 status > $OUTFILE \
&& retcode=$? || retcode=$?
for i in cf-test-serverd cf-test-monitord
for i in cf-test-serverd cf-test-monitord cf-test-reactor
do
cat $OUTFILE | grep "$i.*is not running"
done
Expand All @@ -359,7 +370,7 @@ $CFTEST_PREFIX/bin/cf-test-execd
echo 9999999 > $CFTEST_PREFIX/cf-test-execd.pid
../../misc/init.d/cfengine3 status > $OUTFILE \
&& retcode=$? || retcode=$?
for i in cf-test-serverd cf-test-monitord
for i in cf-test-serverd cf-test-monitord cf-test-reactor
do
cat $OUTFILE | grep "$i.*is not running"
done
Expand Down
Loading