class Drnbench::HttpClient
Constants
- SUPPORTED_HTTP_METHODS
Attributes
results[R]
runner[R]
wait[R]
Public Class Methods
new(params)
click to toggle source
# File lib/drnbench/client/http.rb, line 29 def initialize(params) @runner = params[:runner] @config = params[:config] @count = 0 @id = @@count @@count += 1 @thread = nil end
Public Instance Methods
run()
click to toggle source
# File lib/drnbench/client/http.rb, line 38 def run @thread = Thread.new do clients = {} start_time = Time.now loop do if @runner.empty? puts "WORNING: requests queue becomes empty! (#{Time.now - start_time} sec)" stop break end request = @runner.pop_request request = fixup_request(request) client_params = { :protocol => :http, :host => request["host"], :port => request["port"], :timeout => request["timeout"], } client = clients[client_params.to_s] ||= Droonga::Client.new(client_params) request["headers"] ||= {} request["headers"]["user-agent"] = "Ruby/#{RUBY_VERSION} Droonga::Benchmark::Runner::HttpClient" start_time = Time.now begin response = client.request(request) @runner.push_result( :request => request, :status => response.code, :elapsed_time => Time.now - start_time, :client => @id, :index => @count, ) rescue Timeout::Error @runner.push_result( :request => request, :status => "0", :elapsed_time => Time.now - start_time, :client => @id, :index => @count, ) end @count += 1 sleep @config.wait end end self end
running?()
click to toggle source
# File lib/drnbench/client/http.rb, line 95 def running? not @thread.nil? end
stop()
click to toggle source
# File lib/drnbench/client/http.rb, line 88 def stop return unless @thread @thread.exit @thread = nil end
Private Instance Methods
fixup_request(request)
click to toggle source
# File lib/drnbench/client/http.rb, line 100 def fixup_request(request) request["host"] ||= @config.default_host request["port"] ||= @config.default_port request["path"] ||= @config.default_path request["method"] ||= @config.default_method request["method"] = request["method"].upcase unless SUPPORTED_HTTP_METHODS.include?(request["method"]) request["method"] = "GET" end request["timeout"] ||= @config.default_timeout request end