tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

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