Browse Source

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

Nick Mathewson 9 years ago
parent
commit
cc5571e1f1

+ 3 - 0
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.

+ 7 - 0
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.

+ 4 - 0
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.

+ 9 - 0
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

+ 1 - 0
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"),
 

+ 11 - 4
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;
+    }
   }
 }
 

+ 4 - 0
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;

+ 9 - 3
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=$?