summaryrefslogtreecommitdiffstats
path: root/bin/tests/system/Makefile.in
blob: c18b4c53e3917ef70b26a69e9674ddfe449617b6 (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
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.

srcdir =	@srcdir@
VPATH =		@srcdir@
top_srcdir =	@top_srcdir@

VERSION=@BIND9_VERSION@

@BIND9_MAKE_INCLUDES@

SUBDIRS =	dlzexternal dyndb lwresd pipelined rndc rsabigexponent tkey

CINCLUDES =	${ISC_INCLUDES} ${DNS_INCLUDES}

CDEFINES =	@USE_GSSAPI@
CWARNINGS =

DNSLIBS =
ISCLIBS =	../../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@

DNSDEPLIBS =
ISCDEPLIBS =

DEPLIBS =

LIBS =		@LIBS@

OBJS =		feature-test.@O@
SRCS =		feature-test.c

TARGETS =	feature-test@EXEEXT@

@BIND9_MAKE_RULES@

subdirs: ${TARGETS}

feature-test@EXEEXT@: feature-test.@O@
	${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ feature-test.@O@ ${ISCLIBS} ${LIBS}

# Running the scripts below is bypassed when a separate build directory is
# used.

# Define the tests that can be run in parallel.  This should be identical to
# the definition of PARALLELDIRS in conf.sh. Note: longer-running tests
# such as serve-stale and rpzrecurse are scheduled first to get more
# benefit from parallelism.
PARALLEL = rpzrecurse dnssec \
	   acl additional addzone allow-query autosign \
	   builtin cacheclean case catz chain \
	   checkconf checknames checkzone \
	   @CHECKDS@ @COVERAGE@ @KEYMGR@ \
	   cookie database digdelv dlv dlz dlzexternal \
	   dns64 @DNSTAP@ dscp dsdigest dyndb \
	   ednscompliance emptyzones \
	   fetchlimit filter-aaaa formerr forward \
	   geoip glue idna inline integrity ixfr \
	   legacy limits logfileconfig \
	   masterfile masterformat metadata mkeys \
	   names notify nslookup nsupdate nzd2nzf \
	   pending pipelined \
	   reclimit redirect resolver rndc rootkeysentinel rpz \
	   rrchecker rrl rrsetorder rsabigexponent runtime \
	   sfcache smartsign sortlist \
	   spf staticstub statistics statschannel stub \
	   tcp tsig tsiggss \
	   unknown upforwd verify views wildcard \
	   xfer xferquota zero zonechecks

# Produce intermediate makefile that assigns unique port numbers to each
# parallel test.  The start port number of 5,000 is arbitrary - it must just
# be greater than the highest privileged port, 1024.
#
# Test names need to be sanitized because Solaris make does not like
# underscores in target names and requires explicit differentiation
# between a target name and a directory name (.PHONY is not supported).

.PHONY: parallel.mk

parallel.mk:
	@PARALLEL_SANITIZED=`echo $(PARALLEL) | sed "s|\([^ ][^ ]*\)|test-\1|g;" | tr _ -` ; \
	echo ".PHONY: $$PARALLEL_SANITIZED" > $@ ; \
	echo "" >> $@ ; \
	echo "check_interfaces:" >> $@ ; \
	echo "	@${PERL} testsock.pl > /dev/null 2>&1 || { \\" >> $@ ; \
	echo "		echo \"I:NOTE: System tests were skipped because they require that the\"; \\" >> $@ ; \
	echo "		echo \"I:      IP addresses 10.53.0.1 through 10.53.0.8 be configured\"; \\" >> $@ ; \
	echo "		echo \"I:      as alias addresses on the loopback interface.  Please run\"; \\" >> $@ ; \
	echo "		echo \"I:      \"bin/tests/system/ifconfig.sh up\" as root to configure them.\"; \\" >> $@ ; \
	echo "		exit 1; \\" >> $@ ; \
	echo "	}" >> $@ ; \
	echo "" >> $@ ; \
	echo "test check: $$PARALLEL_SANITIZED" >> $@ ; \
	port=$${STARTPORT:-5000} ; \
	for directory in $(PARALLEL) ; do \
		echo "" >> $@ ; \
		echo "test-`echo $$directory | tr _ -`: check_interfaces" >> $@ ; \
		echo "	@$(SHELL) ./run.sh -r -p $$port $$directory 2>&1 | tee $$directory/test.output" >> $@ ; \
		port=`expr $$port + 100` ; \
	done

# Targets to run the tests.

test: parallel.mk subdirs
	@$(MAKE) -f parallel.mk check
	@$(SHELL) ./runsequential.sh -r
	@$(SHELL) ./testsummary.sh

check: test

# Other targets:
#
# testclean - delete files generated by running tests.
# clean     - testclean + also delete files built for the tests by "make".
# distclean - clean + also delete test-related files generated by "configure".

testclean clean distclean::
	if test -f ./cleanall.sh; then $(SHELL) ./cleanall.sh; fi
	rm -f systests.output
	rm -f random.data
	rm -f parallel.mk

clean distclean::
	rm -f ${TARGETS}
	rm -f ${OBJS}

distclean::
	rm -f conf.sh

installdirs:

install::

uninstall::