From 9bf8bf82b9d8614d9c7ccc31892887f6a79ce2f5 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 29 Nov 2011 13:12:56 -0800 Subject: Adapters keep in_use flag when leased --- .../cases/connection_adapters/abstract_adapter_test.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 activerecord/test/cases/connection_adapters/abstract_adapter_test.rb (limited to 'activerecord/test/cases/connection_adapters/abstract_adapter_test.rb') diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb new file mode 100644 index 0000000000..ef6a57d328 --- /dev/null +++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb @@ -0,0 +1,16 @@ +require "cases/helper" + +module ActiveRecord + module ConnectionAdapters + class AbstractAdapterTest < ActiveRecord::TestCase + def test_in_use? + adapter = AbstractAdapter.new nil, nil + + # FIXME: change to refute in Rails 4.0 / mt + assert !adapter.in_use?, 'adapter is not in use' + assert adapter.lease, 'lease adapter' + assert adapter.in_use?, 'adapter is in use' + end + end + end +end -- cgit v1.2.3 From 134cc8f9398a9a67b80f3cc26651dcc5c073416c Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 29 Nov 2011 13:15:20 -0800 Subject: Leased connections return false on second lease --- .../test/cases/connection_adapters/abstract_adapter_test.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'activerecord/test/cases/connection_adapters/abstract_adapter_test.rb') diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb index ef6a57d328..b2e747c507 100644 --- a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb +++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb @@ -3,14 +3,23 @@ require "cases/helper" module ActiveRecord module ConnectionAdapters class AbstractAdapterTest < ActiveRecord::TestCase - def test_in_use? - adapter = AbstractAdapter.new nil, nil + attr_reader :adapter + + def setup + @adapter = AbstractAdapter.new nil, nil + end + def test_in_use? # FIXME: change to refute in Rails 4.0 / mt assert !adapter.in_use?, 'adapter is not in use' assert adapter.lease, 'lease adapter' assert adapter.in_use?, 'adapter is in use' end + + def test_lease_twice + assert adapter.lease, 'should lease adapter' + assert !adapter.lease, 'should not lease adapter' + end end end end -- cgit v1.2.3 From 79306de791ad69559c0806b376233d9d8803ac59 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 29 Nov 2011 13:16:34 -0800 Subject: last_use is set on connection lease --- .../test/cases/connection_adapters/abstract_adapter_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'activerecord/test/cases/connection_adapters/abstract_adapter_test.rb') diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb index b2e747c507..3e6f829194 100644 --- a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb +++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb @@ -20,6 +20,12 @@ module ActiveRecord assert adapter.lease, 'should lease adapter' assert !adapter.lease, 'should not lease adapter' end + + def test_last_use + assert !adapter.last_use + adapter.lease + assert adapter.last_use + end end end end -- cgit v1.2.3 From f866f66b3073aaef4140f0c9ccbb8b3df707416e Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 29 Nov 2011 13:19:58 -0800 Subject: expire will set in_use to false --- .../test/cases/connection_adapters/abstract_adapter_test.rb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'activerecord/test/cases/connection_adapters/abstract_adapter_test.rb') diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb index 3e6f829194..962a5b46fd 100644 --- a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb +++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb @@ -26,6 +26,13 @@ module ActiveRecord adapter.lease assert adapter.last_use end + + def test_expire_mutates_in_use + assert adapter.lease, 'lease adapter' + assert adapter.in_use?, 'adapter is in use' + adapter.expire + assert !adapter.in_use?, 'adapter is in use' + end end end end -- cgit v1.2.3 From 29d2040b2992c112ca475a7a56bcd7f2016252ce Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 29 Nov 2011 14:40:37 -0800 Subject: AbstractAdapter#close can be called to add the connection back to the pool. --- .../cases/connection_adapters/abstract_adapter_test.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'activerecord/test/cases/connection_adapters/abstract_adapter_test.rb') diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb index 962a5b46fd..7af9079b48 100644 --- a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb +++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb @@ -33,6 +33,22 @@ module ActiveRecord adapter.expire assert !adapter.in_use?, 'adapter is in use' end + + def test_close + pool = ConnectionPool.new(Base::ConnectionSpecification.new({}, nil)) + pool.connections << adapter + adapter.pool = pool + + # Make sure the pool marks the connection in use + assert_equal adapter, pool.connection + assert adapter.in_use? + + # Close should put the adapter back in the pool + adapter.close + assert !adapter.in_use? + + assert_equal adapter, pool.connection + end end end end -- cgit v1.2.3