aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/connection_management_test.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-02-16 14:33:12 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2012-02-16 14:33:38 -0800
commitaaff1a4101605b7d2e2386d3e7612a43fbe07c8d (patch)
tree979f9828edaa35a7a5e33727d4f3856a6b95a45c /activerecord/test/cases/connection_management_test.rb
parentc84e4b5d4bf0eefea9f0f649da6b82ec636678c2 (diff)
downloadrails-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/connection_management_test.rb')
-rw-r--r--activerecord/test/cases/connection_management_test.rb21
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)