diff options
-rw-r--r-- | tools/regression/filemon/Makefile | 85 | ||||
-rw-r--r-- | tools/regression/filemon/filemontest.c | 84 | ||||
-rwxr-xr-x | tools/regression/filemon/test_script.sh | 44 | ||||
-rw-r--r-- | tools/regression/filemon/timed-forkb.c | 177 |
4 files changed, 0 insertions, 390 deletions
diff --git a/tools/regression/filemon/Makefile b/tools/regression/filemon/Makefile deleted file mode 100644 index 3911d33..0000000 --- a/tools/regression/filemon/Makefile +++ /dev/null @@ -1,85 +0,0 @@ -# $FreeBSD$ - -.if ${MACHINE_ARCH} == "amd64" -BI_BITS= -.endif - -_BINS= \ - filemontest \ - timed-forkb \ - sizeof_long - -BINS= ${_BINS} -.if defined(BI_BITS) -BINS+= ${_BINS:C/$/32/g} -.endif - -bins: ${BINS} -all: bins - -MAN= - -WARNS?= 6 -CFLAGS+= -I${.CURDIR}/../../../sys - -# We don't want to genreate CTF files. Force that here. -MK_CTF=no - -CLEANFILES+= ${BINS} - - -.for f32 in ${BINS} -${f32}32: ${f32}.c - ${CC} -m32 -DBIT=\"32\" -o ${.TARGET} ${CFLAGS} ${.ALLSRC} -.endfor - -tests: - kldstat | grep filemon - @echo "" - ${MAKE} test01 - ${MAKE} test02 -.if defined(BI_BITS) - ${MAKE} test32 -.endif - @echo "filemon(4) tests passed." - -# Cannot use .OBJDIR -- 'filemontest' expects 'test_script.sh' in . -test01: ${BINS:Mfilemontest*} ${BINS:Msizeof_long*} clean-test -.for BIN in ${BINS:Mfilemontest} - cd ${.CURDIR} ; \ - for A in 1 2 3 4 5 6 7 8 9 0; do \ - for B in 1 2 3 4 5 6 7 8 9 0; do \ - for C in 1 2 3 4 5 6 7 8 9 0; do \ - test -x ${BIN} && ${.OBJDIR}/${BIN} ;\ - done ;\ - done ;\ - done - @cd ${.CURDIR} ; set +e ; egrep '(Start|Stop) .*\.' filemon_log.* | \ - grep -q -v '\.[0-9][0-9][0-9][0-9][0-9][0-9]$$' || printf "Time stamp format OK\n\n" -.endfor - @cd ${.CURDIR} ; set +e ; for F in filemon_log.* ; do \ - tail -1 $$F | grep -q '# Bye bye' || echo "$$F missing filemon bye-bye" ; \ - NL=`wc -l $$F | awk '{print $$1}'` ; \ - if [ "$${NL}" != 97 ]; then echo "$$F BAD, contains $${NL} lines" ; exit 1 ; fi ; done - -test02: ${BINS:Mtimed-forkb*} - @echo "Without filemon(4) active:" - ./timed-forkb - @echo "With filemon(4) active:" - script -f typescript-timed-forkb ./timed-forkb - ls -l typescript-timed-forkb.filemon - -test32: ${BINS:M*32*} - script -f typescript.${.TARGET} ./sizeof_long32 >/dev/null - @tail -1 typescript.test32.filemon | grep -q '# Bye bye' || (echo '32-bit comapt filemon Missing "bye-bye"' ; exit 1) - @egrep -q '^X [0-9]+ 0$$' typescript.test32.filemon || (echo "32-bit binary exit ERROR" ; exit 1) - @printf "filemon(4) 32bit FreeBSD support passed.\n\n" - -CLEANFILES+= typescript-timed-forkb typescript-timed-forkb.filemon - -clean-test: - cd ${.CURDIR} ; rm -f filemon_log*.* - -clean-tests: clean-test - -.include <bsd.prog.mk> diff --git a/tools/regression/filemon/filemontest.c b/tools/regression/filemon/filemontest.c deleted file mode 100644 index 03b53e2..0000000 --- a/tools/regression/filemon/filemontest.c +++ /dev/null @@ -1,84 +0,0 @@ -/*- - * Copyright (c) 2009-2011, Juniper Networks, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY JUNIPER NETWORKS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL JUNIPER NETWORKS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/types.h> -__FBSDID("$FreeBSD$"); - -#include <sys/wait.h> -#include <sys/ioctl.h> - -#include <dev/filemon/filemon.h> - -#include <stdio.h> -#include <unistd.h> -#include <fcntl.h> -#include <stdlib.h> -#include <err.h> - -/* - * This simple test of filemon expects a test script called - * "test_script.sh" in the cwd. - */ - -#ifndef BIT -#define BIT "" -#endif - -int -main(void) { - char log_name[] = "filemon_log" BIT ".XXXXXX"; - pid_t child; - int fm_fd, fm_log; - - if ((fm_fd = open("/dev/filemon", O_RDWR)) == -1) - err(1, "open(\"/dev/filemon\", O_RDWR)"); - if ((fm_log = mkstemp(log_name)) == -1) - err(1, "mkstemp(%s)", log_name); - - if (ioctl(fm_fd, FILEMON_SET_FD, &fm_log) == -1) - err(1, "Cannot set filemon log file descriptor"); - - /* Set up these two fd's to close on exec. */ - (void)fcntl(fm_fd, F_SETFD, FD_CLOEXEC); - (void)fcntl(fm_log, F_SETFD, FD_CLOEXEC); - - switch (child = fork()) { - case 0: - child = getpid(); - if (ioctl(fm_fd, FILEMON_SET_PID, &child) == -1) - err(1, "Cannot set filemon PID to %d", child); - system("env BIT=" BIT " ./test_script.sh"); - break; - case -1: - err(1, "Cannot fork"); - default: - wait(&child); - close(fm_fd); -// printf("Results in %s\n", log_name); - break; - } - return 0; -} diff --git a/tools/regression/filemon/test_script.sh b/tools/regression/filemon/test_script.sh deleted file mode 100755 index b69c238..0000000 --- a/tools/regression/filemon/test_script.sh +++ /dev/null @@ -1,44 +0,0 @@ -#! /bin/sh -# -# Copyright (c) 2011, Juniper Networks, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY JUNIPER NETWORKS AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL JUNIPER NETWORKS OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ - -trap 'rm -f $f1 $f2; exit 1' 1 2 3 13 15 -echo shazbot > /dev/null -f1=`mktemp /tmp/filemon_test.XXXXXX` -f2=`mktemp /tmp/ed-script.XXXXXX` -> $f1 -echo "One line to rule them all" >> $f1 -wc -l $f1 > /dev/null -# ed(1)'s /tmp/ed.* buffer file will be opened RW -echo ',s/$/./g' > $f2 -echo 'wq' >>$f2 -ed -s $f1 < $f2 -#echo ",s/$/./\ -#w" | ed -s $f1 -#rm $f1 $f2 -uptime > /dev/null -sizeof_long${BIT} > /dev/null diff --git a/tools/regression/filemon/timed-forkb.c b/tools/regression/filemon/timed-forkb.c deleted file mode 100644 index b7a0221..0000000 --- a/tools/regression/filemon/timed-forkb.c +++ /dev/null @@ -1,177 +0,0 @@ -/*- - * Copyright (c) 2012 David O'Brien - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include <sys/types.h> -#include <sys/resource.h> -#include <sys/sysctl.h> -#include <sys/wait.h> - -#include <unistd.h> -#include <stdlib.h> -#include <signal.h> -#include <errno.h> -#include <stdio.h> -#include <string.h> -#include <time.h> -#include <err.h> -#include <assert.h> - -#ifndef SLEEP -#define SLEEP 20 /* seconds */ -#endif - -static int verbose; - -static void -usage(void) -{ - fprintf(stderr, "usage: %s\n", getprogname()); - fprintf(stderr, "\t\t-n : length of fork(2) chain\n"); - fprintf(stderr, "\t\t-t : limit run-time seconds\n"); - exit(1); - /* NOTREACHED */ -} - -void term(int); -void -term(int signum) -{ - - if (getpid() == getpgrp() || verbose) { - fprintf(stderr, - "pid %d pgroup %d (ppid %d): Received SIGTERM(%d), exiting...\n", - getpid(), getpgrp(), getppid(), signum); - } - exit(1); -} - -void angel_of_mercy(int); -void -angel_of_mercy(int sig __unused) -{ - - signal(SIGALRM, SIG_IGN); /* ignore this signal */ - printf("Master process: alarmed waking up\n"); - killpg(0, SIGTERM); - return; -} - -int bombing_run(unsigned, int); -int -bombing_run(unsigned chainlen, int stime) -{ - struct rusage ru; - pid_t pid, cpid; - int status; - - if (chainlen) { - switch (pid = fork()) { - case -1: - errx(1, "%s: can't fork", __func__); - - case 0: - /* This is the code the child runs. */ - bombing_run(--chainlen, stime); - break; - - default: - /* This is the code the parent runs. */ - if (getpid() == getpgrp()) { - signal(SIGALRM, angel_of_mercy); - alarm(stime); // time for bombing run... - cpid = wait4(pid, &status, 0, &ru); - alarm(0); - printf( - "Cleanly shutting down - pid %d pgroup %d (ppid %d)\n", - getpid(), getpgrp(), getppid()); - } else { - cpid = wait4(pid, &status, 0, &ru); - } - } - } - - return 0; -} - -int -main(int argc, char *argv[]) -{ - time_t start /*,tvec*/; - char *endptr, *ctm; - size_t len; - int nflag, tflag; - int ch, k, maxprocperuid; - - (void)signal(SIGTERM, term); - - nflag = 0; - tflag = SLEEP; - - start = time(NULL); - ctm = ctime(&start); - ctm[24] = '\0'; // see: man 3 ctime - fprintf(stderr, "*** fork() generation started on \"%s\" ***\n", ctm); - - while ((ch = getopt(argc, argv, "n:t:v")) != -1) - switch (ch) { - case 'n': - nflag = strtol(optarg, &endptr, 10); - if (nflag <= 0 || *endptr != '\0') - errx(1, "illegal number, -n argument -- %s", - optarg); - break; - case 't': - tflag = strtol(optarg, &endptr, 10); - if (tflag <= 0 || *endptr != '\0') - errx(1, "illegal number, -t argument -- %s", - optarg); - break; - case 'v': - ++verbose; - break; - default: - usage(); - } - argv += optind; - - if (!nflag) { - len = sizeof(maxprocperuid); - k = sysctlbyname("kern.maxprocperuid", &maxprocperuid, &len, - NULL, 0); - assert(k != ENOMEM); - /* Try to allow a shell to still be started. */ - nflag = maxprocperuid - 10; - } - - // Ensure a unique process group to make killing all children easier. - setpgrp(0,0); - printf(" pid %d pgroup %d (ppid %d), %d fork chain over %d sec\n", - getpid(), getpgrp(), getppid(), nflag - 1, tflag); - - return bombing_run(nflag, tflag); -} |