aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/threaded_connections_test.rb
diff options
context:
space:
mode:
authorNick Sieger <nick@nicksieger.com>2008-08-07 08:33:42 -0700
committerNick Sieger <nick@nicksieger.com>2008-08-29 14:12:11 -0500
commit3ce64d4f1608330072e1959a10f9b84205baebfa (patch)
treec44dd05461087d99fbe99ea47def85a7340cd696 /activerecord/test/cases/threaded_connections_test.rb
parentfe575dd4a9f0fa0e71a89fae9f4a951a9fb36058 (diff)
downloadrails-3ce64d4f1608330072e1959a10f9b84205baebfa.tar.gz
rails-3ce64d4f1608330072e1959a10f9b84205baebfa.tar.bz2
rails-3ce64d4f1608330072e1959a10f9b84205baebfa.zip
Fix checkin method, add a couple more tests
Diffstat (limited to 'activerecord/test/cases/threaded_connections_test.rb')
-rw-r--r--activerecord/test/cases/threaded_connections_test.rb38
1 files changed, 34 insertions, 4 deletions
diff --git a/activerecord/test/cases/threaded_connections_test.rb b/activerecord/test/cases/threaded_connections_test.rb
index 3abe9aea56..a9d82037bc 100644
--- a/activerecord/test/cases/threaded_connections_test.rb
+++ b/activerecord/test/cases/threaded_connections_test.rb
@@ -44,7 +44,6 @@ unless %w(FrontBase).include? ActiveRecord::Base.connection.adapter_name
class PooledConnectionsTest < ActiveRecord::TestCase
def setup
@connection = ActiveRecord::Base.remove_connection
- @connections = []
@allow_concurrency = ActiveRecord::Base.allow_concurrency
ActiveRecord::Base.allow_concurrency = true
end
@@ -55,8 +54,9 @@ unless %w(FrontBase).include? ActiveRecord::Base.connection.adapter_name
ActiveRecord::Base.establish_connection(@connection)
end
- def gather_connections
+ def checkout_connections
ActiveRecord::Base.establish_connection(@connection.merge({:pool => 2, :wait_timeout => 0.3}))
+ @connections = []
@timed_out = 0
4.times do
@@ -70,10 +70,40 @@ unless %w(FrontBase).include? ActiveRecord::Base.connection.adapter_name
end
end
- def test_threaded_connections
- gather_connections
+ def test_pooled_connection_checkout
+ checkout_connections
assert_equal @connections.length, 2
assert_equal @timed_out, 2
end
+
+ def checkout_checkin_connections(pool_size, threads)
+ ActiveRecord::Base.establish_connection(@connection.merge({:pool => pool_size, :wait_timeout => 0.5}))
+ @connection_count = 0
+ @timed_out = 0
+ threads.times do
+ Thread.new do
+ begin
+ conn = ActiveRecord::Base.connection_pool.checkout
+ sleep 0.1
+ ActiveRecord::Base.connection_pool.checkin conn
+ @connection_count += 1
+ rescue ActiveRecord::ConnectionTimeoutError
+ @timed_out += 1
+ end
+ end.join
+ end
+ end
+
+ def test_pooled_connection_checkin_one
+ checkout_checkin_connections 1, 2
+ assert_equal 2, @connection_count
+ assert_equal 0, @timed_out
+ end
+
+ def test_pooled_connection_checkin_two
+ checkout_checkin_connections 2, 3
+ assert_equal 3, @connection_count
+ assert_equal 0, @timed_out
+ end
end
end