Description:
load test reads site_url from command line
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r315:faf1f66729ca - - 5 files changed: 26 inserted, 180 deleted

@@ -1,7 +1,7
1 1 How to call
2 2 ===========
3 3
4 4 Load test for front page:
5 5
6 - ruby runner.rb common_visitors.rb FirstPageViewer 10 -t 10
6 + ruby runner.rb common_visitors.rb FirstPageViewer 20 -t 10 --site_url=http://localhost/cafe
7 7
@@ -1,7 +1,8
1 - visitor "FirstPageViewer" do
2 - stores_cookies
1 + if !defined? VISITOR_OPTION_LIST
2 + VISITOR_OPTION_LIST = {}
3 + end
3 4
4 - site_url "http://localhost:3000"
5 -
5 + visitor "FirstPageViewer", VISITOR_OPTION_LIST do
6 + stores_cookies
6 7 get "/"
7 8 end
@@ -121,37 +121,47
121 121 end
122 122
123 123 ###########################
124 124 # MAIN
125 125 ###########################
126 126
127 127 if ARGV.length==0
128 128 show_usage
129 129 exit(0)
130 130 end
131 131
132 132 visitor_file = ARGV.shift
133 - require visitor_file
134 133
135 134 load_time = 60
136 135 dry_run = false
137 136
138 - #build visitor list
137 + #build visitor/option list
139 138 visitor_list = {}
139 + visitor_option_list = {}
140 140 while ARGV.length>0
141 141 key = ARGV.shift
142 142
143 143 case key
144 144 when '-d'
145 145 dry_run = true
146 146 when '-t'
147 147 num = ARGV.shift.to_i
148 148 load_time = num
149 149 else
150 + if key =~ /--(\w+)=(.*)/
151 + # options
152 + lm = Regexp.last_match
153 + visitor_option_list[lm[1]] = lm[2]
154 + else
155 + # new visitor
150 156 num = ARGV.shift.to_i
151 157 visitor_list[key] = num
152 158 end
153 159 end
160 + end
161 +
162 + VISITOR_OPTION_LIST = visitor_option_list
163 + require visitor_file
154 164
155 165 initialize_temp_dir
156 166 runner visitor_list, load_time, {:dry_run => dry_run}
157 167
@@ -111,24 +111,30
111 111 :url => url,
112 112 :params => Visitor.preprocess_param_hash(params) }
113 113 end
114 114
115 115 def self.post(url,params=nil,options=nil)
116 116 self.commands = [] if self.commands==nil
117 117 self.commands << { :command => :post,
118 118 :url => url,
119 119 :params => Visitor.preprocess_param_hash(params),
120 120 :options => options }
121 121 end
122 122
123 + def self.process_options(options)
124 + if options.has_key? "site_url"
125 + self.base_url = options["site_url"]
126 + end
127 + end
128 +
123 129 def substitute_id(st)
124 130 return st if !(st.is_a? String)
125 131 st.gsub(/(()|(\$))\$\{id\}/) do |s|
126 132 if s=="${id}"
127 133 @id.to_s
128 134 else
129 135 "${id}"
130 136 end
131 137 end
132 138 end
133 139
134 140 def encode_params(params)
@@ -261,25 +267,26
261 267 else
262 268 sd = 0
263 269 end
264 270
265 271 return {
266 272 :num_requested => num_requested,
267 273 :avg_request_time => average_request_time,
268 274 :std_dev => sd
269 275 }
270 276 end
271 277 end
272 278
273 - def visitor(cname,&blk)
279 + def visitor(cname,options={},&blk)
274 280 c = Class.new(Visitor)
275 281 begin
276 282 Object.const_set(cname,c)
277 283 rescue NameError
278 284 puts <<ERROR
279 285 Error on type #{cname}.
280 286 Type name should be capitalized and follow Ruby constant naming rule.
281 287 ERROR
282 288 exit(0)
283 289 end
290 + c.process_options(options)
284 291 c.instance_eval(&blk)
285 292 end
deleted file
You need to be logged in to leave comments. Login now