# 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::