aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorNick Sieger <nick@nicksieger.com>2008-08-07 01:27:40 -0700
committerNick Sieger <nick@nicksieger.com>2008-08-29 14:12:11 -0500
commitfe575dd4a9f0fa0e71a89fae9f4a951a9fb36058 (patch)
treebeffe2d6830b32cf9b10050adaffb812c9140301 /activerecord/test/cases
parent82fcd9d85fe245e8041f8d375175dde13688fce4 (diff)
downloadrails-fe575dd4a9f0fa0e71a89fae9f4a951a9fb36058.tar.gz
rails-fe575dd4a9f0fa0e71a89fae9f4a951a9fb36058.tar.bz2
rails-fe575dd4a9f0fa0e71a89fae9f4a951a9fb36058.zip
Nearing the finish line. Initial fixed-size connection pool implemented, more docs
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/threaded_connections_test.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/activerecord/test/cases/threaded_connections_test.rb b/activerecord/test/cases/threaded_connections_test.rb
index 3f88f79189..3abe9aea56 100644
--- a/activerecord/test/cases/threaded_connections_test.rb
+++ b/activerecord/test/cases/threaded_connections_test.rb
@@ -40,4 +40,40 @@ unless %w(FrontBase).include? ActiveRecord::Base.connection.adapter_name
assert_equal @connections.length, 5
end
end
+
+ class PooledConnectionsTest < ActiveRecord::TestCase
+ def setup
+ @connection = ActiveRecord::Base.remove_connection
+ @connections = []
+ @allow_concurrency = ActiveRecord::Base.allow_concurrency
+ ActiveRecord::Base.allow_concurrency = true
+ end
+
+ def teardown
+ ActiveRecord::Base.clear_all_connections!
+ ActiveRecord::Base.allow_concurrency = @allow_concurrency
+ ActiveRecord::Base.establish_connection(@connection)
+ end
+
+ def gather_connections
+ ActiveRecord::Base.establish_connection(@connection.merge({:pool => 2, :wait_timeout => 0.3}))
+ @timed_out = 0
+
+ 4.times do
+ Thread.new do
+ begin
+ @connections << ActiveRecord::Base.connection_pool.checkout
+ rescue ActiveRecord::ConnectionTimeoutError
+ @timed_out += 1
+ end
+ end.join
+ end
+ end
+
+ def test_threaded_connections
+ gather_connections
+ assert_equal @connections.length, 2
+ assert_equal @timed_out, 2
+ end
+ end
end