From 41220d846bbe57c6b50c0a86c4f86030f6d14b05 Mon Sep 17 00:00:00 2001 From: evanweaver Date: Wed, 20 Feb 2008 06:26:33 +0000 Subject: Move tools/trickletest into test/tools. git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/branches/stable_1-1@974 19e92222-5c0b-0410-8929-a290d50e31e9 --- test/tools/trickletest.rb | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test/tools/trickletest.rb 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} -- cgit v1.2.3-24-ge0c7