tee_input: make interface more usable outside of Unicorn
[unicorn.git] / test / benchmark / response.rb
blobcb7397b6c58292a2c48648fb4506d0ef6abc0ec7
1 require 'benchmark'
2 require 'unicorn'
4 class NullWriter
5   def syswrite(buf); buf.size; end
6   alias write syswrite
7   def close; end
8 end
10 include Unicorn
12 socket = NullWriter.new
13 bs = ENV['bs'] ? ENV['bs'].to_i : 4096
14 count = ENV['count'] ? ENV['count'].to_i : 1
15 slice = (' ' * bs).freeze
16 body = (1..count).map { slice }.freeze
17 hdr = {
18   'Content-Length' => (bs * count).to_s.freeze,
19   'Content-Type' => 'text/plain'.freeze
20 }.freeze
21 response = [ 200, hdr, body ].freeze
23 nr = ENV['nr'] ? ENV['nr'].to_i : 100000
24 Benchmark.bmbm do |x|
25   x.report do
26     for i in 1..nr
27       HttpResponse.write(socket.dup, response)
28     end
29   end
30 end