Merge remote-tracking branch 'teor/ticket27211'

This commit is contained in:
Nick Mathewson 2018-08-24 12:45:42 -04:00
commit 4c3b43604b
3 changed files with 71 additions and 0 deletions

3
changes/ticket27211 Normal file
View File

@ -0,0 +1,3 @@
o Minor features (testing):
- Add scripts/test/chutney-git-bisect.sh, for bisecting using chutney.
Implements ticket 27211.

View File

@ -30,6 +30,12 @@ orconfig.h files.
Testing scripts Testing scripts
--------------- ---------------
test/chutney-git-bisect.sh -- a git bisect run script that bisects using
chutney. The script builds tor and tor-gencert, then runs chutney. The script
takes optional arguments for out-of-tree builds, and specific chutney network
flavours. You should copy this script before using it with git bisect, so that
it doesn't change (or disappear) during bisection.
test/cov-blame -- Mash up the results of gcov with git blame. Mainly useful test/cov-blame -- Mash up the results of gcov with git blame. Mainly useful
to find out who has been writing untested code. to find out who has been writing untested code.

View File

@ -0,0 +1,62 @@
#!/usr/bin/env bash
# Compile tor and run chutney to find out if the current commit works
#
# Usage:
# # Copy the script, so it doesn't change during bisection
# cp scripts/test/chutney-git-bisect.sh .
# git bisect run \
# ./chutney-git-bisect.sh [tries [build-dir [flavour [skip-flavour]]]]
#
# Runs chutney up to <tries> times (default 3), because some bugs involve race
# conditions.
# Changes to <build-dir> (default no cd) before running tests.
# Runs chutney network <flavour> (default make test-network-all) as the test.
# Skips the test if <skip-flavour> fails (default no skip).
CHUTNEY_TRIES=3
if [ ! -z "$1" ]; then
CHUTNEY_TRIES="$1"
fi
if [ ! -z "$2" ]; then
cd "$2"
fi
CHUTNEY_TEST_CMD="make test-network-all"
if [ ! -z "$3" ]; then
CHUTNEY_TEST_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $3"
fi
CHUTNEY_SKIP_ON_FAIL_CMD="true"
if [ ! -z "$4" ]; then
CHUTNEY_SKIP_ON_FAIL_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $4"
fi
CHUTNEY_BUILD_CMD_OR="make src/or/tor src/tools/tor-gencert"
CHUTNEY_BUILD_CMD_APP="make src/app/tor src/tools/tor-gencert"
if ! ( $CHUTNEY_BUILD_CMD_APP || $CHUTNEY_BUILD_CMD_OR ) ; then
echo "building '$CHUTNEY_BUILD_CMD_APP || $CHUTNEY_BUILD_CMD_OR' failed, skip"
exit 125
fi
if ! $CHUTNEY_SKIP_ON_FAIL_CMD ; then
echo "pre-condition '$CHUTNEY_SKIP_ON_FAIL_CMD' failed, skip"
exit 125
fi
i=1
while [ "$i" -le "$CHUTNEY_TRIES" ]; do
echo
echo "Round $i/$CHUTNEY_TRIES:"
echo
if $CHUTNEY_TEST_CMD ; then
echo "test '$CHUTNEY_TEST_CMD' succeeded after $i/$CHUTNEY_TRIES attempts, good"
exit 0
fi
i=$[$i+1]
done
i=$[$i-1]
echo "test '$CHUTNEY_TEST_CMD' failed $i/$CHUTNEY_TRIES attempts, bad"
exit 1