[tor-commits] [metrics-tasks/master] Commit HSDir-set-listing scripts for #2649

karsten at torproject.org karsten at torproject.org
Wed May 25 05:29:23 UTC 2011


commit 22eb1da05f6a0b667f9ba03ca700fc341a3722f6
Author: Robert Ransom <rransom.8774 at gmail.com>
Date:   Tue May 24 13:06:02 2011 -0700

    Commit HSDir-set-listing scripts for #2649
    
    The scripts were done early on 2011-04-18, but never committed.
---
 task-2649/.gitignore                     |    2 +
 task-2649/README                         |   31 ++++++++++++++++++++++++++++++
 task-2649/generate-consensus-hsdir-lists |   28 +++++++++++++++++++++++++++
 task-2649/list-consensus-hsdirs          |   19 ++++++++++++++++++
 task-2649/list-consensus-hsdirs.awk      |   25 ++++++++++++++++++++++++
 5 files changed, 105 insertions(+), 0 deletions(-)

diff --git a/task-2649/.gitignore b/task-2649/.gitignore
new file mode 100644
index 0000000..c77b69b
--- /dev/null
+++ b/task-2649/.gitignore
@@ -0,0 +1,2 @@
+dev/
+out/
diff --git a/task-2649/README b/task-2649/README
new file mode 100644
index 0000000..4283696
--- /dev/null
+++ b/task-2649/README
@@ -0,0 +1,31 @@
+
+Purpose:
+
+  These scripts are intended to determine how unstable the set of
+  relays with the HSDir flag is.
+
+Dependencies:
+
+  You will need linedemux and linemux installed.  See branch parrun in
+  https://gitweb.torproject.org/rransom/tor-utils.git for now.
+
+  You will also need Tcl 8.5.9 and gnuplot 4.4.0 installed.
+
+Instructions:
+
+  First, unpack all of the v3 consensus archive tarballs you want to
+  analyze into a single directory, and set the consensus_archive_dir
+  environment variable to point to that directory.
+
+  Then run:
+
+    ./generate-consensus-hsdir-lists
+    ./compute-hsdir-set-instability
+    ./graph-hsdir-set-instability
+
+Bugs:
+
+  This code compares each consensus with each of the four following
+  consensuses; it should compare each hour's consensus with the
+  consensuses in effect in each of the four following hours.
+
diff --git a/task-2649/generate-consensus-hsdir-lists b/task-2649/generate-consensus-hsdir-lists
new file mode 100755
index 0000000..104e4bc
--- /dev/null
+++ b/task-2649/generate-consensus-hsdir-lists
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# This script must be run as ./generate-consensus-hsdir-lists .
+
+# This script will die horribly later if $consensus_archive_dir
+# expands to a string containing a shell metacharacter, so don't try
+# to not die now.
+test -z $consensus_archive_dir &&
+export consensus_archive_dir=/usr/local/opt/tor-consensuses
+
+
+mkdir -m 0700 -p dev/
+for i in 0 1 2 3 ;do mkfifo -m 0600 dev/in$i dev/out$i ;done
+
+mkdir -p out/consensus-hsdir-lists
+
+
+(cd "$consensus_archive_dir" ;find consensuses-* -type f -print ) |
+sed -e 's|^|./list-consensus-hsdirs |' |
+linedemux --fname -- dev/in0 dev/in1 dev/in2 dev/in3 &
+
+sh <dev/in0 >dev/out0 &
+sh <dev/in1 >dev/out1 &
+sh <dev/in2 >dev/out2 &
+sh <dev/in3 >dev/out3 &
+
+linemux --fname -- dev/out0 dev/out1 dev/out2 dev/out3
+
diff --git a/task-2649/list-consensus-hsdirs b/task-2649/list-consensus-hsdirs
new file mode 100755
index 0000000..1b10243
--- /dev/null
+++ b/task-2649/list-consensus-hsdirs
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# This script must be run as ./list-consensus-hsdirs , by
+# generate-consensus-hsdir-lists.
+
+consensus_file="$1"
+
+
+consensus_basename="$(basename "$consensus_file" -consensus )"
+hsdir_list_dir="out/consensus-hsdir-lists/$(echo "$consensus_basename" |cut -f 1-2 -d - )"
+hsdir_list_name="$hsdir_list_dir/$consensus_basename"
+
+
+mkdir -p "$hsdir_list_dir"
+
+awk -f list-consensus-hsdirs.awk <"$consensus_archive_dir/$consensus_file" >"$hsdir_list_name"
+
+echo "generated HSDir list $consensus_basename"
+
diff --git a/task-2649/list-consensus-hsdirs.awk b/task-2649/list-consensus-hsdirs.awk
new file mode 100644
index 0000000..343c5e7
--- /dev/null
+++ b/task-2649/list-consensus-hsdirs.awk
@@ -0,0 +1,25 @@
+
+BEGIN {
+    OFS=":"
+    idDigest="<oops>"
+}
+
+$1 == "r" {
+    idDigest=$3
+}
+
+$1 == "s" {
+    isHSDir=0
+    for (i = NF; i >= 1; --i) {
+        if ($i == "HSDir") {
+            isHSDir=1
+        }
+    }
+
+    if (isHSDir != 0) {
+        print idDigest
+    }
+
+    idDigest="<oops>"
+}
+





More information about the tor-commits mailing list