aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/query_cache_test.rb
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2016-11-06 02:19:57 -0500
committerMatthew Draper <matthew@trebex.net>2016-11-06 02:19:57 -0500
commit3c785bdceed4bdf67708197aa687ced6728d77f3 (patch)
treea49f06ed4b0cd57e4d81b96e851bfd549a019bc7 /activerecord/test/cases/query_cache_test.rb
parenta6d14df40f81ae766081e6a5d4e5fa428eca3174 (diff)
downloadrails-3c785bdceed4bdf67708197aa687ced6728d77f3.tar.gz
rails-3c785bdceed4bdf67708197aa687ced6728d77f3.tar.bz2
rails-3c785bdceed4bdf67708197aa687ced6728d77f3.zip
Configure query caching (per thread) on the connection pool
Diffstat (limited to 'activerecord/test/cases/query_cache_test.rb')
-rw-r--r--activerecord/test/cases/query_cache_test.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb
index 5b0477aabe..90054ce83d 100644
--- a/activerecord/test/cases/query_cache_test.rb
+++ b/activerecord/test/cases/query_cache_test.rb
@@ -313,6 +313,40 @@ class QueryCacheTest < ActiveRecord::TestCase
end
end
+ def test_query_cache_does_not_establish_connection_if_unconnected
+ ActiveRecord::Base.clear_active_connections!
+ refute ActiveRecord::Base.connection_handler.active_connections? # sanity check
+
+ middleware {
+ refute ActiveRecord::Base.connection_handler.active_connections?, "QueryCache forced ActiveRecord::Base to establish a connection in setup"
+ }.call({})
+
+ refute ActiveRecord::Base.connection_handler.active_connections?, "QueryCache forced ActiveRecord::Base to establish a connection in cleanup"
+ end
+
+ def test_query_cache_is_enabled_on_connections_established_after_middleware_runs
+ ActiveRecord::Base.clear_active_connections!
+ refute ActiveRecord::Base.connection_handler.active_connections? # sanity check
+
+ middleware {
+ assert ActiveRecord::Base.connection.query_cache_enabled, "QueryCache did not get lazily enabled"
+ }.call({})
+ end
+
+ def test_query_caching_is_local_to_the_current_thread
+ ActiveRecord::Base.clear_active_connections!
+
+ middleware {
+ assert ActiveRecord::Base.connection_pool.query_cache_enabled
+ assert ActiveRecord::Base.connection.query_cache_enabled
+
+ Thread.new {
+ refute ActiveRecord::Base.connection_pool.query_cache_enabled
+ refute ActiveRecord::Base.connection.query_cache_enabled
+ }.join
+ }.call({})
+ end
+
private
def middleware(&app)
executor = Class.new(ActiveSupport::Executor)