From f29f31340cb7437a3394f370fd7cbac4829392e8 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sun, 6 Mar 2022 00:56:03 +0100 Subject: [PATCH] test: refactor and generalize setup(), adding a setup2() This patch refactors the way the primary and secondary syslogd is started by the test framework. The generalizations not only make the code more readable, it hopefully also makes it easier to add new tests in the future. Signed-off-by: Joachim Wiberg --- test/api.sh | 6 ++-- test/fwd.sh | 11 +++--- test/lib.sh | 90 ++++++++++++++++++++++++++++++++++++-------------- test/mark.sh | 4 ++- test/opts.sh | 6 +--- test/remote.sh | 6 ++-- 6 files changed, 78 insertions(+), 45 deletions(-) diff --git a/test/api.sh b/test/api.sh index 49d114e..4c641e5 100755 --- a/test/api.sh +++ b/test/api.sh @@ -15,8 +15,7 @@ echo "= Phase 2 - syslog() with openlog() & custom facility ===" cat <${CONFD}/console.conf console.* -${LOGCONS} EOF -kill -HUP `cat ${PID}` -sleep 2 +reload ./api -i foo grep "foo: ${MSG}" ${LOGCONS} @@ -29,8 +28,7 @@ echo "= Phase 4 - Verify RFC5424 API with syslogp() ===========" cat <${CONFD}/v1.conf ftp.* -${LOGV1} ;RFC5424 EOF -kill -HUP `cat ${PID}` -sleep 2 +reload ./api -i troglobit -p sleep 2 diff --git a/test/fwd.sh b/test/fwd.sh index 1088b89..421b3bb 100755 --- a/test/fwd.sh +++ b/test/fwd.sh @@ -5,7 +5,7 @@ if [ x"${srcdir}" = x ]; then fi . ${srcdir}/lib.sh -setup +setup -m0 MSG="fwd and allow" @@ -14,19 +14,16 @@ kern.* /dev/null ntp.* @127.0.0.2:${PORT2} ;RFC5424 EOF +reload + cat <${CONFD2}/50-default.conf kern.* /dev/null *.*;kern.none ${LOG2} ;RFC5424 EOF -../src/syslogd -K -a 127.0.0.2:* -b :${PORT2} -d -F -f ${CONF2} -p ${SOCK2} -m1 -C ${CACHE2} -P ${PID2} & +setup2 -m0 -a 127.0.0.2:* -b ":${PORT2}" -kill -HUP `cat ${PID}` -sleep 2 -# Enable debug for second syslogd -cat ${PID2} >> "$DIR/PIDs" -kill -USR1 `cat ${PID2}` ../src/logger -t fwd -p ntp.notice -u ${SOCK} -m "NTP123" ${MSG} sleep 3 diff --git a/test/lib.sh b/test/lib.sh index 2b5b196..80112dd 100755 --- a/test/lib.sh +++ b/test/lib.sh @@ -73,40 +73,81 @@ tenacious() FAIL "Timeed out $*" } -setup() +# shellcheck disable=SC2046,SC2086 +do_setup() { + order=$1 + pidfn=$2 + shift 2 + opts="$*" + ip link set lo up - cat <<-EOF > ${CONF} - # Nothing here yo - include ${CONFD}/*.conf - EOF + print "Starting $order syslogd ..." + ../src/syslogd -dKF ${opts} & - mkdir -p ${CONFD2} - cat <<-EOF > ${CONF2} - # Nothing here yo + sleep 2 + [ -f "${pidfn}" ] || FAIL "Failed starting $order syslogd" + cat "${pidfn}" >> "$DIR/PIDs" + + # Enable debugging ... + kill -USR1 $(cat "${pidfn}") + + sleep 1 +} + +# set up and start primary syslogd +setup() +{ + if [ ! -f "${CONF}" ]; then + cat <<-EOF > "${CONF}" + include ${CONFD}/*.conf + EOF + + cat <<-EOF > "${CONFD}/foo.conf" + # Local log file, avoid sync to disk + *.* -${LOG} + EOF + + cat <<-EOF > "${CONFD}/bar.conf" + # For remote logging + *.* @127.0.0.2 + *.* @127.0.0.2:${PORT2} ;RFC3164 + EOF + fi + + do_setup "primary" "${PID}" "$*" -b ":${PORT}" -f "${CONF}" -p "${SOCK}" \ + -p "${ALTSOCK}" -C "${CACHE}" -P "${PID}" +} + +# set up and start second syslogd, e.g., for remote.sh +setup2() +{ + cat <<-EOF > "${CONF2}" include ${CONFD2}/*.conf EOF - cat <<-EOF > ${CONFD}/foo.conf - # Local log file, avoid sync to disk - *.* -${LOG} - EOF + do_setup "secondary" "${PID2}" "$*" -f "${CONF2}" -p "${SOCK2}" \ + -C "${CACHE2}" -P "${PID2}" +} - cat <<-EOF > ${CONFD}/bar.conf - # For remote logging - *.* @127.0.0.2 - *.* @127.0.0.2:${PORT2} ;RFC3164 - EOF - - ../src/syslogd -K -m1 -b :${PORT} -d -sF -f ${CONF} -p ${SOCK} -p ${ALTSOCK} -C ${CACHE} -P ${PID} & - - sleep 2 - cat ${PID} >> "$DIR/PIDs" - kill -USR1 `cat ${PID}` +do_reload() +{ + # shellcheck disable=SC2046 + kill -HUP $(cat "$1") sleep 1 } +reload() +{ + do_reload "${PID}" +} + +reload2() +{ + do_reload "${PID2}" +} + # Stop all lingering collectors and other tools kill_pids() { @@ -157,6 +198,7 @@ trapit() } # Runs once when including lib.sh -mkdir -p ${CONFD} +mkdir -p "${CONFD}" +mkdir -p "${CONFD2}" touch "$DIR/PIDs" trapit signal INT TERM QUIT EXIT diff --git a/test/mark.sh b/test/mark.sh index 7d17a16..0abfd6f 100755 --- a/test/mark.sh +++ b/test/mark.sh @@ -4,7 +4,9 @@ if [ x"${srcdir}" = x ]; then srcdir=. fi . ${srcdir}/lib.sh -setup + +# Enable MARK messages every minute, full secure mode +setup -m1 -ss check_mark() { diff --git a/test/opts.sh b/test/opts.sh index c9e184a..3c0f851 100755 --- a/test/opts.sh +++ b/test/opts.sh @@ -4,15 +4,11 @@ if [ x"${srcdir}" = x ]; then fi . ${srcdir}/lib.sh -mkdir -p ${CONFD} cat < ${CONF} # Match all log messages, store in RC5424 format and rotate every 10 MiB *.* -${LOG} ;rotate=10M:5,RFC5424 EOF -../src/syslogd -K -m1 -b :${PORT} -d -sF -f ${CONF} -p ${SOCK} -p ${ALTSOCK} >${LOG2} & -echo "$!" > ${PID} -cat ${PID} >> "$DIR/PIDs" +setup -m0 >"${LOG2}" -sleep 2 grep ';RFC5424,rotate=10000000:5' ${LOG2} || FAIL "Failed parsing RFC542 .conf" diff --git a/test/remote.sh b/test/remote.sh index 82e4667..03cdbf8 100755 --- a/test/remote.sh +++ b/test/remote.sh @@ -15,10 +15,8 @@ export MSG="kilroy" cat <<-EOF >${CONFD2}/50-default.conf *.* ${LOG2} EOF -../src/syslogd -K -a 127.0.0.2:* -b :${PORT2} -d -F -f ${CONF2} -p ${SOCK2} -m1 -C ${CACHE2} -P ${PID2} & -sleep 3 -cat ${PID2} >> "$DIR/PIDs" -kill -USR1 `cat ${PID2}` + +setup2 -m0 -a 127.0.0.2:* -b ":${PORT2}" # Start collector in background, note: might need sudo! #tshark -Qni lo -w ${CAP} port ${PORT} &