blob: 75732799d54255acfdc792bccb9361cf02b8b2da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
# $OpenBSD: Makefile,v 1.26 2019/07/12 19:31:29 bluhm Exp $
# The following ports must be installed for the regression tests:
# p5-IO-Socket-INET6 object interface for AF_INET and AF_INET6 domain sockets
# p5-Socket6 Perl defines relating to AF_INET6 sockets
# p5-IO-Socket-SSL perl interface to SSL sockets
# p5-BSD-Resource BSD process resource limit and priority functions
#
# This package enables additional interoperability tests
# rsyslog syslog daemon supporting databases, TCP, SSL, RELP
#
# Check wether all required perl packages are installed. If some
# are missing print a warning and skip the tests, but do not fail.
PERL_REQUIRE != perl -Mstrict -Mwarnings -e ' \
eval { require IO::Socket::INET6 } or print $@; \
eval { require Socket6 } or print $@; \
eval { require IO::Socket::SSL } or print $@; \
eval { require BSD::Resource } or print $@; \
'
.if ! empty (PERL_REQUIRE)
regress:
@echo "${PERL_REQUIRE}"
@echo install these perl packages for additional tests
@echo SKIPPED
.endif
# Automatically generate regress targets from test cases in directory.
PROGS = ttylog
PERLS = Client.pm Proc.pm RSyslogd.pm Server.pm \
Syslogc.pm Syslogd.pm funcs.pl syslogd.pl
ARGS != cd ${.CURDIR} && ls args-*.pl
.if exists (/usr/local/sbin/rsyslogd)
TARGETS ?= ${ARGS}
.else
TARGETS ?= ${ARGS:Nargs-rsyslog*}
.endif
REGRESS_TARGETS = ${TARGETS:S/^/run-/}
LDFLAGS += -lutil
CLEANFILES += *.log *.log.? *.conf ktrace.out stamp-*
CLEANFILES += *.out *.sock *.ktrace *.fstat ttylog *.ph */*.ph
CLEANFILES += *.pem *.req *.key *.crt *.srl empty toobig diskimage
.MAIN: all
REGRESS_SETUP_ONCE += setup
setup:
@echo '\n======== $@ ========'
[ -z "${SUDO}" ] || ${SUDO} true
${SUDO} /etc/rc.d/syslogd stop
REGRESS_CLEANUP += cleanup
cleanup:
@echo '\n======== $@ ========'
-${SUDO} /etc/rc.d/syslogd restart
# Set variables so that make runs with and without obj directory.
# Only do that if necessary to keep visible output short.
.if ${.CURDIR} == ${.OBJDIR}
PERLINC = -I.
PERLPATH =
.else
PERLINC = -I${.CURDIR} -I${.OBJDIR}
PERLPATH = ${.CURDIR}/
.endif
# The arg tests take a perl hash with arguments controlling the
# test parameters. Generally they consist of client, syslogd, server.
.for a in ${ARGS}
run-$a: $a
@echo '\n======== $@ ========'
time SUDO=${SUDO} KTRACE=${KTRACE} SYSLOGD=${SYSLOGD} perl ${PERLINC} ${PERLPATH}syslogd.pl ${PERLPATH}$a
.endfor
# create certificates for TLS
127.0.0.1.crt:
openssl req -batch -new -subj /L=OpenBSD/O=syslogd-regress/OU=syslogd/CN=127.0.0.1/ -nodes -newkey rsa -keyout 127.0.0.1.key -x509 -out $@
${SUDO} rm -f /etc/ssl/private/127.0.0.1:6514.key
${SUDO} rm -f /etc/ssl/127.0.0.1:6514.crt
${SUDO} rm -f /etc/ssl/private/127.0.0.1.key
${SUDO} rm -f /etc/ssl/127.0.0.1.crt
${SUDO} cp 127.0.0.1.key /etc/ssl/private/127.0.0.1.key
${SUDO} cp 127.0.0.1.crt /etc/ssl/127.0.0.1.crt
${SUDO} cp 127.0.0.1.key /etc/ssl/private/::1.key
${SUDO} cp 127.0.0.1.crt /etc/ssl/::1.crt
${SUDO} cp 127.0.0.1.key /etc/ssl/private/localhost.key
${SUDO} cp 127.0.0.1.crt /etc/ssl/localhost.crt
ca.crt fake-ca.crt:
openssl req -batch -new -subj /L=OpenBSD/O=syslogd-regress/OU=ca/CN=root/ -nodes -newkey rsa -keyout ${@:R}.key -x509 -out $@
client.req server.req:
openssl req -batch -new -subj /L=OpenBSD/O=syslogd-regress/OU=${@:R}/CN=localhost/ -nodes -newkey rsa -keyout ${@:R}.key -out $@
client.crt server.crt: ca.crt ${@:R}.req
openssl x509 -CAcreateserial -CAkey ca.key -CA ca.crt -req -in ${@:R}.req -out $@
empty:
true >$@
toobig:
dd if=/dev/zero of=$@ bs=1 count=1 seek=50M
sys/syscall.ph: /usr/include/sys/syscall.h
cd /usr/include && h2ph -h -d ${.OBJDIR} ${@:R:S/$/.h/}
# Create a full file system on vnd to trigger ENOSPC error.
.PHONY: disk mount unconfig
disk: unconfig
dd if=/dev/zero of=diskimage bs=512 count=4k
vnconfig vnd0 diskimage
newfs -b 4096 -f 2048 -m 0 vnd0c
mount: disk
mkdir -p /mnt/regress-syslogd
mount /dev/vnd0c /mnt/regress-syslogd
unconfig:
-umount -f /dev/vnd0c 2>/dev/null || true
-rmdir /mnt/regress-syslogd 2>/dev/null || true
-vnconfig -u vnd0 2>/dev/null || true
stamp-filesystem:
@echo '\n======== $@ ========'
${SUDO} ${.MAKE} -C ${.CURDIR} mount
${SUDO} chmod 1777 /mnt/regress-syslogd
date >$@
REGRESS_CLEANUP += cleanup-filesystem
cleanup-filesystem:
@echo '\n======== $@ ========'
rm -f stamp-filesystem
-${SUDO} umount /mnt/regress-syslogd
-${SUDO} ${.MAKE} -C ${.CURDIR} unconfig
${REGRESS_TARGETS:M*filesystem*}: stamp-filesystem
${REGRESS_TARGETS:M*tls*}: client.crt server.crt 127.0.0.1.crt
${REGRESS_TARGETS:M*multilisten*}: 127.0.0.1.crt
${REGRESS_TARGETS:M*empty*}: empty
${REGRESS_TARGETS:M*toobig*}: toobig
${REGRESS_TARGETS:M*fake*}: fake-ca.crt
${REGRESS_TARGETS:M*sendsyslog*}: sys/syscall.ph
${REGRESS_TARGETS}: ttylog
# make perl syntax check for all args files
.PHONY: syntax libevent
syntax: stamp-syntax
stamp-syntax: ${PERLS} ${ARGS}
.for p in ${PERLS}
@perl -c ${PERLINC} ${PERLPATH}$p
.endfor
.for a in ${ARGS}
@perl -c ${PERLPATH}$a
.endfor
@date >$@
# run the tests with all variants of libevent backend
libevent:
cd ${.CURDIR} && EVENT_NOKQUEUE=1 EVENT_NOPOLL=1 ${MAKE} regress
cd ${.CURDIR} && EVENT_NOKQUEUE=1 EVENT_NOSELECT=1 ${MAKE} regress
cd ${.CURDIR} && EVENT_NOPOLL=1 EVENT_NOSELECT=1 ${MAKE} regress
.include <bsd.regress.mk>
|