From cde7692d4e3e0e67e480cc6172f6e2bacaceeb5e Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 30 Dec 2011 15:19:07 -0800 Subject: introduce a timer class for reaping connections --- activerecord/test/cases/reaper_test.rb | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 activerecord/test/cases/reaper_test.rb (limited to 'activerecord/test') diff --git a/activerecord/test/cases/reaper_test.rb b/activerecord/test/cases/reaper_test.rb new file mode 100644 index 0000000000..ed3daa175d --- /dev/null +++ b/activerecord/test/cases/reaper_test.rb @@ -0,0 +1,46 @@ +require "cases/helper" + +module ActiveRecord + module ConnectionAdapters + class ReaperTest < ActiveRecord::TestCase + attr_reader :pool + + def setup + super + @pool = ConnectionPool.new ActiveRecord::Base.connection_pool.spec + end + + def teardown + super + @pool.connections.each(&:close) + end + + # A reaper with nil time should never reap connections + def test_nil_time + conn = pool.checkout + pool.timeout = 0 + + count = pool.connections.length + conn.extend(Module.new { def active?; false; end; }) + + reaper = ConnectionPool::Reaper.new(pool, nil) + reaper.start + sleep 0.0001 + assert_equal count, pool.connections.length + end + + def test_some_time + conn = pool.checkout + pool.timeout = 0 + + count = pool.connections.length + conn.extend(Module.new { def active?; false; end; }) + + reaper = ConnectionPool::Reaper.new(pool, 0.0001) + reaper.start + sleep 0.0002 + assert_equal(count - 1, pool.connections.length) + end + end + end +end -- cgit v1.2.3