Page MenuHomeFreeBSD

D47649.diff
No OneTemporary

D47649.diff

diff --git a/usr.sbin/syslogd/tests/Makefile b/usr.sbin/syslogd/tests/Makefile
--- a/usr.sbin/syslogd/tests/Makefile
+++ b/usr.sbin/syslogd/tests/Makefile
@@ -1,5 +1,9 @@
ATF_TESTS_SH+= syslogd_test
+# Run in jail with new vnet so we don't need to worry about address conflicts
+TEST_METADATA+= execenv="jail"
+TEST_METADATA+= execenv_jail_params="vnet=new"
# Several syslogd listening on the same port prevent parallel operation
TEST_METADATA+= is_exclusive="true"
+TEST_METADATA+= timeout=20
.include <bsd.test.mk>
diff --git a/usr.sbin/syslogd/tests/syslogd_test.sh b/usr.sbin/syslogd/tests/syslogd_test.sh
--- a/usr.sbin/syslogd/tests/syslogd_test.sh
+++ b/usr.sbin/syslogd/tests/syslogd_test.sh
@@ -11,7 +11,7 @@
#
# Tests to-do:
-# actions: hostname, users
+# actions: users
readonly SYSLOGD_UDP_PORT="5140"
readonly SYSLOGD_CONFIG="${PWD}/syslog.conf"
@@ -22,27 +22,72 @@
# Start a private syslogd instance.
syslogd_start()
{
- local jail
+ local jail bind_addr conf_file pid_file socket privsocket
+ local opt next other_args
+
+ # Setup loopback so we can deliver messages to ourself.
+ atf_check ifconfig lo0 inet 127.0.0.1/16
+
+ OPTIND=1
+ while getopts ":b:f:j:P:p:S:" opt; do
+ case "${opt}" in
+ b)
+ bind_addr="${OPTARG}"
+ ;;
+ f)
+ conf_file="${OPTARG}"
+ ;;
+ j)
+ jail="jexec ${OPTARG}"
+ ;;
+ P)
+ pid_file="${OPTARG}"
+ ;;
+ p)
+ socket="${OPTARG}"
+ ;;
+ S)
+ privsocket="${OPTARG}"
+ ;;
+ ?)
+ opt="${OPTARG}"
+ next="$(eval echo \${${OPTIND}})"
+
+ case "${next}" in
+ -* | "")
+ other_args="${other_args} -${opt}"
+ shift $((OPTIND - 1))
+ ;;
+ *)
+ other_args="${other_args} -${opt} ${next}"
+ shift ${OPTIND}
+ ;;
+ esac
+
+ # Tell getopts to continue parsing.
+ OPTIND=1
+ ;;
+ :)
+ atf_fail "The -${OPTARG} flag requires an argument"
+ ;;
+ esac
+ done
- if [ "$1" = "-j" ]; then
- jail="jexec $2"
- shift 2
- fi
$jail syslogd \
- -b ":${SYSLOGD_UDP_PORT}" \
+ -b "${bind_addr:-":${SYSLOGD_UDP_PORT}"}" \
-C \
-d \
- -f "${SYSLOGD_CONFIG}" \
+ -f "${conf_file:-${SYSLOGD_CONFIG}}" \
-H \
- -p "${SYSLOGD_LOCAL_SOCKET}" \
- -P "${SYSLOGD_PIDFILE}" \
- -S "${SYSLOGD_LOCAL_PRIVSOCKET}" \
- $@ \
+ -P "${pid_file:-${SYSLOGD_PIDFILE}}" \
+ -p "${socket:-${SYSLOGD_LOCAL_SOCKET}}" \
+ -S "${privsocket:-${SYSLOGD_LOCAL_PRIVSOCKET}}" \
+ ${other_args} \
&
# Give syslogd a bit of time to spin up.
while [ "$((i+=1))" -le 20 ]; do
- [ -S "${SYSLOGD_LOCAL_SOCKET}" ] && return
+ [ -S "${socket:-${SYSLOGD_LOCAL_SOCKET}}" ] && return
sleep 0.1
done
atf_fail "timed out waiting for syslogd to start"
@@ -57,17 +102,19 @@
# Make syslogd reload its configuration file.
syslogd_reload()
{
- pkill -HUP -F "${SYSLOGD_PIDFILE}"
+ pkill -HUP -F "${1:-${SYSLOGD_PIDFILE}}"
}
# Stop a private syslogd instance.
syslogd_stop()
{
- pid=$(cat "${SYSLOGD_PIDFILE}")
- if pkill -F "${SYSLOGD_PIDFILE}"; then
+ local pid_file="${1:-${SYSLOGD_PIDFILE}}"
+
+ pid=$(cat "${pid_file}")
+ if pkill -F "${pid_file}"; then
wait "${pid}"
- rm -f "${SYSLOGD_PIDFILE}" "${SYSLOGD_LOCAL_SOCKET}" \
- "${SYSLOGD_LOCAL_PRIVSOCKET}"
+ rm -f "${pid_file}" "${2:-${SYSLOGD_LOCAL_SOCKET}}" \
+ "${3:-${SYSLOGD_LOCAL_PRIVSOCKET}}"
fi
}
@@ -270,6 +317,45 @@
syslogd_stop
}
+atf_test_case "host_action" "cleanup"
+host_action_head()
+{
+ atf_set descr "Sends a message to a specified host"
+}
+host_action_body()
+{
+ local addr="192.0.2.100"
+ local logfile="${PWD}/host_action.log"
+
+ atf_check ifconfig lo1 create
+ atf_check ifconfig lo1 inet "${addr}/24"
+ atf_check ifconfig lo1 up
+
+ printf "user.debug\t${logfile}\n" > "${SYSLOGD_CONFIG}"
+ syslogd_start -b "${addr}"
+
+ printf "user.debug\t@${addr}\n" > "${SYSLOGD_CONFIG}.2"
+ syslogd_start \
+ -f "${SYSLOGD_CONFIG}.2" \
+ -P "${SYSLOGD_PIDFILE}.2" \
+ -p "${SYSLOGD_LOCAL_SOCKET}.2" \
+ -S "${SYSLOGD_LOCAL_PRIVSOCKET}.2"
+
+ syslogd_log -p user.debug -t "test" -h "${SYSLOGD_LOCAL_SOCKET}.2" \
+ "message from syslogd2"
+ atf_check -s exit:0 -o match:"test: message from syslogd2" \
+ cat "${logfile}"
+}
+host_action_cleanup()
+{
+ syslogd_stop
+ syslogd_stop \
+ "${SYSLOGD_PIDFILE}.2" \
+ "${SYSLOGD_LOCAL_SOCKET}.2" \
+ "${SYSLOGD_LOCAL_PRIVSOCKET}.2"
+ atf_check ifconfig lo1 destroy
+}
+
atf_test_case "pipe_action" "cleanup"
pipe_action_head()
{
@@ -308,7 +394,7 @@
logfile="${PWD}/jail_noinet.log"
printf "user.debug\t${logfile}\n" > "${SYSLOGD_CONFIG}"
- syslogd_start -j syslogd_noinet -ss
+ syslogd_start -j syslogd_noinet -s -s
syslogd_log -p user.debug -t "test" -h "${SYSLOGD_LOCAL_SOCKET}" \
"hello, world"
@@ -326,6 +412,7 @@
atf_add_test_case "prog_filter"
atf_add_test_case "host_filter"
atf_add_test_case "prop_filter"
+ atf_add_test_case "host_action"
atf_add_test_case "pipe_action"
atf_add_test_case "jail_noinet"
}

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 11, 1:11 PM (12 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16595536
Default Alt Text
D47649.diff (5 KB)

Event Timeline