From 1491e20a07483a4c28fbcc3a605c22a1711412c0 Mon Sep 17 00:00:00 2001
From: Michael Vrable <mvrable@cs.ucsd.edu>
Date: Thu, 3 Jun 2010 15:25:31 -0700
Subject: [PATCH] Updates to script for testing multiple parallel fetches.

---
 cloudbench/paralleltest.py | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/cloudbench/paralleltest.py b/cloudbench/paralleltest.py
index 5084b62..b447938 100755
--- a/cloudbench/paralleltest.py
+++ b/cloudbench/paralleltest.py
@@ -10,7 +10,7 @@ import sys, threading, time, Queue
 import azure
 
 BUCKET_NAME = 'mvrable-benchmark'
-SIZES = [64, 4096, 32 << 10, 256 << 10, 1 << 20, 4 << 20, 32 << 20]
+SIZES = [(1 << s) for s in range(12, 23)]
 
 class S3TestConnection:
     def __init__(self):
@@ -48,16 +48,29 @@ def parallel_get(name, connections, delay1=0.0):
     res = []
     while not q.empty():
         res.append(q.get())
-    return res
 
-def run_test(size, threads, num):
+    if len(res) == len(connections):
+        return res
+
+def run_test(size, threads, num, logfile=sys.stdout, delay=1.0):
     connections = [S3TestConnection() for _ in range(threads)]
     for i in range(num):
+        print "    ...test", i
         res = parallel_get('file-%d-%d' % (size, i), connections)
-        print res
-        time.sleep(1.0)
+        if res is not None:
+            logfile.write(str(min(res)) + "\n")
+        if delay > 0:
+            time.sleep(delay)
+
+for s in SIZES:
+    print "Priming objects: %d-byte objects" % (s,)
+    logfile = open('/dev/null', 'w')
+    run_test(s, 1, 100, logfile, 0.0)
 
-run_test(32768, 4, 500)
+    for t in [4, 2, 1]:
+        print "Running tests: %d-byte objects, %d parallel fetches" % (s, t)
+        logfile = open('parallel-%d-%d.data' % (s, t), 'w')
+        run_test(s, t, 100, logfile)
 sys.exit(0)
 
 if __name__ == '__main__':
-- 
2.20.1