3 require File
.dirname(__FILE__
) + "/server_test"
4 # supported servers: mongrel, emongrel, ebb, thin
5 # use another name an a already open port for anything else
6 usage
= "e.g. server_bench response_size ebb:4001 mongrel:4002 other:4003"
12 name
, port
= server
.split(':')
13 servers
<< ServerTest
.new(name
, port
)
17 'response_size' => [0.1,1,5,7,10,15,18,20,23,25,30,40,45,50].map
{ |i
|
19 [i
, "ab -t 3 -q -c 50 http://0.0.0.0:PORT/bytes/#{bytes}"]
21 'wait_fib' => [1,20,40,60,80,100].map
{ |c
|
22 [c
, "ab -t 3 -q -c #{c} http://0.0.0.0:PORT/periodical_activity/fibonacci/20"]
24 'post_size' => [0.1,1,5,7,10,15,18,20,23,25,30,35,37,40,45,50].map
{ |l
|
25 size
= (l
* 1024).to_i
26 fn
= "/tmp/ebb_post_trial_#{size}"
27 File
.open(fn
, 'w+') { |f
| f
.write("C"*size
) } unless FileTest
.exists
?(fn
)
28 [l
, "ab -t 6 -q -c 50 -p #{fn} http://0.0.0.0:PORT/test_post_length"]
30 'concurrency' => [1,2,5,10,20,30,50,75,100].map
{ |c
|
31 [c
, "ab -t 3 -c #{c} http://0.0.0.0:PORT/bytes/1"]
35 unless trials
.has_key
? benchmark
36 puts("must specify valid benchmark: #{trials.keys.join(" or ")}")
40 trap('INT') { exit(1) }
41 dumpfile
= "#{benchmark}.dump"
43 results
= ServerTestResults
.open(dumpfile
)
44 servers
.each
{ |s
| s
.start
}
46 trials
[benchmark
].rand_each
do |x
, cmd
|
47 servers
.rand_each
do |server
|
48 result
= server
.trial(cmd
)
55 result
[:benchmark] = benchmark
63 puts
"\n\nkilling servers"
64 servers
.each
{ |server
| server
.kill
}
65 results
.write(dumpfile
)