diff --git a/changes/bug13161-test-network-echo-n b/changes/bug13161-test-network-echo-n new file mode 100644 index 0000000000..501ebdda1f --- /dev/null +++ b/changes/bug13161-test-network-echo-n @@ -0,0 +1,3 @@ + o Minor bugfixes: + - Stop using "echo -n", as some shells' built-in echo doesn't support + "-n". Instead, use "/bin/echo -n". Partially fixes bug 13161. diff --git a/changes/feature13161-TestingDirAuthVoteExit b/changes/feature13161-TestingDirAuthVoteExit new file mode 100644 index 0000000000..d6c8f414a3 --- /dev/null +++ b/changes/feature13161-TestingDirAuthVoteExit @@ -0,0 +1,7 @@ + o Minor features (testing): + - Add the TestingDirAuthVoteExit option, a list of nodes to vote + Exit for regardless of their uptime, bandwidth, or exit policy. + TestingTorNetwork must be set for this option to have any effect. + Works around an issue where authorities would take up to 35 minutes + to give nodes the Exit flag in a test network, despite short + consensus intervals. Partially implements ticket 13161. diff --git a/changes/feature13161-test-network-delay-option b/changes/feature13161-test-network-delay-option new file mode 100644 index 0000000000..1cf2e71a37 --- /dev/null +++ b/changes/feature13161-test-network-delay-option @@ -0,0 +1,4 @@ + o Minor features (testing): + - Add a --delay option to test-network.sh, which configures the delay + before the chutney network tests for data transmission. + Partially implements ticket 13161. diff --git a/doc/tor.1.txt b/doc/tor.1.txt index 957c6d13a0..9477d47798 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -2197,6 +2197,15 @@ The following options are used for running a testing Tor network. Try this often to download a v3 authority certificate before giving up. Changing this requires that **TestingTorNetwork** is set. (Default: 8) +[[TestingDirAuthVoteExit]] **TestingDirAuthVoteExit** __node__,__node__,__...__:: + A list of identity fingerprints, nicknames, country codes and + address patterns of nodes to vote Exit for regardless of their + uptime, bandwidth, or exit policy. See the **ExcludeNodes** + option for more information on how to specify nodes. + + + In order for this option to have any effect, **TestingTorNetwork** + has to be set. + [[TestingDirAuthVoteGuard]] **TestingDirAuthVoteGuard** __node__,__node__,__...__:: A list of identity fingerprints, nicknames, country codes and address patterns of nodes to vote Guard for regardless of their diff --git a/src/or/config.c b/src/or/config.c index 921d032529..3b37a123af 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -439,6 +439,7 @@ static config_var_t option_vars_[] = { V(TestingDescriptorMaxDownloadTries, UINT, "8"), V(TestingMicrodescMaxDownloadTries, UINT, "8"), V(TestingCertMaxDownloadTries, UINT, "8"), + V(TestingDirAuthVoteExit, ROUTERSET, NULL), V(TestingDirAuthVoteGuard, ROUTERSET, NULL), VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "0"), diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 374cfa6f40..c8f47e648e 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2169,12 +2169,19 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, rs->ipv6_orport = ri->ipv6_orport; } - /* Iff we are in a testing network, use TestingDirAuthVoteGuard to + /* Iff we are in a testing network, use TestingDirAuthVoteExit to + give out Exit flags, and TestingDirAuthVoteGuard to give out Guard flags. */ - if (options->TestingTorNetwork && - routerset_contains_routerstatus(options->TestingDirAuthVoteGuard, + if (options->TestingTorNetwork) { + if (routerset_contains_routerstatus(options->TestingDirAuthVoteExit, + rs, 0)) { + rs->is_exit = 1; + } + + if (routerset_contains_routerstatus(options->TestingDirAuthVoteGuard, rs, 0)) { - rs->is_possible_guard = 1; + rs->is_possible_guard = 1; + } } } diff --git a/src/or/or.h b/src/or/or.h index 54cee46ee3..4130ea6351 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4056,6 +4056,10 @@ typedef struct { /** Minimum value for the Fast flag threshold on testing networks. */ uint64_t TestingMinFastFlagThreshold; + /** Relays in a testing network which should be voted Exit + * regardless of exit policy. */ + routerset_t *TestingDirAuthVoteExit; + /** Relays in a testing network which should be voted Guard * regardless of uptime and bandwidth. */ routerset_t *TestingDirAuthVoteGuard; diff --git a/src/test/test-network.sh b/src/test/test-network.sh index fb33842f32..d28fbde80f 100755 --- a/src/test/test-network.sh +++ b/src/test/test-network.sh @@ -1,5 +1,7 @@ #! /bin/sh +ECHO_N="/bin/echo -n" + until [ -z $1 ] do case $1 in @@ -15,6 +17,10 @@ do export NETWORK_FLAVOUR="$2" shift ;; + --delay|--sleep|--bootstrap-time|--time) + export BOOTSTRAP_TIME="$2" + shift + ;; *) echo "Sorry, I don't know what to do with '$1'." exit 2 @@ -39,10 +45,10 @@ PATH="$TOR_DIR/src/or:$TOR_DIR/src/tools:$PATH" # Sleep some, waiting for the network to bootstrap. # TODO: Add chutney command 'bootstrap-status' and use that instead. -BOOTSTRAP_TIME=18 -echo -n "$myname: sleeping for $BOOTSTRAP_TIME seconds" +BOOTSTRAP_TIME=${BOOTSTRAP_TIME:-18} +$ECHO_N "$myname: sleeping for $BOOTSTRAP_TIME seconds" n=$BOOTSTRAP_TIME; while [ $n -gt 0 ]; do - sleep 1; n=$(expr $n - 1); echo -n . + sleep 1; n=$(expr $n - 1); $ECHO_N . done; echo "" ./chutney verify $CHUTNEY_NETWORK VERIFY_EXIT_STATUS=$?