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.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/trickletest.rb b/tools/trickletest.rb
new file mode 100644
index 0000000..cf3999b
--- /dev/null
+++ b/tools/trickletest.rb
@@ -0,0 +1,37 @@
+require 'socket'
+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
+  end
+  s.close
+end
+
+
+st = "GET / HTTP/1.1\r\nHost: www.zedshaw.com\r\nContent-Type: text/plain\r\n\r\n"
+
+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
+    
+  end
+
+  sleep(1+rand)
+end
+
+threads.each {|t| t.join}