diff options
author | evanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9> | 2008-02-20 06:26:33 +0000 |
---|---|---|
committer | evanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9> | 2008-02-20 06:26:33 +0000 |
commit | 41220d846bbe57c6b50c0a86c4f86030f6d14b05 (patch) | |
tree | 10051204cbed495b2e469079850c3b427bf5ae91 /test | |
parent | 5a10ba13b2c2f56b8ffb0978ebb36ff26a7715e5 (diff) | |
download | unicorn-41220d846bbe57c6b50c0a86c4f86030f6d14b05.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/branches/stable_1-1@974 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'test')
-rw-r--r-- | test/tools/trickletest.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/tools/trickletest.rb b/test/tools/trickletest.rb new file mode 100644 index 0000000..e19ed71 --- /dev/null +++ b/test/tools/trickletest.rb @@ -0,0 +1,45 @@ +require 'socket' +require 'stringio' + +def do_test(st, chunk) + s = TCPSocket.new('127.0.0.1',ARGV[0].to_i); + req = StringIO.new(st) + 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 => e + STDERR.puts "ERROR: #{e}" + ensure + s.close + end +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}" + +puts "length: #{content.length}" + +threads = [] +ARGV[1].to_i.times do + t = Thread.new do + size = 100 + puts ">>>> #{size} sized chunks" + do_test(st, size) + end + + t.abort_on_exception = true + threads << t +end + +threads.each {|t| t.join} |