diff options
Diffstat (limited to 'tools/trickletest.rb')
-rw-r--r-- | tools/trickletest.rb | 48 |
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} |