Ensure request is sent even if ebb_client_body_write isn't called
[ebb.git] / benchmark / results
blob9582f280d1a76ccb8dd853df894021c4ab58318a
1 #!/usr/bin/env ruby
2 # supply the benchmark dump file as an argumetn to this program
3 require 'rubygems'
4 require 'google_chart'
5 require 'server_test'
7 class Array
8 def max
9 inject(first) { |m, i| i > m ? i : m }
10 end
12 def min
13 inject(first) { |m, i| i < m ? i : m }
14 end
15 end
19 colors = %w{F74343 444130 7DA478 E4AC3D 1F479E}
20 data_x = []
21 data_y = []
22 results = ServerTestResults.open(ARGV[0])
24 response_chart = GoogleChart::LineChart.new('500x300', Time.now.strftime('%Y.%m.%d'), true)
25 servers = results.servers.sort_by do |x,y|
26 results.data(x).map { |d| d[1] }.mean
27 end.reverse
29 cmap = {}
30 results.servers.sort.each { |x| cmap[x] = colors.shift }
32 servers.each do |server|
33 data = results.data(server).sort
34 data_x += data.map { |d| d[0] }
35 data_y += data.map { |d| d[1] }
36 end
38 servers.each do |server|
39 data = results.data(server).sort
40 data.map! { |d| [d[0]-data_x.min, d[1]-data_y.min]}
41 response_chart.data(server, data, cmap[server])
42 end
44 label = case results.benchmark
45 when "response_size"
46 "kilobytes served"
47 when "wait_fib", "concurrency"
48 "concurrency"
49 when "post_size"
50 "kilobytes uploaded"
51 when "wait", "wait_fib"
52 "seconds waited every 10 requests"
53 end
55 response_chart.axis(:y, :range => [data_y.min,data_y.max])
56 response_chart.axis(:y, :labels => ['req/s'], :positions => [50])
57 response_chart.axis(:x, :range => [data_x.min,data_x.max])
58 response_chart.axis(:x, :labels => [label], :positions => [50])
59 puts response_chart.to_url