diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2019-01-04 08:49:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-04 08:49:17 -0500 |
commit | 725c6422e763cd676b1dc70e4d3d392b4fd5b43f (patch) | |
tree | 880f5013d7d5b2d297611703714013718d49c04c /activerecord/test | |
parent | a5a22c4ea142974117d6afbde68a8074617bda0c (diff) | |
parent | b24bfcce771645bd45ea249327bac8b8e08c2e6c (diff) | |
download | rails-725c6422e763cd676b1dc70e4d3d392b4fd5b43f.tar.gz rails-725c6422e763cd676b1dc70e4d3d392b4fd5b43f.tar.bz2 rails-725c6422e763cd676b1dc70e4d3d392b4fd5b43f.zip |
Merge pull request #34773 from eileencodes/share-fixture-connections-with-multiple-handlers
For fixtures share the connection pool when there are multiple handlers
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/fixtures_test.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index fe2f417a04..32021c5ebd 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -1362,3 +1362,37 @@ class NilFixturePathTest < ActiveRecord::TestCase MSG end end + +class MultipleDatabaseFixturesTest < ActiveRecord::TestCase + test "enlist_fixture_connections ensures multiple databases share a connection pool" do + with_temporary_connection_pool do + ActiveRecord::Base.connects_to database: { writing: :arunit, reading: :arunit2 } + + rw_conn = ActiveRecord::Base.connection + ro_conn = ActiveRecord::Base.connection_handlers[:reading].connection_pool_list.first.connection + + assert_not_equal rw_conn, ro_conn + + enlist_fixture_connections + + rw_conn = ActiveRecord::Base.connection + ro_conn = ActiveRecord::Base.connection_handlers[:reading].connection_pool_list.first.connection + + assert_equal rw_conn, ro_conn + end + ensure + ActiveRecord::Base.connection_handlers = { writing: ActiveRecord::Base.connection_handler } + end + + private + + def with_temporary_connection_pool + old_pool = ActiveRecord::Base.connection_handler.retrieve_connection_pool(ActiveRecord::Base.connection_specification_name) + new_pool = ActiveRecord::ConnectionAdapters::ConnectionPool.new ActiveRecord::Base.connection_pool.spec + ActiveRecord::Base.connection_handler.send(:owner_to_pool)["primary"] = new_pool + + yield + ensure + ActiveRecord::Base.connection_handler.send(:owner_to_pool)["primary"] = old_pool + end +end |