ry / ebb fork watch download tarball
public
Description: web server
Homepage: http://ebb.rubyforge.org
Clone URL: git://github.com/ry/ebb.git
ryah (author)
Mon Mar 24 11:28:01 -0700 2008
commit  573814245209b423878a0011ef40aa674e7c2c10
tree    fa863d21e5c371d675e62f483e6a008c98a56230
parent  f278ac2badf0c6e3a8f7c2572217cd38e7780f44
ebb / benchmark / results
100755 60 lines (48 sloc) 1.465 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env ruby
# supply the benchmark dump file as an argumetn to this program
require 'rubygems'
require 'google_chart'
require 'server_test'
 
class Array
  def max
    inject(first) { |m, i| i > m ? i : m }
  end
  
  def min
    inject(first) { |m, i| i < m ? i : m }
  end
end
 
 
 
colors = %w{F74343 444130 7DA478 E4AC3D 1F479E}
data_x = []
data_y = []
results = ServerTestResults.open(ARGV[0])
 
response_chart = GoogleChart::LineChart.new('500x300', Time.now.strftime('%Y.%m.%d'), true)
servers = results.servers.sort_by do |x,y|
  results.data(x).map { |d| d[1] }.mean
end.reverse
 
cmap = {}
results.servers.sort.each { |x| cmap[x] = colors.shift }
 
servers.each do |server|
  data = results.data(server).sort
  data_x += data.map { |d| d[0] }
  data_y += data.map { |d| d[1] }
end
 
servers.each do |server|
  data = results.data(server).sort
  data.map! { |d| [d[0]-data_x.min, d[1]-data_y.min]}
  response_chart.data(server, data, cmap[server])
end
 
label = case results.benchmark
when "response_size"
  "kilobytes served"
when "wait_fib", "concurrency"
  "concurrency"
when "post_size"
  "kilobytes uploaded"
when "wait", "wait_fib"
  "seconds waited every 10 requests"
end
 
response_chart.axis(:y, :range => [data_y.min,data_y.max])
response_chart.axis(:y, :labels => ['req/s'], :positions => [50])
response_chart.axis(:x, :range => [data_x.min,data_x.max])
response_chart.axis(:x, :labels => [label], :positions => [50])
puts response_chart.to_url