aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <cb15g11@soton.ac.uk>2014-03-21 18:38:56 +0000
committerChristopher Baines <cb15g11@soton.ac.uk>2014-03-21 18:38:56 +0000
commitd70868bf3ac1766b0db03deff5a4720b01c9d996 (patch)
treec3f4b209b9b3ee8355eb6a686711aa5c454851b6
parent0a94b34bd1ca18e8834f509e827857ffd5c04773 (diff)
downloadchutney-d70868bf3ac1766b0db03deff5a4720b01c9d996.tar
chutney-d70868bf3ac1766b0db03deff5a4720b01c9d996.tar.gz
Test improvements
-rw-r--r--networks/hs-intro-fail5
-rw-r--r--networks/hs-intro-scale68
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}