roadrunner 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +3 -0
- data/README +3 -0
- data/Rakefile +41 -0
- data/bin/controller.rb +76 -0
- data/bin/hostmgr.rb +69 -0
- data/bin/nbd_prepare.sh +88 -0
- data/conf/servers.yaml +29 -0
- data/controller/dd.sh +92 -0
- data/controller/ioperf.rb +108 -0
- data/controller/mysql.rb +74 -0
- data/controller/mysql.sh +9 -0
- data/controller/svn.sh +49 -0
- data/controller/wrap.rb +23 -0
- data/lib/action.rb +14 -0
- data/lib/db.rb +51 -0
- data/lib/ended.rb +14 -0
- data/lib/init.rb +14 -0
- data/lib/model.rb +10 -0
- data/lib/report.rb +100 -0
- data/lib/roadrunner.rb +122 -0
- data/lib/rrhelper.rb +25 -0
- data/lib/rrmonitor.rb +174 -0
- data/lib/run.rb +113 -0
- data/log/dd.log +129 -0
- data/log/log.rb +17 -0
- data/log/stdout.log +4 -0
- data/log/stdout.log.20100421 +0 -0
- data/log/svn.log +502 -0
- data/test/baidu.rb +100 -0
- data/test/blog.rb +100 -0
- data/test/db/development.sqlite3 +0 -0
- data/test/download_processes.rb +38 -0
- data/test/fibonacci.rb +27 -0
- data/test/get163.rb +38 -0
- data/test/get19Lou.rb +39 -0
- data/test/getHawaii.rb +95 -0
- data/test/httpclient-rfuzz-vs-httparty.rb +31 -0
- data/test/mysql_processes.rb +66 -0
- data/test/pi.rb +37 -0
- data/test/pi_db.rb +41 -0
- data/test/pi_monitor.rb +45 -0
- data/test/prime.rb +33 -0
- data/test/prime_p.rb +36 -0
- data/test/test_db.rb +29 -0
- data/test/vbd_kv.rb +123 -0
- metadata +100 -0
data/test/baidu.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'roadrunner'
|
4
|
+
# => I'll use the Httparty lib to make http request
|
5
|
+
# => as the LR method LoadRunner#web_url() and
|
6
|
+
# => LoadRunner#web_submit_data() and LoadRunner#web_custom_request()
|
7
|
+
require 'httparty'
|
8
|
+
|
9
|
+
# => if one of RoadRunner.new's argument is block
|
10
|
+
# => then the database connection will be established
|
11
|
+
# => and the below method could be used:
|
12
|
+
# => RoadRunner#save_report()
|
13
|
+
|
14
|
+
# => IMPORTANT:
|
15
|
+
# => if a block is given to RoadRunner#new
|
16
|
+
# => make sure there is exist the below three tables in the target DATABASE:
|
17
|
+
# => scenarios transactions records
|
18
|
+
# => and the three tables is defined in db.rb,
|
19
|
+
# => otherwise if the three tables does not exist in the target DATABASE,
|
20
|
+
# => Roadrunner will auto create the three tables.
|
21
|
+
|
22
|
+
baidu=RoadRunner.new do |session|
|
23
|
+
{:adapter=>"mysql",
|
24
|
+
:encoding=>"utf8",
|
25
|
+
:database=>"dpmp",
|
26
|
+
:username=>"root",
|
27
|
+
:password=>"alisoft",
|
28
|
+
:host=>"10.2.226.133"}
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# => RoadRunner#mode could be set as such value:
|
33
|
+
# => 'thread'
|
34
|
+
# => 'sequence' or other string is same.
|
35
|
+
# => when thread mode is set,
|
36
|
+
# => the RoadRunner#action will run as thread,
|
37
|
+
# => and main thread will fork RoadRunner#users threads to run every action block
|
38
|
+
#baidu.mode = 'thread'
|
39
|
+
|
40
|
+
baidu.init do
|
41
|
+
# RoadRunner#users : the concurrency user do the action.
|
42
|
+
# RoadRunner#iterations : every user execute the action such times
|
43
|
+
baidu.users,baidu.iterations=4,25
|
44
|
+
end
|
45
|
+
|
46
|
+
# => RoadRunner#any_other_method()
|
47
|
+
# => if any_other_method() is not exsit in RoadRunner#methods
|
48
|
+
# => the RoadRunner#any_other_method(){} will be dealed as RoadRunner#transaction('any_other_method'){}
|
49
|
+
# => and the important is:
|
50
|
+
# => the block of RoadRunner#transaction('any_other_method'){}
|
51
|
+
# => the value of the last expression in the block
|
52
|
+
# => will determin this transaction's current action is pass or not!!!
|
53
|
+
# =>
|
54
|
+
# => status's value is:
|
55
|
+
# => 0=>success
|
56
|
+
# => -1=>faile
|
57
|
+
# => ruby code as below:
|
58
|
+
# => case status
|
59
|
+
# => when false,'false','-1',-1 then status = -1
|
60
|
+
# => else status = 0
|
61
|
+
# => end
|
62
|
+
baidu.action do
|
63
|
+
baidu.query do
|
64
|
+
resp = HTTParty.get('http://www.baidu.com/s?wd=charlescui')
|
65
|
+
# => check request header if contain the certain key words
|
66
|
+
# => same as the LR method LoadRunner#web_reg_find("Search=Headers")
|
67
|
+
#resp.headers.inspect.include? 'Apache'
|
68
|
+
end
|
69
|
+
# => Log4r is integrade in the RoadRunner and you could use it as below.
|
70
|
+
# => RoadRunner#log.debug
|
71
|
+
# => RoadRunner#log.info
|
72
|
+
# => RoadRunner#log.warn
|
73
|
+
# => RoadRunner#log.error
|
74
|
+
# => RoadRunner#log.fatal
|
75
|
+
baidu.image do
|
76
|
+
resp = HTTParty.get('http://image.baidu.com/i?tn=baiduimage&ct=201326592&cl=2&lm=-1&pv=&word=girl&z=0')
|
77
|
+
# => check request body
|
78
|
+
# => same as the LR method LoadRunner#web_reg_find()
|
79
|
+
#resp.body.include? 'CalendarPopup'
|
80
|
+
end
|
81
|
+
baidu.mp3 do
|
82
|
+
resp = HTTParty.get('http://mp3.baidu.com/m?f=ms&rn=&tn=baidump3&ct=134217728&word=anny&lm=-1')
|
83
|
+
# => check request body
|
84
|
+
# => same as the LR method LoadRunner#web_reg_find()
|
85
|
+
#resp.body.include? 'CalendarPopup'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# => RoadRunner#run
|
90
|
+
# => this method will execute the RoadRunner script
|
91
|
+
# => the performance will start.
|
92
|
+
baidu.run
|
93
|
+
# => RoadRunner#report
|
94
|
+
# => this method will output the report to the STDOUT
|
95
|
+
baidu.report
|
96
|
+
# => RoadRunner#save_report
|
97
|
+
# => this method will save the report to database if the database connection is established
|
98
|
+
# => :script is one of the arguments
|
99
|
+
# => if the :script is set and the value of :script is a path,the file's content of the path will be saved in database.
|
100
|
+
baidu.save_report(:name=>"baiduQueryImageMP3",:script=>__FILE__)
|
data/test/blog.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'roadrunner'
|
4
|
+
# => I'll use the Httparty lib to make http request
|
5
|
+
# => as the LR method LoadRunner#web_url() and
|
6
|
+
# => LoadRunner#web_submit_data() and LoadRunner#web_custom_request()
|
7
|
+
require 'httparty'
|
8
|
+
|
9
|
+
# => if one of RoadRunner.new's argument is block
|
10
|
+
# => then the database connection will be established
|
11
|
+
# => and the below method could be used:
|
12
|
+
# => RoadRunner#save_report()
|
13
|
+
|
14
|
+
# => IMPORTANT:
|
15
|
+
# => if a block is given to RoadRunner#new
|
16
|
+
# => make sure there is exist the below three tables in the target DATABASE:
|
17
|
+
# => scenarios transactions records
|
18
|
+
# => and the three tables is defined in db.rb,
|
19
|
+
# => otherwise if the three tables does not exist in the target DATABASE,
|
20
|
+
# => Roadrunner will auto create the three tables.
|
21
|
+
|
22
|
+
blog=RoadRunner.new do |session|
|
23
|
+
{:adapter=>"mysql",
|
24
|
+
:encoding=>"utf8",
|
25
|
+
:database=>"dpmp",
|
26
|
+
:username=>"root",
|
27
|
+
:password=>"alisoft",
|
28
|
+
:host=>"10.2.226.133"}
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# => RoadRunner#mode could be set as such value:
|
33
|
+
# => 'thread'
|
34
|
+
# => 'sequence' or other string is same.
|
35
|
+
# => when thread mode is set,
|
36
|
+
# => the RoadRunner#action will run as thread,
|
37
|
+
# => and main thread will fork RoadRunner#users threads to run every action block
|
38
|
+
#blog.mode = 'thread'
|
39
|
+
|
40
|
+
blog.init do
|
41
|
+
# RoadRunner#users : the concurrency user do the action.
|
42
|
+
# RoadRunner#iterations : every user execute the action such times
|
43
|
+
blog.users,blog.iterations=2,25
|
44
|
+
end
|
45
|
+
|
46
|
+
# => RoadRunner#any_other_method()
|
47
|
+
# => if any_other_method() is not exsit in RoadRunner#methods
|
48
|
+
# => the RoadRunner#any_other_method(){} will be dealed as RoadRunner#transaction('any_other_method'){}
|
49
|
+
# => and the important is:
|
50
|
+
# => the block of RoadRunner#transaction('any_other_method'){}
|
51
|
+
# => the value of the last expression in the block
|
52
|
+
# => will determin this transaction's current action is pass or not!!!
|
53
|
+
# =>
|
54
|
+
# => status's value is:
|
55
|
+
# => 0=>success
|
56
|
+
# => -1=>faile
|
57
|
+
# => ruby code as below:
|
58
|
+
# => case status
|
59
|
+
# => when false,'false','-1',-1 then status = -1
|
60
|
+
# => else status = 0
|
61
|
+
# => end
|
62
|
+
blog.action do
|
63
|
+
blog.homepage do
|
64
|
+
resp = HTTParty.get('http://charlescui.javaeye.com')
|
65
|
+
# => check request header if contain the certain key words
|
66
|
+
# => same as the LR method LoadRunner#web_reg_find("Search=Headers")
|
67
|
+
#resp.headers.inspect.include? 'Apache'
|
68
|
+
end
|
69
|
+
# => Log4r is integrade in the RoadRunner and you could use it as below.
|
70
|
+
# => RoadRunner#log.debug
|
71
|
+
# => RoadRunner#log.info
|
72
|
+
# => RoadRunner#log.warn
|
73
|
+
# => RoadRunner#log.error
|
74
|
+
# => RoadRunner#log.fatal
|
75
|
+
blog.guest_book do
|
76
|
+
resp = HTTParty.get('http://charlescui.javaeye.com/blog/guest_book')
|
77
|
+
# => check request body
|
78
|
+
# => same as the LR method LoadRunner#web_reg_find()
|
79
|
+
#resp.body.include? 'CalendarPopup'
|
80
|
+
end
|
81
|
+
blog.album do
|
82
|
+
resp = HTTParty.get('http://charlescui.javaeye.com/blog/album')
|
83
|
+
# => check request body
|
84
|
+
# => same as the LR method LoadRunner#web_reg_find()
|
85
|
+
#resp.body.include? 'CalendarPopup'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# => RoadRunner#run
|
90
|
+
# => this method will execute the RoadRunner script
|
91
|
+
# => the performance will start.
|
92
|
+
blog.run
|
93
|
+
# => RoadRunner#report
|
94
|
+
# => this method will output the report to the STDOUT
|
95
|
+
blog.report
|
96
|
+
# => RoadRunner#save_report
|
97
|
+
# => this method will save the report to database if the database connection is established
|
98
|
+
# => :script is one of the arguments
|
99
|
+
# => if the :script is set and the value of :script is a path,the file's content of the path will be saved in database.
|
100
|
+
blog.save_report(:name=>"blogHomeGuestBookAlbum",:script=>__FILE__)
|
Binary file
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
4
|
+
|
5
|
+
require 'roadrunner'
|
6
|
+
|
7
|
+
dl=RoadRunner.new
|
8
|
+
|
9
|
+
=begin
|
10
|
+
RoadRunner::mode =>
|
11
|
+
/thread/,/t/
|
12
|
+
/process/,/p/
|
13
|
+
else.
|
14
|
+
Defined in run.rb
|
15
|
+
当mode为进程的时候,RoadRunner将产生最真实的压力
|
16
|
+
=end
|
17
|
+
|
18
|
+
dl.mode='p'
|
19
|
+
|
20
|
+
dl.init do
|
21
|
+
# users决定同时有多少并发用户一起执行action
|
22
|
+
# iterations决定每个用户执行多少次
|
23
|
+
dl.users,dl.iterations=5,10
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
dl.action do
|
28
|
+
sleep 10
|
29
|
+
%x{wget "http://dl_dir.qq.com/qqfile/qq/QQforMac/QQ_B1_606.dmg" 1>/dev/null 2>&1}
|
30
|
+
end
|
31
|
+
|
32
|
+
dl.ended do
|
33
|
+
end
|
34
|
+
|
35
|
+
dl.run
|
36
|
+
dl.report
|
37
|
+
|
38
|
+
p "Tps could get : RoadRunner::tps => #{dl.tps}"
|
data/test/fibonacci.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# 计算斐波那契数列
|
2
|
+
# Array.new(200)数组长度决定数列长度
|
3
|
+
|
4
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
5
|
+
|
6
|
+
require 'roadrunner'
|
7
|
+
|
8
|
+
rrfib=RoadRunner.new
|
9
|
+
|
10
|
+
rrfib.init do
|
11
|
+
rrfib.global[:x],rrfib.global[:y]=0,1
|
12
|
+
|
13
|
+
# users决定同时有多少并发用户一起执行action
|
14
|
+
# iterations决定每个用户执行多少次
|
15
|
+
rrfib.users,rrfib.iterations=10,100
|
16
|
+
end
|
17
|
+
|
18
|
+
rrfib.action do
|
19
|
+
rrfib.global[:fib]=Array.new(200) {|i| [0,1].include?(i) ? 1 : (rrfib.global[:x],rrfib.global[:y] = rrfib.global[:y],rrfib.global[:x]+rrfib.global[:y])&&(rrfib.global[:x]+rrfib.global[:y]) }
|
20
|
+
end
|
21
|
+
|
22
|
+
rrfib.ended do
|
23
|
+
#rrfib.global={}
|
24
|
+
end
|
25
|
+
|
26
|
+
rrfib.run
|
27
|
+
rrfib.report
|
data/test/get163.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'roadrunner'
|
4
|
+
require 'httparty'
|
5
|
+
|
6
|
+
get163=RoadRunner.new do |session|
|
7
|
+
session=
|
8
|
+
{:adapter=>"mysql",
|
9
|
+
:encoding=>"utf8",
|
10
|
+
:database=>"dpmp",
|
11
|
+
:username=>"root",
|
12
|
+
:password=>"alisoft",
|
13
|
+
:host=>"10.2.226.133"}
|
14
|
+
end
|
15
|
+
get163.mode = 'thread'
|
16
|
+
|
17
|
+
get163.init do
|
18
|
+
# users决定同时有多少并发用户一起执行action
|
19
|
+
# iterations决定每个用户执行多少次
|
20
|
+
get163.users,get163.iterations=10,100
|
21
|
+
end
|
22
|
+
|
23
|
+
get163.action do
|
24
|
+
get163.homepage do
|
25
|
+
resp = HTTParty.get('http://www.163.com')
|
26
|
+
# p resp.headers.inspect
|
27
|
+
true
|
28
|
+
end
|
29
|
+
get163.sports do
|
30
|
+
resp = HTTParty.get('http://sports.163.com/')
|
31
|
+
true
|
32
|
+
end
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
get163.run
|
37
|
+
get163.report
|
38
|
+
#get163.save_report(:name=>"Get163HomeAndSports")
|
data/test/get19Lou.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'roadrunner'
|
4
|
+
require 'httparty'
|
5
|
+
|
6
|
+
get19Lou=RoadRunner.new do |session|
|
7
|
+
session=
|
8
|
+
{:adapter=>"mysql",
|
9
|
+
:encoding=>"utf8",
|
10
|
+
:database=>"dpmp",
|
11
|
+
:username=>"root",
|
12
|
+
:password=>"alisoft",
|
13
|
+
:host=>"10.2.226.133"}
|
14
|
+
end
|
15
|
+
#get19Lou.mode = 'thread'
|
16
|
+
|
17
|
+
get19Lou.init do
|
18
|
+
# users决定同时有多少并发用户一起执行action
|
19
|
+
# iterations决定每个用户执行多少次
|
20
|
+
get19Lou.users,get19Lou.iterations=10,10
|
21
|
+
end
|
22
|
+
|
23
|
+
get19Lou.action do
|
24
|
+
get19Lou.homepage do
|
25
|
+
resp = HTTParty.get('http://19lou.com')
|
26
|
+
# => check request header if contain the certain key words
|
27
|
+
# (resp.headers.inspect.include? 'Apache')
|
28
|
+
end
|
29
|
+
get19Lou.auto do
|
30
|
+
resp = HTTParty.get('http://auto.19lou.com/')
|
31
|
+
# => check request body
|
32
|
+
# resp.body.include? '19lou'
|
33
|
+
end
|
34
|
+
true
|
35
|
+
end
|
36
|
+
|
37
|
+
get19Lou.run
|
38
|
+
get19Lou.report
|
39
|
+
get19Lou.save_report(:name=>"get19LouHomeAndSports2")
|
data/test/getHawaii.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'roadrunner'
|
4
|
+
# => I'll use the Httparty lib to make http request
|
5
|
+
# => as the LR method LoadRunner#web_url() and
|
6
|
+
# => LoadRunner#web_submit_data() and LoadRunner#web_custom_request()
|
7
|
+
require 'httparty'
|
8
|
+
|
9
|
+
# => if one of RoadRunner.new's argument is block
|
10
|
+
# => then the database connection will be established
|
11
|
+
# => and the below method could be used:
|
12
|
+
# => RoadRunner#save_report()
|
13
|
+
|
14
|
+
# => IMPORTANT:
|
15
|
+
# => if a block is given to RoadRunner#new
|
16
|
+
# => make sure there is exist the below three tables in the target DATABASE:
|
17
|
+
# => scenarios transactions records
|
18
|
+
# => and the three tables is defined in db.rb,
|
19
|
+
# => otherwise if the three tables does not exist in the target DATABASE,
|
20
|
+
# => Roadrunner will auto create the three tables.
|
21
|
+
|
22
|
+
getHawaii=RoadRunner.new
|
23
|
+
#do |session|
|
24
|
+
# {:adapter=>"mysql",
|
25
|
+
# :encoding=>"utf8",
|
26
|
+
# :database=>"dpmp",
|
27
|
+
# :username=>"root",
|
28
|
+
# :password=>"alisoft",
|
29
|
+
# :host=>"10.2.226.133"}
|
30
|
+
#end
|
31
|
+
|
32
|
+
# => RoadRunner#mode could be set as such value:
|
33
|
+
# => 'thread'
|
34
|
+
# => 'sequence' or other string is same.
|
35
|
+
# => when thread mode is set,
|
36
|
+
# => the RoadRunner#action will run as thread,
|
37
|
+
# => and main thread will fork RoadRunner#users threads to run every action block
|
38
|
+
#getHawaii.mode = 'thread'
|
39
|
+
|
40
|
+
getHawaii.init do
|
41
|
+
# users决定同时有多少并发用户一起执行action
|
42
|
+
# iterations决定每个用户执行多少次
|
43
|
+
getHawaii.users,getHawaii.iterations=2,1
|
44
|
+
end
|
45
|
+
|
46
|
+
# => RoadRunner#any_other_method()
|
47
|
+
# => if any_other_method() is not exsit in RoadRunner#methods
|
48
|
+
# => the RoadRunner#any_other_method(){} will be dealed as RoadRunner#transaction('any_other_method'){}
|
49
|
+
# => and the important is:
|
50
|
+
# => the block of RoadRunner#transaction('any_other_method'){}
|
51
|
+
# => the value of the last expression in the block
|
52
|
+
# => will determin this transaction's current action is pass or not!!!
|
53
|
+
# =>
|
54
|
+
# => status's value is:
|
55
|
+
# => 0=>success
|
56
|
+
# => -1=>faile
|
57
|
+
# => ruby code as below:
|
58
|
+
# => case status
|
59
|
+
# => when false,'false','-1',-1 then status = -1
|
60
|
+
# => else status = 0
|
61
|
+
# => end
|
62
|
+
getHawaii.action do
|
63
|
+
getHawaii.homepage do
|
64
|
+
resp = HTTParty.get('http://www.hawaii.com/')
|
65
|
+
# => check request header if contain the certain key words
|
66
|
+
# => same as the LR method LoadRunner#web_reg_find("Search=Headers")
|
67
|
+
resp.headers.inspect.include? 'Apache'
|
68
|
+
end
|
69
|
+
# => Log4r is integrade in the RoadRunner and you could use it as below.
|
70
|
+
# => RoadRunner#log.debug
|
71
|
+
# => RoadRunner#log.info
|
72
|
+
# => RoadRunner#log.warn
|
73
|
+
# => RoadRunner#log.error
|
74
|
+
# => RoadRunner#log.fatal
|
75
|
+
getHawaii.homepage2 do
|
76
|
+
resp = HTTParty.get('http://www.hawaii.com/')
|
77
|
+
# => check request body
|
78
|
+
# => same as the LR method LoadRunner#web_reg_find()
|
79
|
+
resp.body.include? 'CalendarPopup'
|
80
|
+
end
|
81
|
+
true
|
82
|
+
end
|
83
|
+
|
84
|
+
# => RoadRunner#run
|
85
|
+
# => this method will execute the RoadRunner script
|
86
|
+
# => the performance will start.
|
87
|
+
getHawaii.run
|
88
|
+
# => RoadRunner#report
|
89
|
+
# => this method will output the report to the STDOUT
|
90
|
+
getHawaii.report
|
91
|
+
# => RoadRunner#save_report
|
92
|
+
# => this method will save the report to database if the database connection is established
|
93
|
+
# => :script is one of the arguments
|
94
|
+
# => if the :script is set and the value of :script is a path,the file's content of the path will be saved in database.
|
95
|
+
getHawaii.save_report(:name=>"getHawaiiHomepage",:script=>__FILE__)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'roadrunner'
|
5
|
+
require 'rfuzz/client'
|
6
|
+
require 'httparty'
|
7
|
+
|
8
|
+
rclient=RoadRunner.new
|
9
|
+
#client.mode = 'thread'
|
10
|
+
|
11
|
+
rclient.init do
|
12
|
+
# users决定同时有多少并发用户一起执行action
|
13
|
+
# iterations决定每个用户执行多少次
|
14
|
+
@rc = RFuzz::HttpClient.new('10.2.226.132', 6080)
|
15
|
+
rclient.users,rclient.iterations=10,100
|
16
|
+
end
|
17
|
+
|
18
|
+
rclient.action do
|
19
|
+
@rc.get('/').http_body
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
rclient.run
|
24
|
+
rclient.report
|
25
|
+
client.save_report(:name=>"clientHomeAndSports")
|
26
|
+
|
27
|
+
hclient=RoadRunner.new
|
28
|
+
hclient.users,hclient.iterations=10,100
|
29
|
+
hclient.action{resp = HTTParty.get('http://10.2.226.132:6080')}
|
30
|
+
hclient.run
|
31
|
+
hclient.report
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
4
|
+
|
5
|
+
require 'roadrunner'
|
6
|
+
|
7
|
+
require 'rubygems'
|
8
|
+
require 'activerecord'
|
9
|
+
require 'benchmark'
|
10
|
+
require 'logger'
|
11
|
+
require 'pp'
|
12
|
+
|
13
|
+
mysql=RoadRunner.new
|
14
|
+
|
15
|
+
=begin
|
16
|
+
RoadRunner::mode =>
|
17
|
+
/thread/,/t/
|
18
|
+
/process/,/p/
|
19
|
+
else.
|
20
|
+
Defined in run.rb
|
21
|
+
当mode为进程的时候,RoadRunner将产生最真实的压力
|
22
|
+
=end
|
23
|
+
|
24
|
+
mysql.mode='p'
|
25
|
+
|
26
|
+
begin
|
27
|
+
ActiveRecord::Base.establish_connection(
|
28
|
+
:adapter =>"mysql",
|
29
|
+
:username => "houyi",
|
30
|
+
:password =>"111111",
|
31
|
+
:database => "SNS",
|
32
|
+
:host =>"10.250.6.30"
|
33
|
+
)
|
34
|
+
$log.info "mysql Connect Success."
|
35
|
+
rescue => e
|
36
|
+
$log.error "mysql Connect Failed!"
|
37
|
+
$log.error e.to_s
|
38
|
+
end
|
39
|
+
|
40
|
+
class RRData < ActiveRecord::Base
|
41
|
+
set_table_name "qa_posts"
|
42
|
+
# set_primary_key "ID"
|
43
|
+
end
|
44
|
+
|
45
|
+
mysql.init do
|
46
|
+
# users决定同时有多少并发用户一起执行action
|
47
|
+
# iterations决定每个用户执行多少次
|
48
|
+
mysql.users,mysql.iterations=100,10000
|
49
|
+
end
|
50
|
+
|
51
|
+
SQL=""
|
52
|
+
|
53
|
+
mysql.action do
|
54
|
+
# ts = Benchmark.measure{
|
55
|
+
RRData.find_by_sql(SQL)
|
56
|
+
# }
|
57
|
+
# mysql.log.error "RRData.find_by_sql #{SQL} ts => #{ts}"
|
58
|
+
end
|
59
|
+
|
60
|
+
mysql.ended do
|
61
|
+
end
|
62
|
+
|
63
|
+
mysql.run
|
64
|
+
mysql.report
|
65
|
+
|
66
|
+
p "Tps could get : RoadRunner::tps => #{mysql.tps}"
|
data/test/pi.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# 莱布尼兹公式计算圆周率
|
2
|
+
#rrpi.global[:deep]代表计算的深度
|
3
|
+
#深度越深,计算越精确,当然也越耗时
|
4
|
+
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
6
|
+
|
7
|
+
require 'roadrunner'
|
8
|
+
|
9
|
+
rrpi=RoadRunner.new
|
10
|
+
|
11
|
+
rrpi.init do
|
12
|
+
rrpi.global[:pi],rrpi.global[:deep]=0,100
|
13
|
+
|
14
|
+
# users决定同时有多少并发用户一起执行action
|
15
|
+
# iterations决定每个用户执行多少次
|
16
|
+
rrpi.users,rrpi.iterations=10,1000
|
17
|
+
end
|
18
|
+
|
19
|
+
rrpi.action do
|
20
|
+
|
21
|
+
# 新增加了iterationId和userId两个接口方法,
|
22
|
+
# 可以通过iterationId获得当前action执行到第一次
|
23
|
+
# 可以通过userId获得当前action执行用户的id
|
24
|
+
# puts rrpi.iterationId
|
25
|
+
# puts rrpi.userId
|
26
|
+
1.upto(rrpi.global[:deep]){|x|rrpi.global[:pi]+=((-1)**(x+1)*1.0/(x*2-1))}
|
27
|
+
end
|
28
|
+
|
29
|
+
rrpi.ended do
|
30
|
+
rrpi.global[:pi]*=4
|
31
|
+
#rrpi.global={}
|
32
|
+
end
|
33
|
+
|
34
|
+
rrpi.run
|
35
|
+
rrpi.report
|
36
|
+
|
37
|
+
p "Tps could get : RoadRunner::tps => #{rrpi.tps}"
|
data/test/pi_db.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# 莱布尼兹公式计算圆周率
|
2
|
+
#rrpi.global[:deep]代表计算的深度
|
3
|
+
#深度越深,计算越精确,当然也越耗时
|
4
|
+
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
6
|
+
|
7
|
+
require 'roadrunner'
|
8
|
+
|
9
|
+
#rrpi=RoadRunner.new(:out=>"#{File.join(File.dirname(__FILE__),'roadrunner_stdout.log')}")
|
10
|
+
|
11
|
+
rrpi=RoadRunner.new(:out=>"#{File.join(File.dirname(__FILE__),'roadrunner_stdout.log')}") do |session|
|
12
|
+
session[:adapter] = 'sqlite3'
|
13
|
+
session[:database] = File.join(File.dirname(__FILE__),'db','development.sqlite3')
|
14
|
+
end
|
15
|
+
|
16
|
+
rrpi.init do
|
17
|
+
rrpi.global[:pi],rrpi.global[:deep]=0,1000
|
18
|
+
|
19
|
+
# users决定同时有多少并发用户一起执行action
|
20
|
+
# iterations决定每个用户执行多少次
|
21
|
+
rrpi.users,rrpi.iterations=10,10
|
22
|
+
end
|
23
|
+
|
24
|
+
rrpi.action do
|
25
|
+
|
26
|
+
# 新增加了iterationId和userId两个接口方法,
|
27
|
+
# 可以通过iterationId获得当前action执行到第一次
|
28
|
+
# 可以通过userId获得当前action执行用户的id
|
29
|
+
# puts rrpi.iterationId
|
30
|
+
# puts rrpi.userId
|
31
|
+
1.upto(rrpi.global[:deep]){|x|rrpi.global[:pi]+=((-1)**(x+1)*1.0/(x*2-1))}
|
32
|
+
end
|
33
|
+
|
34
|
+
rrpi.ended do
|
35
|
+
rrpi.global[:pi]*=4
|
36
|
+
#rrpi.global={}
|
37
|
+
end
|
38
|
+
|
39
|
+
rrpi.run
|
40
|
+
rrpi.report
|
41
|
+
rrpi.save_report("pi_conputiong_perf_01")
|
data/test/pi_monitor.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# 莱布尼兹公式计算圆周率
|
4
|
+
#rrpi.global[:deep]代表计算的深度
|
5
|
+
#深度越深,计算越精确,当然也越耗时
|
6
|
+
|
7
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
8
|
+
|
9
|
+
require 'roadrunner'
|
10
|
+
|
11
|
+
rrpi=RoadRunner.new
|
12
|
+
|
13
|
+
rrpi.init do
|
14
|
+
rrpi.global[:pi],rrpi.global[:deep]=0,100
|
15
|
+
|
16
|
+
# users决定同时有多少并发用户一起执行action
|
17
|
+
# iterations决定每个用户执行多少次
|
18
|
+
rrpi.users,rrpi.iterations=10,1000
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
rrpi.action do
|
23
|
+
|
24
|
+
# 新增加了iterationId和userId两个接口方法,
|
25
|
+
# 可以通过iterationId获得当前action执行到第一次
|
26
|
+
# 可以通过userId获得当前action执行用户的id
|
27
|
+
# puts rrpi.iterationId
|
28
|
+
# puts rrpi.userId
|
29
|
+
1.upto(rrpi.global[:deep]){|x|rrpi.global[:pi]+=((-1)**(x+1)*1.0/(x*2-1))}
|
30
|
+
end
|
31
|
+
|
32
|
+
rrpi.ended do
|
33
|
+
rrpi.global[:pi]*=4
|
34
|
+
#rrpi.global={}
|
35
|
+
end
|
36
|
+
|
37
|
+
cmd=['ifstat','iostat 3','while((1>0));do sar -u -d 3 10; done','vmstat 3','while((1>0));do sar -u -n DEV 3 10; done']
|
38
|
+
|
39
|
+
RoadRunnerModule::RRMonitor.monit(File.join(File.dirname(__FILE__),'..','conf','servers.yaml'),rrpi.log,cmd,"Pi-Monitor-Performance"){
|
40
|
+
rrpi.run
|
41
|
+
}
|
42
|
+
|
43
|
+
rrpi.report
|
44
|
+
|
45
|
+
p "Tps could get : RoadRunner::tps => #{rrpi.tps}"
|