diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-16 14:33:12 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-16 14:33:38 -0800 |
commit | aaff1a4101605b7d2e2386d3e7612a43fbe07c8d (patch) | |
tree | 979f9828edaa35a7a5e33727d4f3856a6b95a45c /activerecord/test/cases | |
parent | c84e4b5d4bf0eefea9f0f649da6b82ec636678c2 (diff) | |
download | rails-aaff1a4101605b7d2e2386d3e7612a43fbe07c8d.tar.gz rails-aaff1a4101605b7d2e2386d3e7612a43fbe07c8d.tar.bz2 rails-aaff1a4101605b7d2e2386d3e7612a43fbe07c8d.zip |
database connections are automatically established after forking.
Connection pools are 1:1 with pids.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/connection_management_test.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/test/cases/connection_management_test.rb b/activerecord/test/cases/connection_management_test.rb index 496cd78136..fe1b40d884 100644 --- a/activerecord/test/cases/connection_management_test.rb +++ b/activerecord/test/cases/connection_management_test.rb @@ -26,6 +26,27 @@ module ActiveRecord assert ActiveRecord::Base.connection_handler.active_connections? end + def test_connection_pool_per_pid + return skip('must support fork') unless Process.respond_to?(:fork) + + object_id = ActiveRecord::Base.connection.object_id + + rd, wr = IO.pipe + + pid = fork { + rd.close + wr.write Marshal.dump ActiveRecord::Base.connection.object_id + wr.close + exit! + } + + wr.close + + Process.waitpid pid + assert_not_equal object_id, Marshal.load(rd.read) + rd.close + end + def test_app_delegation manager = ConnectionManagement.new(@app) |