diff options
author | Robin Clowers <robin.clowers@gmail.com> | 2015-12-02 21:10:08 -0800 |
---|---|---|
committer | Robin Clowers <robin.clowers@gmail.com> | 2015-12-02 21:27:29 -0800 |
commit | d27d6c84fd1ca3e38eb40fe3a08e7a9219941aa5 (patch) | |
tree | ee32027009a3902f89218d01760d302899e9b51e /activesupport/test | |
parent | 215f86c3483cf300b2ccd6d5d8b97f9c9bf547f5 (diff) | |
download | rails-d27d6c84fd1ca3e38eb40fe3a08e7a9219941aa5.tar.gz rails-d27d6c84fd1ca3e38eb40fe3a08e7a9219941aa5.tar.bz2 rails-d27d6c84fd1ca3e38eb40fe3a08e7a9219941aa5.zip |
Fix cache fetch miss notification order
Fixes https://github.com/rails/rails/issues/22477.
When I improved the caching instrumentation in
edd33c08d98723ae9bb89cf7f019277117ed6414, I inadvertently changed the
order of AS notifications when there is a cache miss.
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/caching_test.rb | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index 7bef73136c..465b943173 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -493,28 +493,32 @@ module CacheStoreBehavior def test_cache_hit_instrumentation key = "test_key" - subscribe_executed = false - ActiveSupport::Notifications.subscribe "cache_read.active_support" do |name, start, finish, id, payload| - subscribe_executed = true - assert_equal :fetch, payload[:super_operation] - assert payload[:hit] + @events = [] + ActiveSupport::Notifications.subscribe "cache_read.active_support" do |*args| + @events << ActiveSupport::Notifications::Event.new(*args) end assert @cache.write(key, "1", :raw => true) assert @cache.fetch(key) {} - assert subscribe_executed + assert_equal 1, @events.length + assert_equal 'cache_read.active_support', @events[0].name + assert_equal :fetch, @events[0].payload[:super_operation] + assert @events[0].payload[:hit] ensure ActiveSupport::Notifications.unsubscribe "cache_read.active_support" end def test_cache_miss_instrumentation - subscribe_executed = false - ActiveSupport::Notifications.subscribe "cache_read.active_support" do |name, start, finish, id, payload| - subscribe_executed = true - assert_equal :fetch, payload[:super_operation] - assert_not payload[:hit] + @events = [] + ActiveSupport::Notifications.subscribe /^cache_(.*)\.active_support$/ do |*args| + @events << ActiveSupport::Notifications::Event.new(*args) end assert_not @cache.fetch("bad_key") {} - assert subscribe_executed + assert_equal 3, @events.length + assert_equal 'cache_read.active_support', @events[0].name + assert_equal 'cache_generate.active_support', @events[1].name + assert_equal 'cache_write.active_support', @events[2].name + assert_equal :fetch, @events[0].payload[:super_operation] + assert_not @events[0].payload[:hit] ensure ActiveSupport::Notifications.unsubscribe "cache_read.active_support" end |