Add scripts/test/chutney-git-bisect.sh, for bisecting using chutney

Supports bisection on 0.3.4 and earlier.
Recommend that users copy the script before bisecting.

Implements ticket 27211.
This commit is contained in:
teor 2018-08-24 04:03:56 +10:00
parent 677048fe9f
commit 4217dc0558
No known key found for this signature in database
GPG Key ID: 10FEAA0E7075672A
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