bind9/util/pairwise-testing.sh
Michal Nowak 90368d8e1d Add pairwise testing
Pairwise testing is a test case generation technique based on the
observation that most faults are caused by interactions of at most two
factors.  For BIND, its configure options can be thought of as such
factors.

Process BIND configure options into a model that is subsequently
processed by the PICT tool in order to find an effective test vector.
That test vector is then used for configuring and building BIND using
various combinations of configure options.

(cherry picked from commit 420986bf18)
2020-09-22 11:49:30 +02:00

32 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
#
# 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 https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
set -e
set -o pipefail
grep -v -F "pairwise: skip" configure.ac | sed -n -E "s|.*# \[pairwise: (.*)\]|\1|p" | \
while read -r SWITCH; do
echo "${RANDOM}: ${SWITCH}"
done > pairwise-model.txt
pict pairwise-model.txt 2>/dev/null | tr "\t" " " | sed "1d" > pairwise-commands.txt
while read -r -a configure_switches; do
runid=${RANDOM}
mkdir "pairwise-${runid}"
cd "pairwise-${runid}"
echo "${configure_switches[@]}" | tee "../pairwise-output.${runid}.txt"
../configure "${configure_switches[@]}" >> "../pairwise-output.${runid}.txt" 2>&1
grep -F "WARNING: unrecognized options:" "../pairwise-output.${runid}.txt" && exit 1
make "-j${BUILD_PARALLEL_JOBS:-1}" all >> "../pairwise-output.${runid}.txt" 2>&1
cd ..
rm -rf "pairwise-${runid}" "pairwise-output.${runid}.txt"
done < pairwise-commands.txt