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)