YUKI Hiroshi
null+****@clear*****
Mon Oct 7 16:40:30 JST 2013
YUKI Hiroshi 2013-10-07 16:40:30 +0900 (Mon, 07 Oct 2013) New Revision: 4e1f47139462a9214f9119689628c51a382dd22d https://github.com/droonga/http-benchmark/commit/4e1f47139462a9214f9119689628c51a382dd22d Message: Output result Modified files: lib/droonga/http-benchmark.rb Modified: lib/droonga/http-benchmark.rb (+53 -1) =================================================================== --- lib/droonga/http-benchmark.rb 2013-10-07 16:26:52 +0900 (141926b) +++ lib/droonga/http-benchmark.rb 2013-10-07 16:40:30 +0900 (6ca0b3f) @@ -38,6 +38,12 @@ class HttpBenchmark end def run + process_requests + analyze_results + end + + private + def process_requests requests_queue = Queue.new results_queue = Queue.new @@ -82,9 +88,55 @@ class HttpBenchmark @client_threads.each do |client_thread| client_thread.stop end + + @results = [] + while not results_queue.empty? + @results << results_queue.pop + end + end + + def analyze_results + total_n_requests =****@resul***** + http_statuses = {} + min_elapsed_time = @duration + max_elapsed_time = 0 + total_elapsed_time = 0 + + @results.each do |result| + http_statuses[result[:status]] ||= 0 + http_statuses[result[:status]] += 1 + + if result[:elapsed_time] < min_elapsed_time + min_elapsed_time = result[:elapsed_time] + end + if result[:elapsed_time] > max_elapsed_time + max_elapsed_time = result[:elapsed_time] + end + total_elapsed_time += result[:elapsed_time] + end + + http_status_percentages = [] + http_statuses.each do |status, n_results| + percentage = n_resulsts.to_f / total_n_requests * 100 + http_status_percentages << { :percentage => percentage, + :status => status } + end + http_status_percentages.sort! do |a, b| + (-1) * (a[:percentage] <=> b[:percentage]) + end + + puts "Total requests: #{total_n_requests} " + + "(#{total_n_requests / @duration} queries per second)" + puts "Status:" + http_status_percentages.each do |status| + puts " #{status[:status}: #{status[:percentage]} %" + end + puts "Elapsed time:" + puts " min: #{min_elapsed_time} sec" + puts " max: #{max_elapsed_time} sec" + puts " average: #{total_elapsed_time.to_f / total_elapsed_time} sec" end - private def populate_requests @requests = [] @current_request = 0 -------------- next part -------------- HTML����������������������������...Download