From 2a04110f266b6ccaf94aeeae224af578a9620fbd Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Thu, 30 Sep 2010 12:12:23 +0530 Subject: fix ruby 1.9 deadlock problem, fixes #5736 add connection pool tests --- activerecord/test/cases/connection_pool_test.rb | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/connection_pool_test.rb b/activerecord/test/cases/connection_pool_test.rb index 82b3c36ed2..f0ec5c751c 100644 --- a/activerecord/test/cases/connection_pool_test.rb +++ b/activerecord/test/cases/connection_pool_test.rb @@ -26,6 +26,35 @@ module ActiveRecord "threads should have been removed") assert_equal pool.checkins.length, threads.length end + + def test_checkout_behaviour + pool = ConnectionPool.new ActiveRecord::Base.connection_pool.spec + connection = pool.connection + assert_not_nil connection + threads = [] + 4.times do |i| + threads << Thread.new(i) do |pool_count| + connection = pool.connection + assert_not_nil connection + end + end + + threads.each {|t| t.join} + + Thread.new do + threads.each do |t| + thread_ids = pool.instance_variable_get(:@reserved_connections).keys + assert thread_ids.include?(t.object_id) + end + + pool.connection + threads.each do |t| + thread_ids = pool.instance_variable_get(:@reserved_connections).keys + assert !thread_ids.include?(t.object_id) + end + end.join() + + end end end end -- cgit v1.2.3