aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-20 19:04:37 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-20 19:06:20 -0300
commite4018a00fdfb6b0586c42d4a25a005b5ca416173 (patch)
treeccfd1f364d8827972c200473e21a34e035fb6fa9 /activerecord/test
parent50a76c14f95373b6e723e8603f43f1cf6af5b4c7 (diff)
downloadrails-e4018a00fdfb6b0586c42d4a25a005b5ca416173.tar.gz
rails-e4018a00fdfb6b0586c42d4a25a005b5ca416173.tar.bz2
rails-e4018a00fdfb6b0586c42d4a25a005b5ca416173.zip
Revert "backport fair connection pool 02b2335563 to 3-2-stable"
This reverts commit 0693e079708a52b777f2b7872b8e3d467b880a0d. Revert "Cache columns metadata to avoid extra while testing" This reverts commit a82f1e3f5d11c8dfba9f4c911745ec40a7965216. Reason: This is causing failures in the postgresql build. See http://travis-ci.org/#!/rails/rails/builds/2485584 Related with #7675
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/associations/eager_test.rb6
-rw-r--r--activerecord/test/cases/associations/has_many_associations_test.rb2
-rw-r--r--activerecord/test/cases/connection_adapters/abstract_adapter_test.rb2
-rw-r--r--activerecord/test/cases/connection_pool_test.rb104
-rw-r--r--activerecord/test/cases/dirty_test.rb4
5 files changed, 2 insertions, 116 deletions
diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb
index 544c01461d..bf01b46852 100644
--- a/activerecord/test/cases/associations/eager_test.rb
+++ b/activerecord/test/cases/associations/eager_test.rb
@@ -929,10 +929,6 @@ class EagerAssociationTest < ActiveRecord::TestCase
end
def test_eager_loading_with_conditions_on_joined_table_preloads
- # cache metadata in advance to avoid extra sql statements executed while testing
- Tagging.first
- Tag.first
-
posts = assert_queries(2) do
Post.find(:all, :select => 'distinct posts.*', :include => :author, :joins => [:comments], :conditions => "comments.body like 'Thank you%'", :order => 'posts.id')
end
@@ -981,9 +977,7 @@ class EagerAssociationTest < ActiveRecord::TestCase
end
def test_eager_loading_with_conditions_on_join_model_preloads
- # cache metadata in advance to avoid extra sql statements executed while testing
Author.columns
- AuthorAddress.first
authors = assert_queries(2) do
Author.find(:all, :include => :author_address, :joins => :comments, :conditions => "posts.title like 'Welcome%'")
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb
index 618daa1b35..30cfcc53d2 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -1470,8 +1470,6 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
end
def test_custom_primary_key_on_new_record_should_fetch_with_query
- Essay.first # cache metadata in advance to avoid extra sql statements executed while testing
-
author = Author.new(:name => "David")
assert !author.essays.loaded?
diff --git a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb
index 3dcde699fc..7af9079b48 100644
--- a/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb
+++ b/activerecord/test/cases/connection_adapters/abstract_adapter_test.rb
@@ -36,7 +36,7 @@ module ActiveRecord
def test_close
pool = ConnectionPool.new(Base::ConnectionSpecification.new({}, nil))
- pool.insert_connection_for_test! adapter
+ pool.connections << adapter
adapter.pool = pool
# Make sure the pool marks the connection in use
diff --git a/activerecord/test/cases/connection_pool_test.rb b/activerecord/test/cases/connection_pool_test.rb
index 2ada2c1fe1..5cecfa90e7 100644
--- a/activerecord/test/cases/connection_pool_test.rb
+++ b/activerecord/test/cases/connection_pool_test.rb
@@ -128,110 +128,6 @@ module ActiveRecord
end
- # The connection pool is "fair" if threads waiting for
- # connections receive them the order in which they began
- # waiting. This ensures that we don't timeout one HTTP request
- # even while well under capacity in a multi-threaded environment
- # such as a Java servlet container.
- #
- # We don't need strict fairness: if two connections become
- # available at the same time, it's fine of two threads that were
- # waiting acquire the connections out of order.
- #
- # Thus this test prepares waiting threads and then trickles in
- # available connections slowly, ensuring the wakeup order is
- # correct in this case.
- def test_checkout_fairness
- @pool.instance_variable_set(:@size, 10)
- expected = (1..@pool.size).to_a.freeze
- # check out all connections so our threads start out waiting
- conns = expected.map { @pool.checkout }
- mutex = Mutex.new
- order = []
- errors = []
-
- threads = expected.map do |i|
- t = Thread.new {
- begin
- @pool.checkout # connection return value never checked back in
- mutex.synchronize { order << i }
- rescue => e
- mutex.synchronize { errors << e }
- end
- }
- Thread.pass until t.status == "sleep"
- t
- end
-
- # this should wake up the waiting threads one by one in order
- conns.each { |conn| @pool.checkin(conn); sleep 0.1 }
-
- threads.each(&:join)
-
- raise errors.first if errors.any?
-
- assert_equal(expected, order)
- end
-
- # As mentioned in #test_checkout_fairness, we don't care about
- # strict fairness. This test creates two groups of threads:
- # group1 whose members all start waiting before any thread in
- # group2. Enough connections are checked in to wakeup all
- # group1 threads, and the fact that only group1 and no group2
- # threads acquired a connection is enforced.
- def test_checkout_fairness_by_group
- @pool.instance_variable_set(:@size, 10)
- # take all the connections
- conns = (1..10).map { @pool.checkout }
- mutex = Mutex.new
- successes = [] # threads that successfully got a connection
- errors = []
-
- make_thread = proc do |i|
- t = Thread.new {
- begin
- @pool.checkout # connection return value never checked back in
- mutex.synchronize { successes << i }
- rescue => e
- mutex.synchronize { errors << e }
- end
- }
- Thread.pass until t.status == "sleep"
- t
- end
-
- # all group1 threads start waiting before any in group2
- group1 = (1..5).map(&make_thread)
- group2 = (6..10).map(&make_thread)
-
- # checkin n connections back to the pool
- checkin = proc do |n|
- n.times do
- c = conns.pop
- @pool.checkin(c)
- end
- end
-
- checkin.call(group1.size) # should wake up all group1
-
- loop do
- sleep 0.1
- break if mutex.synchronize { (successes.size + errors.size) == group1.size }
- end
-
- winners = mutex.synchronize { successes.dup }
- checkin.call(group2.size) # should wake up everyone remaining
-
- group1.each(&:join)
- group2.each(&:join)
-
- assert_equal((1..group1.size).to_a, winners.sort)
-
- if errors.any?
- raise errors.first
- end
- end
-
def test_automatic_reconnect=
pool = ConnectionPool.new ActiveRecord::Base.connection_pool.spec
assert pool.automatic_reconnect
diff --git a/activerecord/test/cases/dirty_test.rb b/activerecord/test/cases/dirty_test.rb
index e1129704a6..3bd2e909d7 100644
--- a/activerecord/test/cases/dirty_test.rb
+++ b/activerecord/test/cases/dirty_test.rb
@@ -325,8 +325,6 @@ class DirtyTest < ActiveRecord::TestCase
end
def test_partial_update_with_optimistic_locking
- Person.first # cache metadata in advance to avoid extra sql statements executed while testing
-
person = Person.new(:first_name => 'foo')
old_lock_version = 1
@@ -532,7 +530,7 @@ class DirtyTest < ActiveRecord::TestCase
pirate = target.create(:created_on => created_on)
pirate.reload # Here mysql truncate the usec value to 0
-
+
pirate.created_on = created_on
assert !pirate.created_on_changed?
end