skaes-railsbench 0.9.4 → 0.9.5
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/lib/railsbench/railsbenchmark.rb +71 -21
- data/lib/railsbench/version.rb +1 -1
- metadata +2 -2
@@ -18,7 +18,13 @@ class RailsBenchmark
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def relative_url_root=(value)
|
21
|
-
ActionController::
|
21
|
+
if ActionController::Base.respond_to?(:relative_url_root=)
|
22
|
+
# rails 2.3
|
23
|
+
ActionController::Base.relative_url_root = value
|
24
|
+
else
|
25
|
+
# earlier railses
|
26
|
+
ActionController::AbstractRequest.relative_url_root = value
|
27
|
+
end
|
22
28
|
@relative_url_root = value
|
23
29
|
end
|
24
30
|
|
@@ -42,6 +48,16 @@ class RailsBenchmark
|
|
42
48
|
begin
|
43
49
|
require ENV['RAILS_ROOT'] + "/config/environment"
|
44
50
|
require 'dispatcher' # make edge rails happy
|
51
|
+
|
52
|
+
if Rails::VERSION::STRING >= "2.3"
|
53
|
+
require 'cgi/session'
|
54
|
+
CGI.class_eval <<-"end_eval"
|
55
|
+
def env_table
|
56
|
+
@env_table ||= ENV.to_hash
|
57
|
+
end
|
58
|
+
end_eval
|
59
|
+
end
|
60
|
+
|
45
61
|
rescue => e
|
46
62
|
$stderr.puts "failed to load application environment"
|
47
63
|
e.backtrace.each{|line| $stderr.puts line}
|
@@ -139,26 +155,60 @@ class RailsBenchmark
|
|
139
155
|
end
|
140
156
|
|
141
157
|
def establish_test_session
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
158
|
+
if Rails::VERSION::STRING >= "2.3"
|
159
|
+
session_options = ActionController::Base.session_options
|
160
|
+
# puts "the options: #{session_options.inspect}"
|
161
|
+
@session_id = ActiveSupport::SecureRandom.hex(16)
|
162
|
+
do_not_do_much = lambda do |env|
|
163
|
+
env["rack.session"] = @session_data
|
164
|
+
env["rack.session.options"] = {:id => @session_id}
|
165
|
+
[200, {}, ""]
|
166
|
+
end
|
167
|
+
@session_store = ActionController::Base.session_store.new(do_not_do_much, session_options)
|
168
|
+
@session_store.call({})
|
169
|
+
else
|
170
|
+
session_options = ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.stringify_keys
|
171
|
+
session_options = session_options.merge('new_session' => true)
|
172
|
+
@session = CGI::Session.new(Hash.new, session_options)
|
173
|
+
@session_data.each{ |k,v| @session[k] = v }
|
174
|
+
@session.update
|
175
|
+
@session_id = @session.session_id
|
176
|
+
end
|
148
177
|
end
|
149
178
|
|
150
179
|
def update_test_session_data(session_data)
|
180
|
+
# puts ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.inspect
|
151
181
|
dbman = ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:database_manager]
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
182
|
+
if dbman # before rails 2.3
|
183
|
+
old_session_data = dbman.new(@session).restore
|
184
|
+
# $stderr.puts old_session_data.inspect
|
185
|
+
new_session_data = old_session_data.merge(session_data || {})
|
186
|
+
new_session_data.each{ |k,v| @session[k] = v }
|
187
|
+
@session.update
|
188
|
+
else
|
189
|
+
session_options = ActionController::Base.session_options
|
190
|
+
merge_url_specific_session_data = lambda do |env|
|
191
|
+
old_session_data = env["rack.session"]
|
192
|
+
# $stderr.puts "data in old session: #{old_session_data.inspect}"
|
193
|
+
new_session_data = old_session_data.merge(session_data || {})
|
194
|
+
# $stderr.puts "data in new session: #{new_session_data.inspect}"
|
195
|
+
env["rack.session"] = new_session_data
|
196
|
+
[200, {}, ""]
|
197
|
+
end
|
198
|
+
@session_store.instance_eval { @app = merge_url_specific_session_data }
|
199
|
+
env = {}
|
200
|
+
env["HTTP_COOKIE"] = cookie
|
201
|
+
# debugger
|
202
|
+
@session_store.call(env)
|
203
|
+
end
|
157
204
|
end
|
158
205
|
|
159
206
|
def delete_test_session
|
160
|
-
|
161
|
-
@session
|
207
|
+
# no way to delete a session by going through the session adpater in rails 2.3
|
208
|
+
if @session
|
209
|
+
@session.delete
|
210
|
+
@session = nil
|
211
|
+
end
|
162
212
|
end
|
163
213
|
|
164
214
|
# can be redefined in subclasses to clean out test sessions
|
@@ -215,7 +265,7 @@ class RailsBenchmark
|
|
215
265
|
@urls.each do |entry|
|
216
266
|
error_exit "No uri given for benchmark entry: #{entry.inspect}" unless entry.uri
|
217
267
|
setup_request_env(entry)
|
218
|
-
Dispatcher.dispatch
|
268
|
+
Dispatcher.dispatch(CGI.new)
|
219
269
|
end
|
220
270
|
end
|
221
271
|
|
@@ -367,7 +417,7 @@ class RailsBenchmark
|
|
367
417
|
request_count = 0
|
368
418
|
n.times do
|
369
419
|
before_dispatch_hook(entry)
|
370
|
-
Dispatcher.dispatch
|
420
|
+
Dispatcher.dispatch(CGI.new)
|
371
421
|
if (request_count += 1) == gc_frequency
|
372
422
|
GC.enable; GC.start; GC.disable
|
373
423
|
request_count = 0
|
@@ -381,7 +431,7 @@ class RailsBenchmark
|
|
381
431
|
setup_request_env(entry)
|
382
432
|
n.times do
|
383
433
|
before_dispatch_hook(entry)
|
384
|
-
Dispatcher.dispatch
|
434
|
+
Dispatcher.dispatch(CGI.new)
|
385
435
|
end
|
386
436
|
end
|
387
437
|
end
|
@@ -398,7 +448,7 @@ class RailsBenchmark
|
|
398
448
|
GC.enable_stats if gc_stats
|
399
449
|
n.times do
|
400
450
|
before_dispatch_hook(entry)
|
401
|
-
Dispatcher.dispatch
|
451
|
+
Dispatcher.dispatch(CGI.new)
|
402
452
|
if (request_count += 1) == gc_freq
|
403
453
|
GC.enable; GC.start; GC.disable
|
404
454
|
request_count = 0
|
@@ -424,7 +474,7 @@ class RailsBenchmark
|
|
424
474
|
test.report(entry.name) do
|
425
475
|
n.times do
|
426
476
|
before_dispatch_hook(entry)
|
427
|
-
Dispatcher.dispatch
|
477
|
+
Dispatcher.dispatch(CGI.new)
|
428
478
|
end
|
429
479
|
end
|
430
480
|
end
|
@@ -446,7 +496,7 @@ class RailsBenchmark
|
|
446
496
|
urls.each do |entry|
|
447
497
|
setup_request_env(entry)
|
448
498
|
before_dispatch_hook(entry)
|
449
|
-
Dispatcher.dispatch
|
499
|
+
Dispatcher.dispatch(CGI.new)
|
450
500
|
end
|
451
501
|
end
|
452
502
|
end
|
@@ -469,7 +519,7 @@ class RailsBenchmark
|
|
469
519
|
urls.each do |entry|
|
470
520
|
setup_request_env(entry)
|
471
521
|
before_dispatch_hook(entry)
|
472
|
-
Dispatcher.dispatch
|
522
|
+
Dispatcher.dispatch(CGI.new)
|
473
523
|
if (request_count += 1) == gc_frequency
|
474
524
|
GC.enable; GC.start; GC.disable
|
475
525
|
request_count = 0
|
data/lib/railsbench/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skaes-railsbench
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Kaes
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-06-25 00:00:00 -07:00
|
13
13
|
default_executable: railsbench
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|