class PooledConnectionsTest
Public Instance Methods
checkout_checkin_connections(pool_size, threads)
click to toggle source
Will deadlock due to lack of Monitor timeouts in 1.9
# File activerecord/test/cases/pooled_connections_test.rb, line 22 def checkout_checkin_connections(pool_size, threads) ActiveRecord::Base.establish_connection(@connection.merge(pool: pool_size, checkout_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
checkout_checkin_connections_loop(pool_size, loops)
click to toggle source
# File activerecord/test/cases/pooled_connections_test.rb, line 40 def checkout_checkin_connections_loop(pool_size, loops) ActiveRecord::Base.establish_connection(@connection.merge(pool: pool_size, checkout_timeout: 0.5)) @connection_count = 0 @timed_out = 0 loops.times do begin conn = ActiveRecord::Base.connection_pool.checkout ActiveRecord::Base.connection_pool.checkin conn @connection_count += 1 ActiveRecord::Base.connection.data_sources rescue ActiveRecord::ConnectionTimeoutError @timed_out += 1 end end end
setup()
click to toggle source
# File activerecord/test/cases/pooled_connections_test.rb, line 10 def setup @per_test_teardown = [] @connection = ActiveRecord::Base.remove_connection end
test_pooled_connection_checkin_one()
click to toggle source
# File activerecord/test/cases/pooled_connections_test.rb, line 56 def test_pooled_connection_checkin_one checkout_checkin_connections 1, 2 assert_equal 2, @connection_count assert_equal 0, @timed_out assert_equal 1, ActiveRecord::Base.connection_pool.connections.size end
test_pooled_connection_checkin_two()
click to toggle source
# File activerecord/test/cases/pooled_connections_test.rb, line 63 def test_pooled_connection_checkin_two checkout_checkin_connections_loop 2, 3 assert_equal 3, @connection_count assert_equal 0, @timed_out assert_equal 2, ActiveRecord::Base.connection_pool.connections.size end
test_pooled_connection_remove()
click to toggle source
# File activerecord/test/cases/pooled_connections_test.rb, line 70 def test_pooled_connection_remove ActiveRecord::Base.establish_connection(@connection.merge(pool: 2, checkout_timeout: 0.5)) old_connection = ActiveRecord::Base.connection extra_connection = ActiveRecord::Base.connection_pool.checkout ActiveRecord::Base.connection_pool.remove(extra_connection) assert_equal ActiveRecord::Base.connection, old_connection end
Private Instance Methods
add_record(name)
click to toggle source
# File activerecord/test/cases/pooled_connections_test.rb, line 80 def add_record(name) ActiveRecord::Base.connection_pool.with_connection { Project.create! name: name } end