From d70868bf3ac1766b0db03deff5a4720b01c9d996 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 21 Mar 2014 18:38:56 +0000 Subject: Test improvements --- networks/hs-intro-fail | 5 ++++ networks/hs-intro-scale | 68 +++++++++++++++++++++++++------------------------ 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/networks/hs-intro-fail b/networks/hs-intro-fail index deae478..2143a9d 100644 --- a/networks/hs-intro-fail +++ b/networks/hs-intro-fail @@ -50,6 +50,11 @@ node_intro_events = {} introduction_point_circuits = {} +from twisted.web import server, resource +from twisted.internet import reactor +from twisted.protocols import htb + + def track_introduction_points(node): nodenum = node._env["nodenum"] nodenick = node._env["nick"] diff --git a/networks/hs-intro-scale b/networks/hs-intro-scale index d7a0742..50c5a37 100644 --- a/networks/hs-intro-scale +++ b/networks/hs-intro-scale @@ -5,17 +5,6 @@ authority_nodes = Node.create(3, { "torrc": "authority.tmpl" }) -relay_nodes = Node.create(100, { - "tag": "r", - "relay": 1, - "torrc": "intro.tmpl" -}) - -client_nodes = Node.create(50, { - "tag": "c", - "torrc": "client.tmpl" -}) - # hidden service (hs) nodes hs_nodes = [] @@ -23,6 +12,10 @@ hs_servers = [] port = 8081 +from twisted.web import server, resource +from twisted.internet import reactor +from twisted.protocols import htb + # Use twisted to create web servers in this script class Site(resource.Resource): isLeaf = True @@ -36,8 +29,19 @@ class Site(resource.Resource): request.setHeader("content-type", "text/plain") return str(self.siteNum) +# https://twistedmatrix.com/documents/12.3.0/core/examples/ + +serverFilter = htb.HierarchicalBucketFilter() +serverBucket = htb.Bucket() + +# Cap total server traffic at 20 kB/s +serverBucket.maxburst = 200000000 +serverBucket.rate = 200000000 + +serverFilter.buckets[None] = serverBucket + base_port = 9080 -for i in range(1, 3): +for i in [1]: port = base_port + i @@ -49,12 +53,24 @@ for i in range(1, 3): ) hs_nodes.append(node) - s = reactor.listenTCP(port, server.Site(Site(i))) + site = server.Site(Site(i)) + #site.protocol = htb.ShapedProtocolFactory(site.protocol, serverFilter) + + s = reactor.listenTCP(port, site) hs_servers.append(s) port += 1 +client_nodes = Node.create(50, { + "tag": "c", + "torrc": "client.tmpl" +}) +relay_nodes = Node.create(100, { + "tag": "r", + "relay": 1, + "torrc": "intro.tmpl" +}) initial_nodes = authority_nodes + relay_nodes + client_nodes + hs_nodes[:1] @@ -224,8 +240,6 @@ def track_introduction_point(node): def determine_max_load(service_url, clients): - current_load = 0 # requests per second - request_queue = Queue.Queue(1000) singlelock = threading.Lock() @@ -243,10 +257,12 @@ def determine_max_load(service_url, clients): try: request = request_queue.get(True, 1) + print("making request") result = self.client.query("http://2oiifbe3wne4iaqb.onion/"); singlelock.acquire() responses.append((result, time.time())) + print("result " + str(result)) singlelock.release() # Let the queue know the job is finished. @@ -277,15 +293,12 @@ def determine_max_load(service_url, clients): current_average_load = len(last_responses) / 10.0 print("current average load %f" % current_average_load) - if current_average_load > current_load: - running = False - return current_average_load + new_load = int(current_average_load) + 1 - current_load += 1 + time_per_item = 1.0 / new_load - time_per_item = 1.0 / current_load - - for i in range(current_load): + for i in range(new_load): + print("putting in item") request_queue.put(1) time.sleep(time_per_item) @@ -293,17 +306,6 @@ def determine_max_load(service_url, clients): 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} -- cgit v1.2.3