about summary refs log tree commit homepage
path: root/test/benchmark/response.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/benchmark/response.rb')
-rw-r--r--test/benchmark/response.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/benchmark/response.rb b/test/benchmark/response.rb
new file mode 100644
index 0000000..95291f1
--- /dev/null
+++ b/test/benchmark/response.rb
@@ -0,0 +1,29 @@
+require 'benchmark'
+require 'unicorn'
+
+class NullWriter
+  def syswrite(buf); buf.size; end
+  def close; end
+end
+
+include Unicorn
+
+socket = NullWriter.new
+bs = ENV['bs'] ? ENV['bs'].to_i : 4096
+count = ENV['count'] ? ENV['count'].to_i : 1
+slice = (' ' * bs).freeze
+body = (1..count).map { slice }.freeze
+hdr = {
+  'Content-Length' => bs * count,
+  'Content-Type' => 'text/plain'.freeze
+}.freeze
+response = [ 200, hdr, body ].freeze
+
+nr = ENV['nr'] ? ENV['nr'].to_i : 100000
+Benchmark.bmbm do |x|
+  x.report do
+    for i in 1..nr
+      HttpResponse.write(socket.dup, response)
+    end
+  end
+end