]>
Commit | Line | Data |
---|---|---|
bf6096f5 PL |
1 | #!/bin/bash |
2 | ||
3 | ## "upstream" travis functions | |
4 | ANSI_RED="\033[31;1m" | |
5 | ANSI_GREEN="\033[32;1m" | |
6 | ANSI_RESET="\033[0m" | |
7 | ANSI_CLEAR="\033[0K" | |
8 | ||
9 | TRAVIS_TEST_RESULT= | |
10 | TRAVIS_CMD= | |
11 | ||
12 | function travis_cmd() { | |
13 | local assert output display retry timing cmd result | |
14 | ||
15 | cmd=$1 | |
16 | TRAVIS_CMD=$cmd | |
17 | shift | |
18 | ||
19 | while true; do | |
20 | case "$1" in | |
21 | --assert) assert=true; shift ;; | |
22 | --echo) output=true; shift ;; | |
23 | --display) display=$2; shift 2;; | |
24 | --retry) retry=true; shift ;; | |
25 | --timing) timing=true; shift ;; | |
26 | *) break ;; | |
27 | esac | |
28 | done | |
29 | ||
30 | if [[ -n "$timing" ]]; then | |
31 | travis_time_start | |
32 | fi | |
33 | ||
34 | if [[ -n "$output" ]]; then | |
35 | echo "\$ ${display:-$cmd}" | |
36 | fi | |
37 | ||
38 | if [[ -n "$retry" ]]; then | |
39 | travis_retry eval "$cmd" | |
40 | else | |
41 | eval "$cmd" | |
42 | fi | |
43 | result=$? | |
44 | ||
45 | if [[ -n "$timing" ]]; then | |
46 | travis_time_finish | |
47 | fi | |
48 | ||
49 | if [[ -n "$assert" ]]; then | |
50 | travis_assert $result | |
51 | fi | |
52 | ||
53 | return $result | |
54 | } | |
55 | ||
56 | travis_time_start() { | |
57 | travis_timer_id=$(printf %08x $(( RANDOM * RANDOM ))) | |
58 | travis_start_time=$(travis_nanoseconds) | |
59 | echo -en "travis_time:start:$travis_timer_id\r${ANSI_CLEAR}" | |
60 | } | |
61 | ||
62 | travis_time_finish() { | |
63 | local result=$? | |
64 | travis_end_time=$(travis_nanoseconds) | |
65 | local duration=$(($travis_end_time-$travis_start_time)) | |
66 | echo -en "\ntravis_time:end:$travis_timer_id:start=$travis_start_time,finish=$travis_end_time,duration=$duration\r${ANSI_CLEAR}" | |
67 | return $result | |
68 | } | |
69 | ||
70 | function travis_nanoseconds() { | |
71 | local cmd="date" | |
72 | local format="+%s%N" | |
73 | local os=$(uname) | |
74 | ||
75 | if hash gdate > /dev/null 2>&1; then | |
76 | cmd="gdate" # use gdate if available | |
77 | elif [[ "$os" = Darwin ]]; then | |
78 | format="+%s000000000" # fallback to second precision on darwin (does not support %N) | |
79 | fi | |
80 | ||
81 | $cmd -u $format | |
82 | } | |
83 | ||
84 | travis_assert() { | |
85 | local result=${1:-$?} | |
86 | if [ $result -ne 0 ]; then | |
87 | echo -e "\n${ANSI_RED}The command \"$TRAVIS_CMD\" failed and exited with $result during $TRAVIS_STAGE.${ANSI_RESET}\n\nYour build has been stopped." | |
88 | travis_terminate 2 | |
89 | fi | |
90 | } | |
91 | ||
92 | travis_result() { | |
93 | local result=$1 | |
94 | export TRAVIS_TEST_RESULT=$(( ${TRAVIS_TEST_RESULT:-0} | $(($result != 0)) )) | |
95 | ||
96 | if [ $result -eq 0 ]; then | |
97 | echo -e "\n${ANSI_GREEN}The command \"$TRAVIS_CMD\" exited with $result.${ANSI_RESET}" | |
98 | else | |
99 | echo -e "\n${ANSI_RED}The command \"$TRAVIS_CMD\" exited with $result.${ANSI_RESET}" | |
100 | fi | |
101 | } | |
102 | ||
103 | travis_terminate() { | |
104 | pkill -9 -P $$ &> /dev/null || true | |
105 | exit $1 | |
106 | } | |
107 | ||
108 | travis_wait() { | |
109 | local timeout=$1 | |
110 | ||
111 | if [[ $timeout =~ ^[0-9]+$ ]]; then | |
112 | # looks like an integer, so we assume it's a timeout | |
113 | shift | |
114 | else | |
115 | # default value | |
116 | timeout=20 | |
117 | fi | |
118 | ||
119 | local cmd="$@" | |
120 | local log_file=travis_wait_$$.log | |
121 | ||
122 | $cmd &>$log_file & | |
123 | local cmd_pid=$! | |
124 | ||
125 | travis_jigger $! $timeout $cmd & | |
126 | local jigger_pid=$! | |
127 | local result | |
128 | ||
129 | { | |
130 | wait $cmd_pid 2>/dev/null | |
131 | result=$? | |
132 | ps -p$jigger_pid &>/dev/null && kill $jigger_pid | |
133 | } | |
134 | ||
135 | if [ $result -eq 0 ]; then | |
136 | echo -e "\n${ANSI_GREEN}The command $cmd exited with $result.${ANSI_RESET}" | |
137 | else | |
138 | echo -e "\n${ANSI_RED}The command $cmd exited with $result.${ANSI_RESET}" | |
139 | fi | |
140 | ||
141 | echo -e "\n${ANSI_GREEN}Log:${ANSI_RESET}\n" | |
142 | cat $log_file | |
143 | ||
144 | return $result | |
145 | } | |
146 | ||
147 | travis_jigger() { | |
148 | # helper method for travis_wait() | |
149 | local cmd_pid=$1 | |
150 | shift | |
151 | local timeout=$1 # in minutes | |
152 | shift | |
153 | local count=0 | |
154 | ||
155 | # clear the line | |
156 | echo -e "\n" | |
157 | ||
158 | while [ $count -lt $timeout ]; do | |
159 | count=$(($count + 1)) | |
160 | echo -ne "Still running ($count of $timeout): $@\r" | |
161 | sleep 60 | |
162 | done | |
163 | ||
164 | echo -e "\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"$@\"${ANSI_RESET}\n" | |
165 | kill -9 $cmd_pid | |
166 | } | |
167 | ||
168 | travis_retry() { | |
169 | local result=0 | |
170 | local count=1 | |
171 | while [ $count -le 3 ]; do | |
172 | [ $result -ne 0 ] && { | |
173 | echo -e "\n${ANSI_RED}The command \"$@\" failed. Retrying, $count of 3.${ANSI_RESET}\n" >&2 | |
174 | } | |
175 | "$@" | |
176 | result=$? | |
177 | [ $result -eq 0 ] && break | |
178 | count=$(($count + 1)) | |
179 | sleep 1 | |
180 | done | |
181 | ||
182 | [ $count -gt 3 ] && { | |
183 | echo -e "\n${ANSI_RED}The command \"$@\" failed 3 times.${ANSI_RESET}\n" >&2 | |
184 | } | |
185 | ||
186 | return $result | |
187 | } | |
188 | ||
189 | travis_fold() { | |
190 | local action=$1 | |
191 | local name=$2 | |
192 | echo -en "travis_fold:${action}:${name}\r${ANSI_CLEAR}" | |
193 | } | |
194 | ||
195 | decrypt() { | |
196 | echo $1 | base64 -d | openssl rsautl -decrypt -inkey ~/.ssh/id_rsa.repo | |
197 | } | |
198 | ||
199 | ||
200 | run() { | |
201 | travis_cmd "$1" --echo --assert | |
202 | } | |
203 | ||
204 | install_auth() { | |
205 | # pkcs11 build requirements | |
206 | run "sudo apt-get -qq --no-install-recommends install \ | |
207 | libp11-kit-dev" | |
208 | ||
c5791798 PD |
209 | # for validns |
210 | run "sudo add-apt-repository -y ppa:jelu/validns" | |
211 | run 'curl "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x7AA4AC1F04A52E842B88094F01B7B7D6564DECD0" | sudo apt-key add - ' | |
212 | ||
bf6096f5 | 213 | # geoip-backend |
9c741511 AT |
214 | run "sudo add-apt-repository -y ppa:maxmind/ppa" |
215 | run "gpg --keyserver keyserver.ubuntu.com --recv-keys DE742AFA" | |
216 | run "gpg --export DE742AFA | sudo apt-key add -" | |
217 | run "sudo apt-get update" | |
bf6096f5 PL |
218 | run "sudo apt-get -qq --no-install-recommends install \ |
219 | libgeoip-dev \ | |
9c741511 AT |
220 | libyaml-cpp-dev \ |
221 | libmaxminddb-dev" | |
bf6096f5 | 222 | |
42f1f726 | 223 | # lmdb-backend |
224 | run "sudo apt-get -qq --no-install-recommends install \ | |
225 | liblmdb-dev" | |
226 | ||
bf6096f5 PL |
227 | # remote-backend build requirements |
228 | run "sudo apt-get -qq --no-install-recommends install \ | |
229 | libzmq3-dev" | |
230 | ||
3a435d2e PD |
231 | # godbc-backend |
232 | run "sudo apt-get -qq --no-install-recommends install \ | |
233 | libsqliteodbc" | |
234 | ||
bf6096f5 PL |
235 | # authoritative test requirements / setup |
236 | run "sudo apt-get -qq --no-install-recommends install \ | |
237 | bind9utils \ | |
238 | ldnsutils \ | |
239 | libnet-dns-perl \ | |
240 | moreutils \ | |
241 | unbound-host \ | |
242 | validns \ | |
243 | default-jre \ | |
244 | jq" | |
245 | ||
246 | run "cd .." | |
20445e69 PD |
247 | run "wget https://github.com/dblacka/jdnssec-tools/releases/download/0.14/jdnssec-tools-0.14.tar.gz" |
248 | run "sudo tar xfz jdnssec-tools-0.14.tar.gz --strip-components=1 -C /" | |
1e0253ca | 249 | run "cd ${TRAVIS_BUILD_DIR}" |
bf6096f5 PL |
250 | |
251 | # pkcs11 test requirements / setup | |
252 | run "sudo apt-get -qq --no-install-recommends install \ | |
253 | p11-kit \ | |
254 | softhsm" | |
255 | run "sudo mkdir -p /etc/pkcs11/modules/" | |
256 | run "sudo cp -f regression-tests/softhsm.mod /etc/pkcs11/modules/softhsm.module" | |
257 | run "sudo cp -f regression-tests/softhsm.conf /etc/softhsm/softhsm.conf" | |
258 | run "sudo chmod 0755 /etc/softhsm/" | |
259 | run "sudo chmod 0644 /etc/softhsm/softhsm.conf" | |
260 | run "sudo chmod 0777 /var/lib/softhsm" | |
261 | run "p11-kit -l" # ensure it's ok | |
262 | ||
263 | # bind-backend tests requirements | |
264 | run "sudo apt-get -qq --no-install-recommends install \ | |
14fa3ea1 PD |
265 | alien\ |
266 | fakeroot" | |
bf6096f5 | 267 | run "cd .." |
0e62797e | 268 | run "wget https://downloads.powerdns.com/tmp/dnsperf-2.0.0.0-1-rhel-6-x86_64.tar.gz" |
bf6096f5 PL |
269 | run "tar xzvf dnsperf-2.0.0.0-1-rhel-6-x86_64.tar.gz" |
270 | run "fakeroot alien --to-deb dnsperf-2.0.0.0-1/dnsperf-2.0.0.0-1.el6.x86_64.rpm" | |
271 | run "sudo dpkg -i dnsperf_2.0.0.0-2_amd64.deb" | |
1e0253ca | 272 | run "cd ${TRAVIS_BUILD_DIR}" |
bf6096f5 PL |
273 | |
274 | # geoip-backend test requirements / setup | |
275 | run "sudo apt-get -qq --no-install-recommends install \ | |
276 | geoip-database" | |
277 | ||
278 | # gmysql-backend test requirements | |
d004b14c RG |
279 | # as of 2016/12/01, mysql-5.6 is now installed in the default travis image |
280 | # see https://github.com/travis-ci/travis-ci/issues/6961 | |
281 | #run "sudo apt-get -qq --no-install-recommends install \ | |
282 | # mysql-server" | |
bf6096f5 PL |
283 | |
284 | # godbc-backend test setup | |
3a435d2e PD |
285 | run 'echo -e "[pdns-sqlite3-1]\nDriver = SQLite3\nDatabase = ${PWD}/regression-tests/pdns.sqlite3\n\n[pdns-sqlite3-2]\nDriver = SQLite3\nDatabase = ${PWD}/regression-tests/pdns.sqlite32\n" > ${HOME}/.odbc.ini' |
286 | run 'echo ${HOME}/.odbc.ini' | |
287 | run 'cat ${HOME}/.odbc.ini' | |
bf6096f5 | 288 | |
bf6096f5 PL |
289 | # remote-backend tests requirements |
290 | run "sudo apt-get -qq --no-install-recommends install \ | |
291 | ruby-json \ | |
292 | rubygems-integration \ | |
293 | socat" | |
2a5c0b37 | 294 | run "gem update --system" |
bf6096f5 PL |
295 | run "gem install bundler --no-rdoc --no-ri" |
296 | run "cd modules/remotebackend" | |
297 | run "ruby -S bundle install" | |
298 | run "cd ../.." | |
299 | ||
300 | # tinydns | |
301 | run "sudo apt-get -qq --no-install-recommends install \ | |
302 | libcdb-dev" | |
303 | ||
304 | # No backend | |
305 | run "sudo apt-get -qq --no-install-recommends install \ | |
306 | authbind \ | |
307 | faketime" | |
308 | run "sudo touch /etc/authbind/byport/53" | |
309 | run "sudo chmod 755 /etc/authbind/byport/53" | |
869c68a4 PD |
310 | |
311 | # Install dnsmasq to make lookups more robust | |
312 | run "sudo apt-get -qq --no-install-recommends install \ | |
313 | dnsmasq" | |
314 | run 'echo listen-address=127.0.0.53 | sudo tee /etc/dnsmasq.d/local.conf' | |
315 | run 'echo bind-interfaces | sudo tee -a /etc/dnsmasq.d/local.conf' | |
316 | ||
317 | ## WARNING | |
318 | ## after this dnsmasq restart, DNS lookups will fail for a few seconds. | |
319 | run 'sudo service dnsmasq restart' | |
320 | run "sudo resolvconf --disable-updates" | |
321 | run 'echo nameserver 127.0.0.53 | sudo tee /etc/resolv.conf' | |
322 | run "export RESOLVERIP=127.0.0.53" | |
bf6096f5 PL |
323 | } |
324 | ||
eb353acc RG |
325 | install_ixfrdist() { |
326 | run "sudo apt-get -qq --no-install-recommends install \ | |
327 | libyaml-cpp-dev" | |
328 | } | |
329 | ||
bf6096f5 PL |
330 | install_recursor() { |
331 | # recursor test requirements / setup | |
97ab616e RG |
332 | # lua-posix is required for the ghost tests |
333 | # (used by the prequery script in the auth) | |
bf6096f5 PL |
334 | run "sudo apt-get -qq --no-install-recommends install \ |
335 | authbind \ | |
336 | daemontools \ | |
7c114c00 | 337 | jq \ |
cb54e9b5 | 338 | libfaketime \ |
7c114c00 | 339 | libsnmp-dev \ |
97ab616e | 340 | lua-posix \ |
c51c551e | 341 | lua-socket \ |
bf6096f5 | 342 | moreutils \ |
7c114c00 | 343 | snmpd" |
bf6096f5 | 344 | run "cd .." |
8a27076c | 345 | run "wget http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip" |
1e0253ca | 346 | run "unzip top-1m.csv.zip -d ${TRAVIS_BUILD_DIR}/regression-tests" |
8a27076c | 347 | run 'echo -e "deb [arch=amd64] http://repo.powerdns.com/ubuntu trusty-auth-master main" | sudo tee /etc/apt/sources.list.d/pdns.list' |
348 | run 'echo -e "Package: pdns-*\nPin: origin repo.powerdns.com\nPin-Priority: 9001" | sudo tee /etc/apt/preferences.d/pdns' | |
349 | run 'curl https://repo.powerdns.com/CBC8B383-pub.asc | sudo apt-key add - ' | |
dad54543 PL |
350 | run 'sudo apt-get update' |
351 | run 'sudo apt-get -y install pdns-server pdns-tools' | |
e07dae82 | 352 | run "sudo service pdns stop" |
bf6096f5 PL |
353 | run 'for suffix in {1..40}; do sudo /sbin/ip addr add 10.0.3.$suffix/32 dev lo; done' |
354 | run "sudo touch /etc/authbind/byport/53" | |
355 | run "sudo chmod 755 /etc/authbind/byport/53" | |
1e0253ca | 356 | run "cd ${TRAVIS_BUILD_DIR}" |
aa7a54c9 RG |
357 | # install SNMP |
358 | run "sudo sed -i \"s/agentxperms 0700 0755 recursor/agentxperms 0700 0755 ${USER}/g\" regression-tests.recursor-dnssec/snmpd.conf" | |
359 | run "sudo cp -f regression-tests.recursor-dnssec/snmpd.conf /etc/snmp/snmpd.conf" | |
360 | run "sudo service snmpd restart" | |
361 | ## fun story, the directory perms are only applied if it doesn't exist yet, and it is created by the init script, so.. | |
362 | run "sudo chmod 0755 /var/agentx" | |
bf6096f5 PL |
363 | } |
364 | ||
365 | install_dnsdist() { | |
35d883a8 | 366 | # test requirements / setup |
82a91ddf CH |
367 | run "sudo add-apt-repository -y ppa:zeha/libfstrm-ppa" |
368 | run 'curl "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x396160EF8126A2E2" | sudo apt-key add - ' | |
369 | run "sudo apt-get -qq update" | |
9f4eb5cc RG |
370 | run "sudo apt-get -qq --no-install-recommends install \ |
371 | snmpd \ | |
60fb9966 RG |
372 | libcdb-dev \ |
373 | libfstrm-dev \ | |
374 | liblmdb-dev \ | |
375 | libsnmp-dev" | |
9f4eb5cc RG |
376 | run "sudo sed -i \"s/agentxperms 0700 0755 dnsdist/agentxperms 0700 0755 ${USER}/g\" regression-tests.dnsdist/snmpd.conf" |
377 | run "sudo cp -f regression-tests.dnsdist/snmpd.conf /etc/snmp/snmpd.conf" | |
378 | run "sudo service snmpd restart" | |
379 | # fun story, the directory perms are only applied if it doesn't exist yet, and it is created by the init script, so.. | |
380 | run "sudo chmod 0755 /var/agentx" | |
bf6096f5 PL |
381 | } |
382 | ||
d5d421b3 JS |
383 | check_for_dangling_symlinks() { |
384 | run '! find -L . -name missing-sources -prune -o ! -name pubsuffix.cc -type l | grep .' | |
385 | } | |
386 | ||
bf6096f5 | 387 | build_auth() { |
48c7cae9 | 388 | run "autoreconf -vi" |
e9ccf0f7 | 389 | run "./configure \ |
040e40bb | 390 | ${sanitizerflags} \ |
1d1c4b1d | 391 | --with-dynmodules='bind gmysql geoip gpgsql gsqlite3 lmdb pipe random remote tinydns godbc lua2' \ |
bf6096f5 PL |
392 | --with-modules='' \ |
393 | --with-sqlite3 \ | |
cb264691 | 394 | --with-libsodium \ |
bf6096f5 PL |
395 | --enable-experimental-pkcs11 \ |
396 | --enable-remotebackend-zeromq \ | |
397 | --enable-tools \ | |
398 | --enable-unit-tests \ | |
399 | --enable-backend-unit-tests \ | |
84f3c7d3 | 400 | --enable-fuzz-targets \ |
bf6096f5 | 401 | --disable-dependency-tracking \ |
42f1f726 | 402 | --disable-silent-rules \ |
403 | --with-lmdb=/usr" | |
bf6096f5 PL |
404 | run "make -k dist" |
405 | run "make -k -j3" | |
406 | run "make -k install DESTDIR=/tmp/pdns-install-dir" | |
407 | run "find /tmp/pdns-install-dir -ls" | |
408 | } | |
409 | ||
eb353acc RG |
410 | build_ixfrdist() { |
411 | run "autoreconf -vi" | |
412 | run "./configure \ | |
413 | ${sanitizerflags} \ | |
414 | --with-dynmodules='bind' \ | |
415 | --with-modules='' \ | |
416 | --enable-ixfrdist \ | |
417 | --enable-unit-tests \ | |
418 | --disable-dependency-tracking \ | |
419 | --disable-silent-rules" | |
8f9ca3a1 | 420 | run "make -C ext -k -j3" |
eb353acc RG |
421 | run "cd pdns" |
422 | run "make -k -j3 ixfrdist" | |
423 | run "cd .." | |
424 | } | |
425 | ||
bf6096f5 PL |
426 | build_recursor() { |
427 | export PDNS_RECURSOR_DIR=$HOME/pdns_recursor | |
d5d421b3 JS |
428 | run "cd pdns/recursordist" |
429 | check_for_dangling_symlinks | |
430 | run "cd ../.." | |
bf6096f5 PL |
431 | # distribution build |
432 | run "./build-scripts/dist-recursor" | |
433 | run "cd pdns/recursordist" | |
434 | run "tar xf pdns-recursor-*.tar.bz2" | |
435 | run "rm -f pdns-recursor-*.tar.bz2" | |
436 | run "cd pdns-recursor-*" | |
1e0a958b | 437 | run "./configure \ |
040e40bb | 438 | ${sanitizerflags} \ |
bf6096f5 | 439 | --prefix=$PDNS_RECURSOR_DIR \ |
cb264691 | 440 | --with-libsodium \ |
35d883a8 | 441 | --enable-unit-tests \ |
af1377b7 | 442 | --enable-nod \ |
e593a398 | 443 | --disable-dnstap \ |
bf6096f5 PL |
444 | --disable-silent-rules" |
445 | run "make -k -j3" | |
446 | run "make install" | |
447 | run "find $PDNS_RECURSOR_DIR -ls" | |
448 | run "cd ../../.." | |
449 | } | |
450 | ||
451 | build_dnsdist(){ | |
d5d421b3 JS |
452 | run "cd pdns/dnsdistdist" |
453 | check_for_dangling_symlinks | |
454 | run "cd ../.." | |
bf6096f5 PL |
455 | run "./build-scripts/dist-dnsdist" |
456 | run "cd pdns/dnsdistdist" | |
457 | run "tar xf dnsdist*.tar.bz2" | |
458 | run "cd dnsdist-*" | |
e9ccf0f7 | 459 | run "./configure \ |
040e40bb | 460 | ${sanitizerflags} \ |
bf6096f5 | 461 | --enable-unit-tests \ |
cb264691 | 462 | --with-libsodium \ |
bf6096f5 | 463 | --enable-dnscrypt \ |
a227f47d | 464 | --enable-dns-over-tls \ |
3bbbeb11 | 465 | --enable-dnstap \ |
60fb9966 | 466 | --with-lmdb=/usr \ |
bf6096f5 PL |
467 | --prefix=$HOME/dnsdist \ |
468 | --disable-silent-rules" | |
469 | run "make -k -j3" | |
470 | run "./testrunner" | |
471 | run "make install" | |
472 | run "cd ../../.." | |
473 | run "find $HOME/dnsdist -ls" | |
474 | run "rm -rf pdns/dnsdistdist/dnsdist-*/" | |
475 | ||
476 | } | |
477 | ||
bf6096f5 | 478 | test_auth() { |
488c8611 | 479 | run "make -j3 check || (cat pdns/test-suite.log; false)" |
bf6096f5 PL |
480 | run "test -f pdns/test-suite.log && cat pdns/test-suite.log || true" |
481 | run "test -f modules/remotebackend/test-suite.log && cat modules/remotebackend/test-suite.log || true" | |
482 | ||
483 | #DNSName - make -k -j3 -C pdns $(grep '(EXEEXT):' pdns/Makefile | cut -f1 -d\$ | grep -E -v 'dnsdist|calidns') | |
8695de46 | 484 | run 'make -k -j3 -C pdns $(grep "(EXEEXT):" pdns/Makefile | cut -f1 -d\$)' |
bf6096f5 PL |
485 | |
486 | run "cd pdns" | |
487 | run "./pdnsutil test-algorithms" | |
488 | run "cd .." | |
489 | ||
490 | run "cd regression-tests" | |
491 | ||
b6072c01 KM |
492 | #travis unbound is too old for this test (unbound 1.6.0 required) |
493 | run "touch tests/ent-asterisk/fail.nsec" | |
494 | ||
bf6096f5 PL |
495 | run "./timestamp ./start-test-stop 5300 bind-both" |
496 | run "./timestamp ./start-test-stop 5300 bind-dnssec-both" | |
497 | run "./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-both" | |
9955ccf6 | 498 | # run "./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-optout-both" |
bf6096f5 PL |
499 | run "./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-narrow" |
500 | run "./timestamp ./start-test-stop 5300 bind-hybrid-nsec3" | |
501 | #ecdsa - ./timestamp ./start-test-stop 5300 bind-dnssec-pkcs11 | |
502 | ||
bf6096f5 PL |
503 | run "./timestamp ./start-test-stop 5300 geoip" |
504 | run "./timestamp ./start-test-stop 5300 geoip-nsec3-narrow" | |
effa40ed AT |
505 | run "export geoipdatabase=../modules/geoipbackend/regression-tests/GeoLiteCity.mmdb" |
506 | run "./timestamp ./start-test-stop 5300 geoip" | |
bf6096f5 PL |
507 | |
508 | run "./timestamp ./start-test-stop 5300 gmysql-nodnssec-both" | |
509 | run "./timestamp ./start-test-stop 5300 gmysql-both" | |
510 | run "./timestamp ./start-test-stop 5300 gmysql-nsec3-both" | |
9955ccf6 | 511 | # run "./timestamp ./start-test-stop 5300 gmysql-nsec3-optout-both" |
bf6096f5 PL |
512 | run "./timestamp ./start-test-stop 5300 gmysql-nsec3-narrow" |
513 | ||
23743d14 PD |
514 | run "sudo perl -i -pe 's/\]/]\nThreading=1/g' /etc/odbcinst.ini" |
515 | run "cat /etc/odbcinst.ini" | |
bf6096f5 | 516 | run "export GODBC_SQLITE3_DSN=pdns-sqlite3-1" |
0d756465 PD |
517 | # this test is unstable on the library versions in the Travis trusty image |
518 | # run "./timestamp ./start-test-stop 5300 godbc_sqlite3-nsec3" | |
bf6096f5 PL |
519 | |
520 | run "./timestamp ./start-test-stop 5300 gpgsql-nodnssec-both" | |
521 | run "./timestamp ./start-test-stop 5300 gpgsql-both" | |
522 | run "./timestamp ./start-test-stop 5300 gpgsql-nsec3-both" | |
ce4cbc87 OM |
523 | #run "./timestamp ./start-test-stop 5300 gpgsql-nsec3-optout-both" |
524 | #run "./timestamp ./start-test-stop 5300 gpgsql-nsec3-narrow" | |
bf6096f5 PL |
525 | |
526 | run "./timestamp ./start-test-stop 5300 gsqlite3-nodnssec-both" | |
527 | run "./timestamp ./start-test-stop 5300 gsqlite3-both" | |
528 | run "./timestamp ./start-test-stop 5300 gsqlite3-nsec3-both" | |
9955ccf6 | 529 | # run "./timestamp ./start-test-stop 5300 gsqlite3-nsec3-optout-both" |
bf6096f5 PL |
530 | run "./timestamp ./start-test-stop 5300 gsqlite3-nsec3-narrow" |
531 | ||
bf6096f5 PL |
532 | run "./timestamp ./start-test-stop 5300 remotebackend-pipe" |
533 | run "./timestamp ./start-test-stop 5300 remotebackend-pipe-dnssec" | |
ce4cbc87 | 534 | #run "./timestamp ./start-test-stop 5300 remotebackend-unix" |
bf6096f5 | 535 | run "./timestamp ./start-test-stop 5300 remotebackend-unix-dnssec" |
ce4cbc87 | 536 | #run "./timestamp ./start-test-stop 5300 remotebackend-http" |
bf6096f5 | 537 | run "./timestamp ./start-test-stop 5300 remotebackend-http-dnssec" |
ce4cbc87 | 538 | #run "./timestamp ./start-test-stop 5300 remotebackend-zeromq" |
bf6096f5 PL |
539 | run "./timestamp ./start-test-stop 5300 remotebackend-zeromq-dnssec" |
540 | ||
541 | run "./timestamp ./start-test-stop 5300 tinydns" | |
b6072c01 | 542 | |
42f1f726 | 543 | run "./timestamp ./start-test-stop 5300 lmdb-nodnssec-both" |
544 | run "./timestamp ./start-test-stop 5300 lmdb-both" | |
545 | run "./timestamp ./start-test-stop 5300 lmdb-nsec3-both" | |
9955ccf6 | 546 | # run "./timestamp ./start-test-stop 5300 lmdb-nsec3-optout-both" |
42f1f726 | 547 | |
b6072c01 KM |
548 | run "rm tests/ent-asterisk/fail.nsec" |
549 | ||
50de1cba | 550 | run "cd ../regression-tests.rootzone" |
bf6096f5 PL |
551 | run "./timestamp ./start-test-stop 5300 bind-both" |
552 | run "./timestamp ./start-test-stop 5300 bind-dnssec-both" | |
553 | run "./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-both" | |
9955ccf6 | 554 | # run "./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-optout-both" |
bf6096f5 PL |
555 | run "./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-narrow" |
556 | run "./timestamp ./start-test-stop 5300 bind-hybrid-nsec3" | |
557 | ||
558 | run "./timestamp ./start-test-stop 5300 gmysql-nodnssec-both" | |
559 | run "./timestamp ./start-test-stop 5300 gmysql-both" | |
560 | run "./timestamp ./start-test-stop 5300 gmysql-nsec3-both" | |
9955ccf6 | 561 | # run "./timestamp ./start-test-stop 5300 gmysql-nsec3-optout-both" |
bf6096f5 PL |
562 | run "./timestamp ./start-test-stop 5300 gmysql-nsec3-narrow" |
563 | ||
564 | run "./timestamp ./start-test-stop 5300 gpgsql-nodnssec-both" | |
565 | run "./timestamp ./start-test-stop 5300 gpgsql-both" | |
566 | run "./timestamp ./start-test-stop 5300 gpgsql-nsec3-both" | |
9955ccf6 | 567 | # run "./timestamp ./start-test-stop 5300 gpgsql-nsec3-optout-both" |
bf6096f5 PL |
568 | run "./timestamp ./start-test-stop 5300 gpgsql-nsec3-narrow" |
569 | ||
570 | run "./timestamp ./start-test-stop 5300 gsqlite3-nodnssec-both" | |
571 | run "./timestamp ./start-test-stop 5300 gsqlite3-both" | |
572 | run "./timestamp ./start-test-stop 5300 gsqlite3-nsec3-both" | |
9955ccf6 | 573 | # run "./timestamp ./start-test-stop 5300 gsqlite3-nsec3-optout-both" |
bf6096f5 PL |
574 | run "./timestamp ./start-test-stop 5300 gsqlite3-nsec3-narrow" |
575 | ||
6f09dd5d AT |
576 | run "./timestamp ./start-test-stop 5300 lua2" |
577 | run "./timestamp ./start-test-stop 5300 lua2-dnssec" | |
578 | ||
42f1f726 | 579 | run "./timestamp ./start-test-stop 5300 lmdb-both" |
580 | run "./timestamp ./start-test-stop 5300 lmdb-nodnssec-both" | |
581 | run "./timestamp ./start-test-stop 5300 lmdb-nsec3-both" | |
9955ccf6 | 582 | # run "./timestamp ./start-test-stop 5300 lmdb-nsec3-optout-both" |
42f1f726 | 583 | |
bf6096f5 PL |
584 | run "cd .." |
585 | ||
586 | ### api ### | |
587 | run "cd regression-tests.api" | |
588 | run "./runtests authoritative" | |
589 | run "cd .." | |
590 | ||
591 | ### no backend tests ### | |
592 | run "cd regression-tests.nobackend/" | |
593 | run "./runtests" | |
594 | run "test ! -s ./failed_tests" | |
595 | run "cd .." | |
596 | ||
2b3cdcc0 CHB |
597 | ### Lua rec tests ### |
598 | run "cd regression-tests.auth-py" | |
005d7627 | 599 | run "./runtests -v || (cat ./configs/auth/pdns.log; false)" |
2b3cdcc0 CHB |
600 | run "cd .." |
601 | ||
bf6096f5 PL |
602 | run "rm -f regression-tests/zones/*-slave.*" #FIXME |
603 | } | |
604 | ||
eb353acc RG |
605 | test_ixfrdist(){ |
606 | run "cd regression-tests.ixfrdist" | |
607 | run "IXFRDISTBIN=${TRAVIS_BUILD_DIR}/pdns/ixfrdist ./runtests -v || (cat ixfrdist.log; false)" | |
608 | run "cd .." | |
609 | } | |
610 | ||
bf6096f5 PL |
611 | test_recursor() { |
612 | export PDNSRECURSOR="${PDNS_RECURSOR_DIR}/sbin/pdns_recursor" | |
bf6096f5 PL |
613 | export DNSBULKTEST="/usr/bin/dnsbulktest" |
614 | export RECCONTROL="${PDNS_RECURSOR_DIR}/bin/rec_control" | |
35d883a8 | 615 | run "cd pdns/recursordist/pdns-recursor-*" |
6aac061c | 616 | run "make -j 3 check || (cat test-suite.log; false)" |
35d883a8 | 617 | run "cd ${TRAVIS_BUILD_DIR}" |
7568b07d PL |
618 | run "./build-scripts/test-recursor" |
619 | export RECURSOR="${PDNSRECURSOR}" | |
bf6096f5 | 620 | run "cd regression-tests" |
280c2f89 | 621 | run "THRESHOLD=50 TRACE=no ./timestamp ./recursor-test 5300 50000" |
bf6096f5 | 622 | run "cd .." |
7568b07d | 623 | |
bf6096f5 PL |
624 | run "cd regression-tests.api" |
625 | run "./runtests recursor" | |
626 | run "cd .." | |
627 | } | |
628 | ||
bf6096f5 PL |
629 | test_dnsdist(){ |
630 | run "cd regression-tests.dnsdist" | |
683bf211 RG |
631 | export SKIP_DOH_TESTS=1 |
632 | export SKIP_PROMETHEUS_TESTS=1 | |
633 | run "DNSDISTBIN=$HOME/dnsdist/bin/dnsdist ./runtests -v --ignore-files='(?:^\.|^_,|^setup\.py$|^test_TLSSessionResumption\.py$)'" | |
bf6096f5 PL |
634 | run "rm -f ./DNSCryptResolver.cert ./DNSCryptResolver.key" |
635 | run "cd .." | |
636 | } | |
637 | ||
638 | test_repo(){ | |
639 | run "git status" | |
640 | run "git status | grep -q clean" | |
641 | } | |
642 | ||
643 | # global build requirements | |
644 | run "sudo apt-get -qq --no-install-recommends install \ | |
645 | libboost-all-dev \ | |
3a086960 | 646 | libluajit-5.1-dev \ |
bf6096f5 | 647 | libedit-dev \ |
0a4a38ab | 648 | libprotobuf-dev \ |
0a4a38ab | 649 | protobuf-compiler" |
bf6096f5 PL |
650 | |
651 | run "cd .." | |
652 | run "wget http://ppa.launchpad.net/kalon33/gamesgiroll/ubuntu/pool/main/libs/libsodium/libsodium-dev_1.0.3-1~ppa14.04+1_amd64.deb" | |
653 | run "wget http://ppa.launchpad.net/kalon33/gamesgiroll/ubuntu/pool/main/libs/libsodium/libsodium13_1.0.3-1~ppa14.04+1_amd64.deb" | |
654 | run "sudo dpkg -i libsodium-dev_1.0.3-1~ppa14.04+1_amd64.deb libsodium13_1.0.3-1~ppa14.04+1_amd64.deb" | |
1e0253ca | 655 | run "cd ${TRAVIS_BUILD_DIR}" |
bf6096f5 | 656 | |
e9ccf0f7 | 657 | compilerflags="-O1 -Werror=vla" |
040e40bb | 658 | sanitizerflags="" |
e9ccf0f7 PD |
659 | if [ "$CC" = "clang" ] |
660 | then | |
661 | compilerflags="$compilerflags -Werror=string-plus-int" | |
040e40bb RG |
662 | if [ "${PDNS_BUILD_PRODUCT}" = "recursor" ]; then |
663 | sanitizerflags="${sanitizerflags} --enable-asan" | |
664 | elif [ "${PDNS_BUILD_PRODUCT}" = "dnsdist" ]; then | |
665 | sanitizerflags="${sanitizerflags} --enable-asan --enable-ubsan" | |
eb353acc | 666 | elif [ "${PDNS_BUILD_PRODUCT}" = "ixfrdist" ]; then |
478ca077 | 667 | sanitizerflags="${sanitizerflags} --enable-asan --enable-ubsan" |
040e40bb | 668 | fi |
e9ccf0f7 PD |
669 | fi |
670 | export CFLAGS=$compilerflags | |
671 | export CXXFLAGS=$compilerflags | |
040e40bb | 672 | export sanitizerflags |
478ca077 RG |
673 | # We need a suppression for UndefinedBehaviorSanitizer with ixfrdist, |
674 | # because of a vptr bug fixed in Boost 1.57.0: | |
675 | # https://github.com/boostorg/any/commit/c92ab03ab35775b6aab30f6cdc3d95b7dd8fc5c6 | |
676 | export UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1:suppressions=${TRAVIS_BUILD_DIR}/build-scripts/UBSan.supp" | |
e9ccf0f7 | 677 | |
bf6096f5 PL |
678 | install_$PDNS_BUILD_PRODUCT |
679 | ||
680 | build_$PDNS_BUILD_PRODUCT | |
681 | ||
682 | test_$PDNS_BUILD_PRODUCT | |
683 | ||
d2a4a399 | 684 | if [ $PDNS_BUILD_PRODUCT == "auth" ]; then |
bf6096f5 PL |
685 | test_repo |
686 | fi |