chutney-git-bisect.sh (1736B)
1 #!/usr/bin/env bash 2 3 # Compile tor and run chutney to find out if the current commit works 4 # 5 # Usage: 6 # # Copy the script, so it doesn't change during bisection 7 # cp scripts/test/chutney-git-bisect.sh . 8 # git bisect run \ 9 # ./chutney-git-bisect.sh [tries [build-dir [flavour [skip-flavour]]]] 10 # 11 # Runs chutney up to <tries> times (default 3), because some bugs involve race 12 # conditions. 13 # Changes to <build-dir> (default no cd) before running tests. 14 # Runs chutney network <flavour> (default make test-network-all) as the test. 15 # Skips the test if <skip-flavour> fails (default no skip). 16 17 CHUTNEY_TRIES=3 18 if [ -n "$1" ]; then 19 CHUTNEY_TRIES="$1" 20 fi 21 22 if [ -n "$2" ]; then 23 cd "$2" || exit 24 fi 25 26 CHUTNEY_TEST_CMD="make test-network-all" 27 if [ -n "$3" ]; then 28 CHUTNEY_TEST_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $3" 29 fi 30 31 CHUTNEY_SKIP_ON_FAIL_CMD="true" 32 if [ -n "$4" ]; then 33 CHUTNEY_SKIP_ON_FAIL_CMD="$CHUTNEY_PATH/tools/test-network.sh --flavour $4" 34 fi 35 36 CHUTNEY_BUILD_CMD_OR="make src/or/tor src/tools/tor-gencert" 37 CHUTNEY_BUILD_CMD_APP="make src/app/tor src/tools/tor-gencert" 38 if ! ( $CHUTNEY_BUILD_CMD_APP || $CHUTNEY_BUILD_CMD_OR ) ; then 39 echo "building '$CHUTNEY_BUILD_CMD_APP || $CHUTNEY_BUILD_CMD_OR' failed, skip" 40 exit 125 41 fi 42 43 if ! $CHUTNEY_SKIP_ON_FAIL_CMD ; then 44 echo "pre-condition '$CHUTNEY_SKIP_ON_FAIL_CMD' failed, skip" 45 exit 125 46 fi 47 48 i=1 49 while [ "$i" -le "$CHUTNEY_TRIES" ]; do 50 echo 51 echo "Round $i/$CHUTNEY_TRIES:" 52 echo 53 if $CHUTNEY_TEST_CMD ; then 54 echo "test '$CHUTNEY_TEST_CMD' succeeded after $i/$CHUTNEY_TRIES attempts, good" 55 exit 0 56 fi 57 i=$((i+1)) 58 done 59 60 i=$((i-1)) 61 echo "test '$CHUTNEY_TEST_CMD' failed $i/$CHUTNEY_TRIES attempts, bad" 62 exit 1