diff options
author | jmmv <jmmv@FreeBSD.org> | 2014-03-16 04:09:22 +0000 |
---|---|---|
committer | jmmv <jmmv@FreeBSD.org> | 2014-03-16 04:09:22 +0000 |
commit | b2e51e38a88412c17ce1160c247a6d673c0b2147 (patch) | |
tree | 22c8956efd4de8b6e41a15566111321ba8fdfde0 /usr.sbin/newsyslog | |
parent | a8cf290e9bcfb637ddde7dcc7345006c194c7ec8 (diff) | |
download | FreeBSD-src-b2e51e38a88412c17ce1160c247a6d673c0b2147.zip FreeBSD-src-b2e51e38a88412c17ce1160c247a6d673c0b2147.tar.gz |
Migrate tools/regression/{usr.bin/lastcomm,usr.sbin}/ to the new tests layout.
This change was originally going to only migrate the usr.sbin tests but, as
it turns out, the usr.sbin/sa/ tests require files from usr.bin/lastcomm/
so it's better to just also migrate the latter at the same time. The other
usr.bin tests will be moved separately.
To make these tests work within the test suite, some of them have required
changes to prevent modifying the source directory and instead just rely on
the current directory for file manipulation.
Diffstat (limited to 'usr.sbin/newsyslog')
-rw-r--r-- | usr.sbin/newsyslog/Makefile | 6 | ||||
-rw-r--r-- | usr.sbin/newsyslog/tests/Makefile | 7 | ||||
-rw-r--r-- | usr.sbin/newsyslog/tests/legacy_test.sh | 444 |
3 files changed, 457 insertions, 0 deletions
diff --git a/usr.sbin/newsyslog/Makefile b/usr.sbin/newsyslog/Makefile index ebc297b..4e3ae55 100644 --- a/usr.sbin/newsyslog/Makefile +++ b/usr.sbin/newsyslog/Makefile @@ -1,7 +1,13 @@ # $FreeBSD$ +.include <bsd.own.mk> + PROG= newsyslog MAN= newsyslog.8 newsyslog.conf.5 SRCS= newsyslog.c ptimes.c +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include <bsd.prog.mk> diff --git a/usr.sbin/newsyslog/tests/Makefile b/usr.sbin/newsyslog/tests/Makefile new file mode 100644 index 0000000..f8ad273 --- /dev/null +++ b/usr.sbin/newsyslog/tests/Makefile @@ -0,0 +1,7 @@ +# $FreeBSD$ + +TESTSDIR= ${TESTSBASE}/usr.sbin/newsyslog + +TAP_TESTS_SH= legacy_test + +.include <bsd.test.mk> diff --git a/usr.sbin/newsyslog/tests/legacy_test.sh b/usr.sbin/newsyslog/tests/legacy_test.sh new file mode 100644 index 0000000..ba10f2c --- /dev/null +++ b/usr.sbin/newsyslog/tests/legacy_test.sh @@ -0,0 +1,444 @@ +#!/bin/sh + +# $FreeBSD$ + +COUNT=0 +TMPDIR=$(pwd)/work +if [ $? -ne 0 ]; then + echo "$0: Can't create temp dir, exiting..." + exit 1 +fi + +# Begin an individual test +begin() +{ + COUNT=`expr $COUNT + 1` + OK=1 + NAME="$1" +} + +# End an individual test +end() +{ + if [ $OK = 1 ] + then + printf 'ok ' + else + printf 'not ok ' + fi + echo "$COUNT - $NAME" +} + +# Make a file that can later be verified +mkf() +{ + CN=`basename $1` + echo "$CN-$CN" >$1 +} + +# Verify that the file specified is correct +ckf() +{ + if [ -f $2 ] && echo "$1-$1" | diff - $2 >/dev/null + then + ok + else + notok + fi +} + +# Check that a file exists +ckfe() +{ + if [ -f $1 ] + then + ok + else + notok + fi +} + +# Verify that the specified file does not exist +# (is not there) +cknt() +{ + if [ -r $1 ] + then + notok + else + ok + fi +} + +# Check if a file is there, depending of if it's supposed to or not - +# basically how many log files we are supposed to keep vs. how many we +# actually keep. +ckntfe() +{ + curcnt=$1 + keepcnt=$2 + f=$3 + + if [ $curcnt -le $keepcnt ] + then + #echo Assuming file there + ckfe $f + else + #echo Assuming file NOT there + cknt $f + fi +} + + + +# A part of a test succeeds +ok() +{ + : +} + +# A part of a test fails +notok() +{ + OK=0 +} + +# Verify that the exit code passed is for unsuccessful termination +ckfail() +{ + if [ $1 -gt 0 ] + then + ok + else + notok + fi +} + +# Verify that the exit code passed is for successful termination +ckok() +{ + if [ $1 -eq 0 ] + then + ok + else + notok + fi +} + +# Check that there are X files which match expr +chkfcnt() +{ + cnt=$1; shift + if [ $cnt -eq `echo "$@" | wc -w` ] + then + ok + else + notok + fi +} + +# Check that two strings are alike +ckstr() +{ + if [ "$1" = "$2" ] + then + ok + else + notok + fi +} + +tmpdir_create() +{ + mkdir -p ${TMPDIR}/log ${TMPDIR}/alog + cd ${TMPDIR}/log +} + +tmpdir_clean() +{ + cd ${TMPDIR} + rm -rf "${TMPDIR}/log" "${TMPDIR}/alog" newsyslog.conf +} + +run_newsyslog() +{ + + newsyslog -f ../newsyslog.conf -F -r "$@" +} + +tests_normal_rotate() { + ext="$1" + dir="$2" + + if [ -n "$dir" ]; then + newsyslog_args=" -a ${dir}" + name_postfix="${ext} archive dir" + else + newsyslog_args="" + name_postfix="${ext}" + fi + + tmpdir_create + + begin "create file ${name_postfix}" -newdir + run_newsyslog -C + ckfe $LOGFNAME + cknt ${dir}${LOGFNAME}.0${ext} + end + + begin "rotate normal 1 ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckfe ${dir}${LOGFNAME}.0${ext} + cknt ${dir}${LOGFNAME}.1${ext} + end + + begin "rotate normal 2 ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckfe ${dir}${LOGFNAME}.0${ext} + ckfe ${dir}${LOGFNAME}.1${ext} + cknt ${dir}${LOGFNAME}.2${ext} + end + + begin "rotate normal 3 ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckfe ${dir}${LOGFNAME}.0${ext} + ckfe ${dir}${LOGFNAME}.1${ext} + ckfe ${dir}${LOGFNAME}.2${ext} + cknt ${dir}${LOGFNAME}.3${ext} + end + + begin "rotate normal 4 ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckfe ${dir}${LOGFNAME}.0${ext} + ckfe ${dir}${LOGFNAME}.1${ext} + ckfe ${dir}${LOGFNAME}.2${ext} + cknt ${dir}${LOGFNAME}.4${ext} + end + + begin "rotate normal 5 ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckfe ${dir}${LOGFNAME}.0${ext} + ckfe ${dir}${LOGFNAME}.1${ext} + ckfe ${dir}${LOGFNAME}.2${ext} + cknt ${dir}${LOGFNAME}.4${ext} + end + + # Wait a bit so we can see if the noaction test rotates files + sleep 1.1 + + begin "noaction ${name_postfix}" + ofiles=`ls -Tl ${dir}${LOGFNAME}.*${ext} | tr -d '\n'` + run_newsyslog ${newsyslog_args} -n >/dev/null + ckfe ${LOGFNAME} + ckstr "$ofiles" "`ls -lT ${dir}${LOGFNAME}.*${ext} | tr -d '\n'`" + end + + tmpdir_clean +} + +tests_normal_rotate_keepn() { + cnt="$1" + ext="$2" + dir="$3" + + if [ -n "$dir" ]; then + newsyslog_args=" -a ${dir}" + name_postfix="${ext} archive dir" + else + newsyslog_args="" + name_postfix="${ext}" + fi + + tmpdir_create + + begin "create file ${name_postfix}" -newdir + run_newsyslog -C + ckfe $LOGFNAME + cknt ${dir}${LOGFNAME}.0${ext} + end + + begin "rotate normal 1 cnt=$cnt ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckntfe 1 $cnt ${dir}${LOGFNAME}.0${ext} + cknt ${dir}${LOGFNAME}.1${ext} + end + + begin "rotate normal 2 cnt=$cnt ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckntfe 1 $cnt ${dir}${LOGFNAME}.0${ext} + ckntfe 2 $cnt ${dir}${LOGFNAME}.1${ext} + cknt ${dir}${LOGFNAME}.2${ext} + end + + begin "rotate normal 3 cnt=$cnt ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckntfe 1 $cnt ${dir}${LOGFNAME}.0${ext} + ckntfe 2 $cnt ${dir}${LOGFNAME}.1${ext} + ckntfe 3 $cnt ${dir}${LOGFNAME}.2${ext} + cknt ${dir}${LOGFNAME}.3${ext} + end + + begin "rotate normal 3 cnt=$cnt ${name_postfix}" + run_newsyslog $newsyslog_args + ckfe ${LOGFNAME} + ckntfe 1 $cnt ${dir}${LOGFNAME}.0${ext} + ckntfe 2 $cnt ${dir}${LOGFNAME}.1${ext} + ckntfe 3 $cnt ${dir}${LOGFNAME}.2${ext} + ckntfe 4 $cnt ${dir}${LOGFNAME}.3${ext} + cknt ${dir}${LOGFNAME}.4${ext} + end + + # Wait a bit so we can see if the noaction test rotates files + sleep 1.1 + + begin "noaction ${name_postfix}" + osum=`md5 ${dir}${LOGFNAME} | tr -d '\n'` + run_newsyslog ${newsyslog_args} -n >/dev/null + ckfe ${LOGFNAME} + ckstr "$osum" "`md5 ${dir}${LOGFNAME} | tr -d '\n'`" + end + + tmpdir_clean +} + +tests_time_rotate() { + ext="$1" + dir="$2" + + if [ -n "$dir" ]; then + newsyslog_args="-t DEFAULT -a ${dir}" + name_postfix="${ext} archive dir" + else + newsyslog_args="-t DEFAULT" + name_postfix="${ext}" + fi + + tmpdir_create + + begin "create file ${name_postfix}" -newdir + run_newsyslog -C ${newsyslog_args} + ckfe ${LOGFNAME} + end + + begin "rotate time 1 ${name_postfix}" + run_newsyslog ${newsyslog_args} + ckfe ${LOGFNAME} + chkfcnt 1 ${dir}${LOGFNAME}.*${ext} + end + + sleep 1.1 + + begin "rotate time 2 ${name_postfix}" + run_newsyslog ${newsyslog_args} + ckfe ${LOGFNAME} + chkfcnt 2 ${dir}${LOGFNAME}.*${ext} + end + + sleep 1.1 + + begin "rotate time 3 ${name_postfix}" + run_newsyslog ${newsyslog_args} + ckfe ${LOGFNAME} + chkfcnt 3 ${dir}${LOGFNAME}.*${ext} + end + + sleep 1.1 + + begin "rotate time 4 ${name_postfix}" + run_newsyslog ${newsyslog_args} + ckfe ${LOGFNAME} + chkfcnt 3 ${dir}${LOGFNAME}.*${ext} + end + + begin "noaction ${name_postfix}" + ofiles=`ls -1 ${dir}${LOGFNAME}.*${ext} | tr -d '\n'` + run_newsyslog ${newsyslog_args} -n >/dev/null + ckfe ${LOGFNAME} + ckstr "$ofiles" "`ls -1 ${dir}${LOGFNAME}.*${ext} | tr -d '\n'`" + end + + tmpdir_clean +} + +echo 1..126 +mkdir -p ${TMPDIR} +cd ${TMPDIR} + +LOGFNAME=foo.log +LOGFPATH=${TMPDIR}/log/${LOGFNAME} + +# Normal, no archive dir, keep X files +echo "$LOGFPATH 640 0 * @T00 NC" > newsyslog.conf +tests_normal_rotate_keepn 0 + +echo "$LOGFPATH 640 1 * @T00 NC" > newsyslog.conf +tests_normal_rotate_keepn 1 + +echo "$LOGFPATH 640 2 * @T00 NC" > newsyslog.conf +tests_normal_rotate_keepn 2 + +echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf +tests_normal_rotate_keepn 3 + +# Normal, no archive dir, keep X files, gz +echo "$LOGFPATH 640 0 * @T00 NCZ" > newsyslog.conf +tests_normal_rotate_keepn 0 ".gz" + +echo "$LOGFPATH 640 1 * @T00 NCZ" > newsyslog.conf +tests_normal_rotate_keepn 1 ".gz" + +echo "$LOGFPATH 640 2 * @T00 NCZ" > newsyslog.conf +tests_normal_rotate_keepn 2 ".gz" + +echo "$LOGFPATH 640 3 * @T00 NCZ" > newsyslog.conf +tests_normal_rotate_keepn 3 ".gz" + +# Normal, no archive dir +echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf +tests_normal_rotate + +echo "$LOGFPATH 640 3 * @T00 NCZ" > newsyslog.conf +tests_normal_rotate ".gz" + +echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf +tests_normal_rotate ".bz2" + +# Normal, archive dir +echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf +tests_normal_rotate "" "${TMPDIR}/alog/" + +echo "$LOGFPATH 640 3 * @T00 NCZ" > newsyslog.conf +tests_normal_rotate ".gz" "${TMPDIR}/alog/" + +echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf +tests_normal_rotate ".bz2" "${TMPDIR}/alog/" + +# Time based, no archive dir +echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf +tests_time_rotate + +echo "$LOGFPATH 640 3 * @T00 NCZ" > newsyslog.conf +tests_time_rotate "gz" "" + +echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf +tests_time_rotate "bz2" "" + +# Time based, archive dir +echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf +tests_time_rotate "" "${TMPDIR}/alog/" + +echo "$LOGFPATH 640 3 * @T00 NCZ" > newsyslog.conf +tests_time_rotate "gz" "${TMPDIR}/alog/" + +echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf +tests_time_rotate "bz2" "${TMPDIR}/alog/" + +rm -rf "${TMPDIR}" |