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/prime.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# 计算素数
|
2
|
+
#rrprime.global[:size]代表计算的素数数组的长度
|
3
|
+
|
4
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
5
|
+
|
6
|
+
require 'roadrunner'
|
7
|
+
|
8
|
+
rrprime=RoadRunner.new
|
9
|
+
|
10
|
+
rrprime.init do
|
11
|
+
|
12
|
+
# rrprime.global是一个存储全局变量的方法
|
13
|
+
# 任何数据类型都可以丢进去
|
14
|
+
# 在执行report方法时,rrprime.global中的数据会被打印到报告中
|
15
|
+
rrprime.global[:size]=1000
|
16
|
+
|
17
|
+
# users决定同时有多少并发用户一起执行action
|
18
|
+
# iterations决定每个用户执行多少次
|
19
|
+
rrprime.users,rrprime.iterations=10,100
|
20
|
+
end
|
21
|
+
|
22
|
+
rrprime.action do
|
23
|
+
|
24
|
+
# 得到素数数组
|
25
|
+
rrprime.global[:result]=(2..rrprime.global[:size]).inject([]) { |s, e| (s.map { |x| e % x }).include?(0) ? s : s << e }
|
26
|
+
end
|
27
|
+
|
28
|
+
rrprime.ended do
|
29
|
+
#rrprime.global={}
|
30
|
+
end
|
31
|
+
|
32
|
+
rrprime.run
|
33
|
+
rrprime.report
|
data/test/prime_p.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# 计算素数
|
2
|
+
#rrprime.global[:size]代表计算的素数数组的长度
|
3
|
+
|
4
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
5
|
+
|
6
|
+
require 'roadrunner'
|
7
|
+
|
8
|
+
rrprime=RoadRunner.new
|
9
|
+
|
10
|
+
rrprime.mode='p'
|
11
|
+
|
12
|
+
rrprime.init do
|
13
|
+
|
14
|
+
# rrprime.global是一个存储全局变量的方法
|
15
|
+
# 任何数据类型都可以丢进去
|
16
|
+
# 在执行report方法时,rrprime.global中的数据会被打印到报告中
|
17
|
+
rrprime.global[:size]=1000
|
18
|
+
|
19
|
+
# users决定同时有多少并发用户一起执行action
|
20
|
+
# iterations决定每个用户执行多少次
|
21
|
+
rrprime.users,rrprime.iterations=10,100
|
22
|
+
end
|
23
|
+
|
24
|
+
rrprime.action do
|
25
|
+
|
26
|
+
# 得到素数数组
|
27
|
+
rrprime.global[:result]=(2..rrprime.global[:size]).inject([]) { |s, e| (s.map { |x| e % x }).include?(0) ? s : s << e }
|
28
|
+
end
|
29
|
+
|
30
|
+
rrprime.a{p Time.now}
|
31
|
+
rrprime.b{p Time.now}
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
rrprime.run
|
36
|
+
rrprime.report
|
data/test/test_db.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'roadrunner'
|
5
|
+
require 'active_record'
|
6
|
+
require 'pp'
|
7
|
+
|
8
|
+
session = {:adapter=>'sqlite3',:database=>File.join(File.dirname(__FILE__),'db','development.sqlite3')}
|
9
|
+
|
10
|
+
ActiveRecord::Base.establish_connection(
|
11
|
+
session
|
12
|
+
)
|
13
|
+
|
14
|
+
class Scenario < ActiveRecord::Base
|
15
|
+
has_many :transactions
|
16
|
+
end
|
17
|
+
class Transaction < ActiveRecord::Base
|
18
|
+
belongs_to :scenario
|
19
|
+
has_many :records
|
20
|
+
end
|
21
|
+
class Record < ActiveRecord::Base
|
22
|
+
belongs_to :transaction
|
23
|
+
end
|
24
|
+
|
25
|
+
transaction = Transaction.new({:name=>'test_transaction01'})
|
26
|
+
r1 = Record.new
|
27
|
+
transaction.records << r1
|
28
|
+
r1.save!
|
29
|
+
transaction.save!
|
data/test/vbd_kv.rb
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require File.join(File.dirname(__FILE__),'..','lib','roadrunner')
|
3
|
+
|
4
|
+
#-----------------------------Argv prepare.--------------------------------#
|
5
|
+
|
6
|
+
def args(key)
|
7
|
+
ARGV.each_with_index do |arg, i|
|
8
|
+
return ARGV[i+1] if "-#{key}" == arg
|
9
|
+
end
|
10
|
+
nil
|
11
|
+
end
|
12
|
+
|
13
|
+
unless args('nbd')
|
14
|
+
p "[ruby ]#{$0} -nbd /dev/nbd[0-x][,/dev/nbd[0-x],/dev/nbd[0-x]]"
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
|
18
|
+
#-----------------------------Logger prepare.--------------------------------#
|
19
|
+
|
20
|
+
$log ||= Logger.new(STDOUT)
|
21
|
+
|
22
|
+
NBD=[]
|
23
|
+
|
24
|
+
args('nbd').split(',').each do |n|
|
25
|
+
NBD <<
|
26
|
+
begin
|
27
|
+
f=File.open(n,"rb+")
|
28
|
+
f.sync=true
|
29
|
+
f
|
30
|
+
rescue Exception => e
|
31
|
+
$log.error "Can't open #{args('nbd')}!"
|
32
|
+
exit -1
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
#--------------------------------VBD KV integration test---------------------------------#
|
37
|
+
|
38
|
+
class ValidateError < Exception;end
|
39
|
+
|
40
|
+
class Kv_vbd
|
41
|
+
class << self
|
42
|
+
def seq_read(nbd,fs)
|
43
|
+
begin
|
44
|
+
nbd.rewind# if nbd.eof?
|
45
|
+
|
46
|
+
loop {
|
47
|
+
tmp=rand(fs/10000)
|
48
|
+
# $log.debug("seq_read:reading #{tmp} bytes from #{nbd}")
|
49
|
+
tmp=nbd.sysread(tmp)
|
50
|
+
break if nbd.eof?
|
51
|
+
}
|
52
|
+
|
53
|
+
$log.info("seq_read done.#{fs} bytes read #{nbd}.")
|
54
|
+
rescue Exception => e
|
55
|
+
$log.error("#{nbd} read error!")
|
56
|
+
end
|
57
|
+
validate(nbd,fs)
|
58
|
+
end
|
59
|
+
|
60
|
+
def seq_write(nbd,fs)
|
61
|
+
begin
|
62
|
+
nbd.rewind# if nbd.eof?
|
63
|
+
|
64
|
+
bs=100
|
65
|
+
|
66
|
+
$log.debug("seq_read:writing #{bs} bytes into #{nbd}")
|
67
|
+
|
68
|
+
fs/bs.times {
|
69
|
+
nbd.syswrite('x'*bs)
|
70
|
+
}
|
71
|
+
|
72
|
+
signature(nbd,fs)
|
73
|
+
|
74
|
+
$log.info("seq_write done.#{fs} bytes write into #{nbd}.")
|
75
|
+
rescue Exception => e
|
76
|
+
$log.error("#{nbd} write error!")
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
def signature(nbd,fs)
|
82
|
+
nbd.seek(10, IO::SEEK_END)
|
83
|
+
nbd.syswrite('c')
|
84
|
+
|
85
|
+
nbd.seek(-10, IO::SEEK_END)
|
86
|
+
nbd.syswrite('c')
|
87
|
+
end
|
88
|
+
|
89
|
+
def validate(nbd,fs)
|
90
|
+
nbd.seek(10, IO::SEEK_END)
|
91
|
+
unless nbd.sysread(1) == 'c'
|
92
|
+
raise ValidateError,"expect File.seek(10, IO::SEEK_END) => 'c',actually get #{tmp}."
|
93
|
+
end
|
94
|
+
|
95
|
+
nbd.seek(rand(fs))
|
96
|
+
unless nbd.sysread(1) == 'x'
|
97
|
+
raise ValidateError,"expect File.seek(rand(fs)) => 'x',actually get #{tmp}."
|
98
|
+
end
|
99
|
+
|
100
|
+
nbd.seek(-10, IO::SEEK_END)
|
101
|
+
unless nbd.sysread(1) == 'c'
|
102
|
+
raise ValidateError,"expect File.seek(-10, IO::SEEK_END) => 'c',actually get #{tmp}."
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
rr=RoadRunner.new
|
111
|
+
rr.mode,rr.users,rr.iterations='p',NBD.size,1
|
112
|
+
|
113
|
+
['seq_read','seq_write'].each_with_index{|s,i|
|
114
|
+
ts_proc=proc{
|
115
|
+
Kv_vbd.send(s,NBD[rr.userId],File.size(NBD[rr.userId]))
|
116
|
+
}
|
117
|
+
rr.send(s,&ts_proc)
|
118
|
+
}
|
119
|
+
|
120
|
+
NBD.close
|
121
|
+
|
122
|
+
rr.run
|
123
|
+
rr.report
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: roadrunner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 4.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Charles Cui
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-04-22 00:00:00 +08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: roadrunner
|
17
|
+
email: zheng.cuizh@gmail.com
|
18
|
+
executables:
|
19
|
+
- controller.rb
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
- LICENSE
|
25
|
+
files:
|
26
|
+
- LICENSE
|
27
|
+
- README
|
28
|
+
- Rakefile
|
29
|
+
- bin/controller.rb
|
30
|
+
- bin/hostmgr.rb
|
31
|
+
- bin/nbd_prepare.sh
|
32
|
+
- lib/action.rb
|
33
|
+
- lib/db.rb
|
34
|
+
- lib/ended.rb
|
35
|
+
- lib/init.rb
|
36
|
+
- lib/model.rb
|
37
|
+
- lib/report.rb
|
38
|
+
- lib/roadrunner.rb
|
39
|
+
- lib/rrhelper.rb
|
40
|
+
- lib/rrmonitor.rb
|
41
|
+
- lib/run.rb
|
42
|
+
- conf/servers.yaml
|
43
|
+
- controller/dd.sh
|
44
|
+
- controller/ioperf.rb
|
45
|
+
- controller/mysql.rb
|
46
|
+
- controller/mysql.sh
|
47
|
+
- controller/svn.sh
|
48
|
+
- controller/wrap.rb
|
49
|
+
- log/dd.log
|
50
|
+
- log/log.rb
|
51
|
+
- log/stdout.log
|
52
|
+
- log/stdout.log.20100421
|
53
|
+
- log/svn.log
|
54
|
+
- test/baidu.rb
|
55
|
+
- test/blog.rb
|
56
|
+
- test/db/development.sqlite3
|
57
|
+
- test/download_processes.rb
|
58
|
+
- test/fibonacci.rb
|
59
|
+
- test/get163.rb
|
60
|
+
- test/get19Lou.rb
|
61
|
+
- test/getHawaii.rb
|
62
|
+
- test/httpclient-rfuzz-vs-httparty.rb
|
63
|
+
- test/mysql_processes.rb
|
64
|
+
- test/pi.rb
|
65
|
+
- test/pi_db.rb
|
66
|
+
- test/pi_monitor.rb
|
67
|
+
- test/prime.rb
|
68
|
+
- test/prime_p.rb
|
69
|
+
- test/test_db.rb
|
70
|
+
- test/vbd_kv.rb
|
71
|
+
has_rdoc: true
|
72
|
+
homepage:
|
73
|
+
licenses: []
|
74
|
+
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: "0"
|
85
|
+
version:
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: "0"
|
91
|
+
version:
|
92
|
+
requirements: []
|
93
|
+
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 1.3.5
|
96
|
+
signing_key:
|
97
|
+
specification_version: 3
|
98
|
+
summary: roadrunner
|
99
|
+
test_files: []
|
100
|
+
|