aboutsummaryrefslogtreecommitdiff
path: root/networks/hs_round_robin.py
diff options
context:
space:
mode:
Diffstat (limited to 'networks/hs_round_robin.py')
-rw-r--r--networks/hs_round_robin.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/networks/hs_round_robin.py b/networks/hs_round_robin.py
new file mode 100644
index 0000000..5703f93
--- /dev/null
+++ b/networks/hs_round_robin.py
@@ -0,0 +1,88 @@
+nodes_by_fingerprint = {}
+
+#{ nodenum: { circuit: "fingerprint", circuit: "fingerprint" } }
+
+# Introduction Point Tracking
+
+node_intro_circuits = {}
+
+node_intro_events = {}
+
+introduction_point_circuits = {}
+
+def start_test():
+ log("Starting test")
+
+ port8081 = reactor.listenTCP(8081, server.Site(Site(1)))
+ port8082 = reactor.listenTCP(8082, server.Site(Site(2)))
+
+ def cleanup():
+ port8081.stopListening()
+ log("stopped 8081")
+ port8082.stopListening()
+ log("stopped 8082")
+ reactor.stop()
+ log("stopped the reactor")
+
+ def connection_test():
+ log("connecting to clients")
+ responses = {"1": 0, "2": 0}
+
+ for c in Client:
+ result = c.query("http://2oiifbe3wne4iaqb.onion/");
+
+ if result in responses:
+ responses[result] += 1
+ else:
+ log("Unknown response:")
+
+ log(responses)
+
+ def test():
+ connection_test()
+
+ connection_test()
+
+ cleanup()
+
+ stop()
+
+ thread.start_new_thread(test, ())
+
+def start():
+ log("Starting round robin test")
+
+ if not all([ n.getController().start() for n in initial_nodes ]):
+ return False
+
+ log("All initial nodes running")
+
+ for node in Authority + Relay:
+ fingerprint = node.getStemController().get_info("fingerprint")
+ nodes_by_fingerprint[fingerprint] = node
+
+ track_introduction_point(node)
+
+ track_hs_node(hs_node_1)
+
+ def log_listener(logevent):
+ if "Successfully uploaded v2 rend descriptors" in logevent.message:
+ hs_node_1.getStemController().remove_event_listener(log_listener)
+
+ def start_listener(logevent):
+
+ # Probably after what needs waiting for
+ if "Successfully uploaded v2 rend descriptors" in logevent.message:
+ hs_node_2.getStemController().remove_event_listener(start_listener)
+
+ if check_same_intro_points():
+ thread.start_new_thread(start_test, ())
+ log("finished running start_test in another thread")
+
+ hs_node_2.getController().start()
+
+ track_hs_node(hs_node_2)
+
+ hs_node_2.getStemController().add_event_listener(start_listener, EventType.INFO)
+
+ hs_node_1.getStemController().add_event_listener(log_listener, EventType.INFO)