Merge remote-tracking branches 'teor/issue-13161-test-network' and 'teor/issue-13161-TestingDirAuthVoteExit'

This commit is contained in:
Nick Mathewson 2014-10-08 15:46:29 -04:00
commit cc5571e1f1
8 changed files with 48 additions and 7 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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"),

View File

@ -2169,13 +2169,20 @@ 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;
}
}
}
/** Routerstatus <b>rs</b> is part of a group of routers that are on

View File

@ -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;

View File

@ -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=$?