diff options
author | teor <teor@torproject.org> | 2018-08-24 04:03:56 +1000 |
---|---|---|
committer | teor <teor@torproject.org> | 2018-08-24 12:46:04 +1000 |
commit | 4217dc0558c9fabfab1568b42dc5e101c69ddef7 (patch) | |
tree | 40d2187188981e6c231d520a934504e3721c69d6 /scripts/test/chutney-git-bisect.sh | |
parent | 677048fe9fd04363f1709aa9df7596d70fe542d6 (diff) | |
download | tor-4217dc0558c9fabfab1568b42dc5e101c69ddef7.tar.gz tor-4217dc0558c9fabfab1568b42dc5e101c69ddef7.zip |
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.
Diffstat (limited to 'scripts/test/chutney-git-bisect.sh')
-rwxr-xr-x | scripts/test/chutney-git-bisect.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/scripts/test/chutney-git-bisect.sh b/scripts/test/chutney-git-bisect.sh new file mode 100755 index 0000000000..8a3f2c70c8 --- /dev/null +++ b/scripts/test/chutney-git-bisect.sh @@ -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 |