about summary refs log tree commit homepage
path: root/tools/trickletest.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tools/trickletest.rb')
-rw-r--r--tools/trickletest.rb48
1 files changed, 28 insertions, 20 deletions
diff --git a/tools/trickletest.rb b/tools/trickletest.rb
index cf3999b..52fcfac 100644
--- a/tools/trickletest.rb
+++ b/tools/trickletest.rb
@@ -4,34 +4,42 @@ require 'stringio'
 def do_test(st, chunk)
   s = TCPSocket.new('127.0.0.1',ARGV[0].to_i);
   req = StringIO.new(st)
-  
-  while data = req.read(chunk)
-    puts "write #{data.length}: '#{data}'"
-    s.write(data)
-    s.flush
-    sleep 0.1
+  nout = 0
+  randstop = rand(st.length / 10)
+  STDERR.puts "stopping after: #{randstop}"
+
+  begin
+    while data = req.read(chunk)
+      nout += s.write(data)
+      s.flush
+      sleep 0.1
+      if nout > randstop
+        STDERR.puts "BANG! after #{nout} bytes."
+        break
+      end
+    end
+  rescue Object
+    STDERR.puts "ERROR: #$!"
+  ensure
+    s.close
   end
-  s.close
 end
 
+content = "-" * (1024 * 240)
+st = "GET / HTTP/1.1\r\nHost: www.zedshaw.com\r\nContent-Type: text/plain\r\nContent-Length: #{content.length}\r\n\r\n#{content}"
 
-st = "GET / HTTP/1.1\r\nHost: www.zedshaw.com\r\nContent-Type: text/plain\r\n\r\n"
+puts "length: #{content.length}"
 
 threads = []
 ARGV[1].to_i.times do
-  threads << Thread.new do
-    (st.length - 1).times do |chunk|
-      puts ">>>> #{chunk+1} sized chunks"
-      do_test(st, chunk+1)
-    end
-
-    1000.times do
-      do_test(st, rand(st.length) + 1)
-    end
-    
+  t = Thread.new do
+    size = 100
+    puts ">>>> #{size} sized chunks"
+    do_test(st, size)
   end
 
-  sleep(1+rand)
+  t.abort_on_exception = true
+  threads << t
 end
 
-threads.each {|t| t.join}
+threads.each {|t|  t.join}