aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorArthur Neves <arthurnn@gmail.com>2016-05-04 00:46:38 -0500
committerArthur Neves <arthurnn@gmail.com>2016-05-05 15:29:11 -0500
commitb83fb847337b690ebbc96c55414157f71bbf8aa2 (patch)
tree63dbbbcdcad26fc4b69925578bd8a7e2d3a1f687 /activerecord/test
parent3bed679670dd8348ffc348509a653677c6ecb7f3 (diff)
downloadrails-b83fb847337b690ebbc96c55414157f71bbf8aa2.tar.gz
rails-b83fb847337b690ebbc96c55414157f71bbf8aa2.tar.bz2
rails-b83fb847337b690ebbc96c55414157f71bbf8aa2.zip
Refactor connection handler
ConnectionHandler will not have any knowlodge of AR models now, it will only know about the specs. Like that we can decouple the two, and allow the same model to use more than one connection. Historically, folks used to create abstract AR classes on the fly in order to have multiple connections for the same model, and override the connection methods. With this, now we can override the `specificiation_id` method in the model, to return a key, that will be used to find the connection_pool from the handler.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/connection_adapters/adapter_leasing_test.rb2
-rw-r--r--activerecord/test/cases/connection_adapters/connection_handler_test.rb44
-rw-r--r--activerecord/test/cases/connection_adapters/connection_specification_test.rb2
-rw-r--r--activerecord/test/cases/connection_pool_test.rb16
-rw-r--r--activerecord/test/cases/multiple_db_test.rb4
5 files changed, 35 insertions, 33 deletions
diff --git a/activerecord/test/cases/connection_adapters/adapter_leasing_test.rb b/activerecord/test/cases/connection_adapters/adapter_leasing_test.rb
index 580568c8ac..c7ca428ab7 100644
--- a/activerecord/test/cases/connection_adapters/adapter_leasing_test.rb
+++ b/activerecord/test/cases/connection_adapters/adapter_leasing_test.rb
@@ -37,7 +37,7 @@ module ActiveRecord
end
def test_close
- pool = Pool.new(ConnectionSpecification.new({}, nil))
+ pool = Pool.new(ConnectionSpecification.new("primary", {}, nil))
pool.insert_connection_for_test! @adapter
@adapter.pool = pool
diff --git a/activerecord/test/cases/connection_adapters/connection_handler_test.rb b/activerecord/test/cases/connection_adapters/connection_handler_test.rb
index 9b1865e8bb..c3cdb29380 100644
--- a/activerecord/test/cases/connection_adapters/connection_handler_test.rb
+++ b/activerecord/test/cases/connection_adapters/connection_handler_test.rb
@@ -4,49 +4,51 @@ module ActiveRecord
module ConnectionAdapters
class ConnectionHandlerTest < ActiveRecord::TestCase
def setup
- @klass = Class.new(Base) { def self.name; 'klass'; end }
- @subklass = Class.new(@klass) { def self.name; 'subklass'; end }
-
@handler = ConnectionHandler.new
- @pool = @handler.establish_connection(@klass, Base.connection_pool.spec)
+ resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new Base.configurations
+ spec = resolver.spec(:arunit)
+
+ @spec_id = "primary"
+ @pool = @handler.establish_connection(spec)
end
def test_retrieve_connection
- assert @handler.retrieve_connection(@klass)
+ assert @handler.retrieve_connection(@spec_id)
end
def test_active_connections?
assert !@handler.active_connections?
- assert @handler.retrieve_connection(@klass)
+ assert @handler.retrieve_connection(@spec_id)
assert @handler.active_connections?
@handler.clear_active_connections!
assert !@handler.active_connections?
end
- def test_retrieve_connection_pool_with_ar_base
- assert_nil @handler.retrieve_connection_pool(ActiveRecord::Base)
- end
+# def test_retrieve_connection_pool_with_ar_base
+# assert_nil @handler.retrieve_connection_pool(ActiveRecord::Base)
+# end
def test_retrieve_connection_pool
- assert_not_nil @handler.retrieve_connection_pool(@klass)
+ assert_not_nil @handler.retrieve_connection_pool(@spec_id)
end
- def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
- assert_not_nil @handler.retrieve_connection_pool(@subklass)
- end
-
- def test_retrieve_connection_pool_uses_superclass_pool_after_subclass_establish_and_remove
- sub_pool = @handler.establish_connection(@subklass, Base.connection_pool.spec)
- assert_same sub_pool, @handler.retrieve_connection_pool(@subklass)
+# def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
+# assert_not_nil @handler.retrieve_connection_pool(@subklass)
+# end
- @handler.remove_connection @subklass
- assert_same @pool, @handler.retrieve_connection_pool(@subklass)
- end
+# def test_retrieve_connection_pool_uses_superclass_pool_after_subclass_establish_and_remove
+# sub_pool = @handler.establish_connection(@subklass, Base.connection_pool.spec)
+# assert_same sub_pool, @handler.retrieve_connection_pool(@subklass)
+#
+# @handler.remove_connection @subklass
+# assert_same @pool, @handler.retrieve_connection_pool(@subklass)
+# end
def test_connection_pools
assert_equal([@pool], @handler.connection_pools)
end
+ # TODO
if Process.respond_to?(:fork)
def test_connection_pool_per_pid
object_id = ActiveRecord::Base.connection.object_id
@@ -79,7 +81,7 @@ module ActiveRecord
pid = fork {
rd.close
- pool = @handler.retrieve_connection_pool(@klass)
+ pool = @handler.retrieve_connection_pool(@spec_id)
wr.write Marshal.dump pool.schema_cache.size
wr.close
exit!
diff --git a/activerecord/test/cases/connection_adapters/connection_specification_test.rb b/activerecord/test/cases/connection_adapters/connection_specification_test.rb
index ea2196cda2..d204fce59f 100644
--- a/activerecord/test/cases/connection_adapters/connection_specification_test.rb
+++ b/activerecord/test/cases/connection_adapters/connection_specification_test.rb
@@ -4,7 +4,7 @@ module ActiveRecord
module ConnectionAdapters
class ConnectionSpecificationTest < ActiveRecord::TestCase
def test_dup_deep_copy_config
- spec = ConnectionSpecification.new({ :a => :b }, "bar")
+ spec = ConnectionSpecification.new("primary", { :a => :b }, "bar")
assert_not_equal(spec.config.object_id, spec.dup.config.object_id)
end
end
diff --git a/activerecord/test/cases/connection_pool_test.rb b/activerecord/test/cases/connection_pool_test.rb
index efa3e0455e..55e90fd172 100644
--- a/activerecord/test/cases/connection_pool_test.rb
+++ b/activerecord/test/cases/connection_pool_test.rb
@@ -333,14 +333,14 @@ module ActiveRecord
# make sure exceptions are thrown when establish_connection
# is called with an anonymous class
- def test_anonymous_class_exception
- anonymous = Class.new(ActiveRecord::Base)
- handler = ActiveRecord::Base.connection_handler
-
- assert_raises(RuntimeError) {
- handler.establish_connection anonymous, nil
- }
- end
+# def test_anonymous_class_exception
+# anonymous = Class.new(ActiveRecord::Base)
+# handler = ActiveRecord::Base.connection_handler
+#
+# assert_raises(RuntimeError) {
+# handler.establish_connection anonymous, nil
+# }
+# end
def test_pool_sets_connection_schema_cache
connection = pool.checkout
diff --git a/activerecord/test/cases/multiple_db_test.rb b/activerecord/test/cases/multiple_db_test.rb
index af4183a601..e20ce20599 100644
--- a/activerecord/test/cases/multiple_db_test.rb
+++ b/activerecord/test/cases/multiple_db_test.rb
@@ -89,8 +89,8 @@ class MultipleDbTest < ActiveRecord::TestCase
end
def test_connection
- assert_equal Entrant.arel_engine.connection, Bird.arel_engine.connection
- assert_not_equal Entrant.arel_engine.connection, Course.arel_engine.connection
+ assert_equal Entrant.arel_engine.connection.object_id, Bird.arel_engine.connection.object_id
+ assert_not_equal Entrant.arel_engine.connection.object_id, Course.arel_engine.connection.object_id
end
unless in_memory_db?