Is everything right with my regression test?

2015-01-21 15:28 GMT+01:00, Simon Mages <mages.si...@googlemail.com>:
> btw. here is my regression test for bpf:
>
> Index: regress/sys/net/Makefile
> ===================================================================
> RCS file: /home/cvs/src/regress/sys/net/Makefile,v
> retrieving revision 1.6
> diff -u -p -r1.6 Makefile
> --- regress/sys/net/Makefile  12 Jul 2014 21:41:49 -0000      1.6
> +++ regress/sys/net/Makefile  21 Jan 2015 13:54:05 -0000
> @@ -1,6 +1,6 @@
>  #    $OpenBSD: Makefile,v 1.6 2014/07/12 21:41:49 bluhm Exp $
>
> -SUBDIR +=    pf_divert pf_forward pf_fragment
> +SUBDIR +=    pf_divert pf_forward pf_fragment bpf_features
>
>  .MAIN: regress
>
> Index: regress/sys/net/bpf_features/Makefile
> ===================================================================
> RCS file: regress/sys/net/bpf_features/Makefile
> diff -N regress/sys/net/bpf_features/Makefile
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ regress/sys/net/bpf_features/Makefile     21 Jan 2015 14:21:19 -0000
> @@ -0,0 +1,46 @@
> +.MAIN: all
> +
> +CDIAGFLAGS = -std=c99 -Werror -Wall -Wstrict-prototypes \
> +             -Wmissing-prototypes -Wno-main -Wno-uninitialized \
> +             -Wbad-function-cast -Wcast-align -Wcast-qual \
> +             -Wextra -Wmissing-declarations -Wpointer-arith -Wshadow \
> +             -Wsign-compare -Wuninitialized -Wunused -Wno-unused-parameter \
> +             -Wnested-externs -Wunreachable-code -Winline \
> +             -Wdisabled-optimization -Wconversion -Wfloat-equal -Wswitch \
> +             -Wswitch-default -Wtrigraphs -Wsequence-point -Wimplicit \
> +WARNINGS =   yes
> +depend: bpf_read_blocking bpf_read_timeout bpf_read_async
> bpf_read_timeout_loop
> +
> +bpf_read_blocking: bpf_read_blocking.c
> +     ${CC} ${CFLAGS} -o bpf_read_blocking bpf_read_blocking.c
> +
> +bpf_read_timeout: bpf_read_timeout.c
> +     ${CC} ${CFLAGS} -o bpf_read_timeout bpf_read_timeout.c
> +
> +bpf_read_async: bpf_read_async.c
> +     ${CC} ${CFLAGS} -o bpf_read_async bpf_read_async.c
> +
> +bpf_read_timeout_loop: bpf_read_timeout_loop.c
> +     ${CC} ${CFLAGS} -o bpf_read_timeout_loop bpf_read_timeout_loop.c
> +
> +TARGETS += blocking timeout async timeoutloop
> +
> +run-regress-blocking: bpf_read_blocking
> +     ./bpf_read_blocking
> +
> +run-regress-timeout: bpf_read_timeout
> +     ./bpf_read_timeout
> +
> +run-regress-async: bpf_read_async
> +     @/sbin/ping -c 10 127.0.0.1 > /dev/null 2>&1 &
> +     ./bpf_read_async
> +
> +run-regress-timeoutloop: bpf_read_timeout_loop
> +     ./bpf_read_timeout_loop
> +
> +REGRESS_TARGETS =    ${TARGETS:S/^/run-regress-/}
> +
> +CLEANFILES +=                bpf_read_timeout bpf_read_blocking 
> bpf_read_async \
> +                     bpf_read_timeout_loop
> +
> +.include <bsd.regress.mk>
> Index: regress/sys/net/bpf_features/bpf_read_async.c
> ===================================================================
> RCS file: regress/sys/net/bpf_features/bpf_read_async.c
> diff -N regress/sys/net/bpf_features/bpf_read_async.c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ regress/sys/net/bpf_features/bpf_read_async.c     21 Jan 2015 12:32:01
> -0000
> @@ -0,0 +1,86 @@
> +#include <stdlib.h>
> +#include <stdio.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <signal.h>
> +#include <string.h>
> +#include <errno.h>
> +#include <err.h>
> +
> +#include <sys/types.h>
> +#include <sys/time.h>
> +#include <sys/ioctl.h>
> +#include <sys/socket.h>
> +#include <net/bpf.h>
> +#include <net/ethertypes.h>
> +#include <netinet/in.h>
> +#include <net/if.h>
> +#include <sys/time.h>
> +
> +#define BUFFFER_SIZE 32786
> +u_char buffer[BUFFFER_SIZE];
> +u_int buf_size = BUFFFER_SIZE;
> +
> +struct bpf_program bpf_machine = {
> +     2,
> +     (struct bpf_insn []){
> +             BPF_STMT(BPF_LD+BPF_W+BPF_LEN, 8),
> +             BPF_STMT(BPF_RET+BPF_K, 8),
> +     },
> +};
> +struct ifreq interface;
> +struct sigaction sigact;
> +int fd, out, pid, flag;
> +int async = 1;
> +struct sigaction action;
> +
> +void handler(int);
> +
> +int
> +main(void)
> +{
> +     action.sa_handler = handler;
> +     sigemptyset(&action.sa_mask);
> +     action.sa_flags = 0;
> +     if (sigaction(SIGIO, &action, NULL) < 0)
> +             err(1, "sigaction");
> +
> +     pid = getpid();
> +     if (setpgrp(0, 0) < 0)
> +       err(1, "setpgrp");
> +
> +     sigemptyset(&action.sa_mask);
> +     if (sigprocmask(SIG_SETMASK, &action.sa_mask, NULL) < 0)
> +             err(1, "sigprocmask");
> +
> +     if ((fd = open("/dev/bpf9", O_RDONLY)) < 0)
> +             err(1, "open");
> +
> +     if (ioctl(fd, BIOCSBLEN, &buf_size) < 0)
> +             err(1, "BIOCSBLEN");
> +
> +     strlcpy(interface.ifr_name, "lo0", sizeof(interface.ifr_name));
> +     if(ioctl(fd, BIOCSETIF, &interface) < 0)
> +             err(1, "BIOCSETIF");
> +
> +     if (ioctl(fd, FIOSETOWN, &pid) < 0)
> +             err(1, "FIOSETOWN");
> +     if (ioctl(fd, FIOASYNC, &async) < 0)
> +             err(1, "FIOASYNC");
> +     
> +     if (ioctl(fd, BIOCSETF, &bpf_machine) < 0)
> +             err(1, "BIOCSETF");
> +
> +     out = read(fd, buffer, sizeof(buffer));
> +     if (out < 0)
> +             err(1, "read");
> +
> +     errx(1, "ERROR: %s", "you shouldn't see this message");
> +}
> +
> +void
> +handler(int _signal)
> +{
> +     printf("PASSED\n");
> +     _exit(0);
> +}
> Index: regress/sys/net/bpf_features/bpf_read_blocking.c
> ===================================================================
> RCS file: regress/sys/net/bpf_features/bpf_read_blocking.c
> diff -N regress/sys/net/bpf_features/bpf_read_blocking.c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ regress/sys/net/bpf_features/bpf_read_blocking.c  21 Jan 2015 12:32:21
> -0000
> @@ -0,0 +1,95 @@
> +#include <stdlib.h>
> +#include <stdio.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <signal.h>
> +#include <string.h>
> +#include <errno.h>
> +#include <err.h>
> +
> +#include <sys/types.h>
> +#include <sys/time.h>
> +#include <sys/ioctl.h>
> +#include <sys/socket.h>
> +#include <net/bpf.h>
> +#include <net/ethertypes.h>
> +#include <netinet/in.h>
> +#include <net/if.h>
> +#include <sys/time.h>
> +
> +void handler(int);
> +
> +#define BUFFFER_SIZE 32786
> +u_char buffer[BUFFFER_SIZE];
> +u_int buf_size = BUFFFER_SIZE;
> +
> +struct bpf_program bpf_machine  = {
> +     13,
> +     (struct bpf_insn []){
> +             BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 10),
> +             BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 8),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20),
> +             BPF_JUMP(BPF_JMP+BPF_JSET+BPF_K, 0x1fff, 6, 0),
> +             BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 2, 0),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_IND, 16),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 0, 1),
> +             BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
> +             BPF_STMT(BPF_RET+BPF_K, 0),
> +     },
> +};
> +struct ifreq interface;
> +struct sigaction action;
> +int fd, out;
> +struct itimerval timer = {
> +     {
> +             (time_t)1,
> +             (suseconds_t)0,
> +     },
> +     {
> +             (time_t)5,
> +             (suseconds_t)0,
> +     },
> +};
> +
> +int
> +main(void)
> +{
> +     action.sa_handler = handler;
> +     sigemptyset(&action.sa_mask);
> +     action.sa_flags = 0;
> +     if (sigaction(SIGALRM, &action, NULL) < 0)
> +             err(1, "sigaction");
> +
> +     if (setitimer(0, &timer, NULL) == -1)
> +             err(1, "setitimer");
> +
> +     if ((fd = open("/dev/bpf9", O_RDONLY)) < 0)
> +             err(1, "open");
> +
> +     if (ioctl(fd, BIOCSBLEN, &buf_size) < 0)
> +             err(1, "BIOCSBLEN");
> +
> +     strlcpy(interface.ifr_name, "lo0", sizeof(interface.ifr_name));
> +     if(ioctl(fd, BIOCSETIF, &interface) < 0)
> +             err(1, "BIOCSETIF");
> +
> +     if (ioctl(fd, BIOCSETF, &bpf_machine) < 0)
> +             err(1, "BIOCSETF");
> +
> +     out = read(fd, buffer, sizeof(buffer));
> +     if (out < 0)
> +             err(1, "read");
> +
> +     errx(1, "ERROR: %s", "you shouldn't see this message");
> +}
> +
> +void
> +handler(int _signal)
> +{
> +     printf("PASSED\n");
> +     _exit(0);
> +}
> Index: regress/sys/net/bpf_features/bpf_read_timeout.c
> ===================================================================
> RCS file: regress/sys/net/bpf_features/bpf_read_timeout.c
> diff -N regress/sys/net/bpf_features/bpf_read_timeout.c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ regress/sys/net/bpf_features/bpf_read_timeout.c   21 Jan 2015 12:31:44
> -0000
> @@ -0,0 +1,109 @@
> +#include <stdlib.h>
> +#include <stdio.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <signal.h>
> +#include <string.h>
> +#include <errno.h>
> +#include <err.h>
> +#include <time.h>
> +
> +#include <sys/types.h>
> +#include <sys/time.h>
> +#include <sys/ioctl.h>
> +#include <sys/socket.h>
> +#include <net/bpf.h>
> +#include <net/ethertypes.h>
> +#include <netinet/in.h>
> +#include <net/if.h>
> +
> +#define BUFFFER_SIZE 32786
> +u_char buffer[BUFFFER_SIZE];
> +u_int buf_size = BUFFFER_SIZE;
> +
> +struct bpf_program bpf_machine  = {
> +     13,
> +     (struct bpf_insn []){
> +             BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 10),
> +             BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 8),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20),
> +             BPF_JUMP(BPF_JMP+BPF_JSET+BPF_K, 0x1fff, 6, 0),
> +             BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 2, 0),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_IND, 16),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 0, 1),
> +             BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
> +             BPF_STMT(BPF_RET+BPF_K, 0),
> +     },
> +};
> +struct timeval timeout = {
> +     (time_t)5,
> +     (suseconds_t)0,
> +};
> +struct ifreq interface;
> +struct sigaction action;
> +int fd, out;
> +time_t cur_time;
> +struct itimerval timer = {
> +     {
> +             (time_t)1,
> +             (suseconds_t)0,
> +     },
> +     {
> +             (time_t)10,
> +             (suseconds_t)0,
> +     }
> +};
> +
> +void handler(int);
> +
> +int
> +main(void)
> +{
> +     action.sa_handler = handler;
> +     sigemptyset(&action.sa_mask);
> +     action.sa_flags = 0;
> +     if (sigaction(SIGALRM, &action, NULL) < 0)
> +             err(1, "sigaction");
> +
> +     if (setitimer(0, &timer, NULL) == -1)
> +             err(1, "setitimer");
> +
> +     cur_time = time(NULL);
> +
> +     if ((fd = open("/dev/bpf9", O_RDONLY)) < 0)
> +             err(1, "open");
> +                     
> +     if (ioctl(fd, BIOCSBLEN, &buf_size) < 0)
> +             err(1, "BIOCSBLEN");
> +
> +     strlcpy(interface.ifr_name, "lo0", sizeof(interface.ifr_name));
> +     if(ioctl(fd, BIOCSETIF, &interface) < 0)
> +             err(1, "BIOCSETIF");
> +
> +     if (ioctl(fd, BIOCSRTIMEOUT, &timeout) < 0)
> +             err(1, "BIOCSRTIMEOUT");
> +
> +     if (ioctl(fd, BIOCSETF, &bpf_machine) < 0)
> +             err(1, "BIOCSETF");
> +
> +     out = read(fd, buffer, sizeof(buffer));
> +     if (out < 0)
> +             err(1, "read");
> +
> +     if ((time(NULL) - cur_time) < 5)
> +             errx(1, "ERROR: %s", "you shouldn't see this message");
> +     else {
> +             printf("PASSED\n");
> +             return 0;
> +     }
> +}
> +
> +void
> +handler(int _signal)
> +{
> +     errx(1, "ERROR: %s", "you shouldn't see this message");
> +}
> Index: regress/sys/net/bpf_features/bpf_read_timeout_loop.c
> ===================================================================
> RCS file: regress/sys/net/bpf_features/bpf_read_timeout_loop.c
> diff -N regress/sys/net/bpf_features/bpf_read_timeout_loop.c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ regress/sys/net/bpf_features/bpf_read_timeout_loop.c      21 Jan 2015
> 12:31:16 -0000
> @@ -0,0 +1,112 @@
> +#include <stdlib.h>
> +#include <stdio.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <signal.h>
> +#include <string.h>
> +#include <errno.h>
> +#include <err.h>
> +#include <time.h>
> +
> +#include <sys/types.h>
> +#include <sys/time.h>
> +#include <sys/ioctl.h>
> +#include <sys/socket.h>
> +#include <net/bpf.h>
> +#include <net/ethertypes.h>
> +#include <netinet/in.h>
> +#include <net/if.h>
> +
> +#define BUFFFER_SIZE 32786
> +u_char buffer[BUFFFER_SIZE];
> +u_int buf_size = BUFFFER_SIZE;
> +
> +struct bpf_program bpf_machine  = {
> +     13,
> +     (struct bpf_insn []){
> +             BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 10),
> +             BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 8),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20),
> +             BPF_JUMP(BPF_JMP+BPF_JSET+BPF_K, 0x1fff, 6, 0),
> +             BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 2, 0),
> +             BPF_STMT(BPF_LD+BPF_H+BPF_IND, 16),
> +             BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 0, 1),
> +             BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
> +             BPF_STMT(BPF_RET+BPF_K, 0),
> +     },
> +};
> +struct timeval timeout = {
> +     (time_t)5,
> +     (suseconds_t)0,
> +};
> +struct ifreq interface;
> +struct sigaction action;
> +int fd, out;
> +time_t cur_time;
> +struct itimerval timer = {
> +     {
> +             (time_t)1,
> +             (suseconds_t)0,
> +     },
> +     {
> +             (time_t)10,
> +             (suseconds_t)0,
> +     }
> +};
> +
> +void handler(int);
> +
> +int
> +main(void)
> +{
> +     action.sa_handler = handler;
> +     sigemptyset(&action.sa_mask);
> +     action.sa_flags = 0;
> +     if (sigaction(SIGALRM, &action, NULL) < 0)
> +             err(1, "sigaction");
> +
> +     if ((fd = open("/dev/bpf9", O_RDONLY)) < 0)
> +             err(1, "open");
> +                     
> +     if (ioctl(fd, BIOCSBLEN, &buf_size) < 0)
> +             err(1, "BIOCSBLEN");
> +
> +     strlcpy(interface.ifr_name, "lo0", sizeof(interface.ifr_name));
> +     if(ioctl(fd, BIOCSETIF, &interface) < 0)
> +             err(1, "BIOCSETIF");
> +
> +     if (ioctl(fd, BIOCSRTIMEOUT, &timeout) < 0)
> +             err(1, "BIOCSRTIMEOUT");
> +
> +     if (ioctl(fd, BIOCSETF, &bpf_machine) < 0)
> +             err(1, "BIOCSETF");
> +
> +     int i;
> +     for (i = 0; i < 3; i++ ) {
> +             if (setitimer(0, &timer, NULL) == -1)
> +                     err(1, "setitimer");
> +
> +             cur_time = time(NULL);
> +
> +             out = read(fd, buffer, sizeof(buffer));
> +             if (out < 0)
> +                     err(1, "read");
> +
> +             if ((time(NULL) - cur_time) < 5)
> +                     errx(1, "ERROR: %s",
> +                          "you shouldn't see this message");
> +     }
> +     
> +     printf("PASSED\n");
> +     return 0;
> +}
> +
> +void
> +handler(int _signal)
> +{
> +     errx(1, "ERROR: %s", "you shouldn't see this message");
> +}
>

Reply via email to