fallbackdir: Update list generated on November 10, 2022
[tor.git] / scripts / test / chutney-git-bisect.sh
blobdcf8ab1102c86e8970622e2f9c09d1898258221f
1 #!/usr/bin/env bash
3 # Compile tor and run chutney to find out if the current commit works
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]]]]
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).
17 CHUTNEY_TRIES=3
18 if [ -n "$1" ]; then
19 CHUTNEY_TRIES="$1"
22 if [ -n "$2" ]; then
23 cd "$2" || exit
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"
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"
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
43 if ! $CHUTNEY_SKIP_ON_FAIL_CMD ; then
44 echo "pre-condition '$CHUTNEY_SKIP_ON_FAIL_CMD' failed, skip"
45 exit 125
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
57 i=$((i+1))
58 done
60 i=$((i-1))
61 echo "test '$CHUTNEY_TEST_CMD' failed $i/$CHUTNEY_TRIES attempts, bad"
62 exit 1