diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-16 14:39:40 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-16 14:39:40 -0700 |
commit | 8d17f533187a791b4a42f45542c56c5f965e6fad (patch) | |
tree | 2e4a5d39a38d85c58821868c79ddf3f3010cedf8 | |
parent | 7ba54ff71177e97cac16ec37fd1cb562c4bbb2bb (diff) | |
download | rails-8d17f533187a791b4a42f45542c56c5f965e6fad.tar.gz rails-8d17f533187a791b4a42f45542c56c5f965e6fad.tar.bz2 rails-8d17f533187a791b4a42f45542c56c5f965e6fad.zip |
adding a test for clearing stale connections
-rw-r--r-- | activerecord/test/cases/connection_pool_test.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/activerecord/test/cases/connection_pool_test.rb b/activerecord/test/cases/connection_pool_test.rb new file mode 100644 index 0000000000..82b3c36ed2 --- /dev/null +++ b/activerecord/test/cases/connection_pool_test.rb @@ -0,0 +1,31 @@ +require "cases/helper" + +module ActiveRecord + module ConnectionAdapters + class ConnectionPoolTest < ActiveRecord::TestCase + def test_clear_stale_cached_connections! + pool = ConnectionPool.new ActiveRecord::Base.connection_pool.spec + + threads = [ + Thread.new { pool.connection }, + Thread.new { pool.connection }] + + threads.map { |t| t.join } + + pool.extend Module.new { + attr_accessor :checkins + def checkin conn + @checkins << conn + conn.object_id + end + } + pool.checkins = [] + + cleared_threads = pool.clear_stale_cached_connections! + assert((cleared_threads - threads.map { |x| x.object_id }).empty?, + "threads should have been removed") + assert_equal pool.checkins.length, threads.length + end + end + end +end |