aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
diff options
context:
space:
mode:
authorMatt Wilde <matt@zenpayroll.com>2015-03-11 14:08:19 -0700
committerMatt Wilde <matt@zenpayroll.com>2015-03-11 15:14:10 -0700
commit23767c0c41fa51ebef1dfb11bc166c07e93897ac (patch)
treea7896c4cda73bb5e048ff47b245e71fc112952b9 /activesupport/test
parent1b7ae86f262df7d15b57be3b4a4f38680ce37c64 (diff)
downloadrails-23767c0c41fa51ebef1dfb11bc166c07e93897ac.tar.gz
rails-23767c0c41fa51ebef1dfb11bc166c07e93897ac.tar.bz2
rails-23767c0c41fa51ebef1dfb11bc166c07e93897ac.zip
Skip the `:race_condition_ttl` branch if the option is 0 or nil. This fixes an issue with the redis cache, where this code will sometimes throw an error out of SETEX when passing 0 as the `expires_at`.
Diffstat (limited to 'activesupport/test')
-rw-r--r--activesupport/test/caching_test.rb28
1 files changed, 20 insertions, 8 deletions
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index 7f5f8feb0d..4953550c45 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -399,15 +399,16 @@ module CacheStoreBehavior
assert_nil @cache.read('foo')
end
- def test_race_condition_protection
- time = Time.now
- @cache.write('foo', 'bar', :expires_in => 60)
- Time.stubs(:now).returns(time + 61)
- result = @cache.fetch('foo', :race_condition_ttl => 10) do
- assert_equal 'bar', @cache.read('foo')
- "baz"
+ def test_race_condition_protection_skipped_if_not_defined
+ @cache.write('foo', 'bar')
+ time = @cache.send(:read_entry, 'foo', {}).expires_at
+ Time.stubs(:now).returns(Time.at(time))
+
+ result = @cache.fetch('foo') do
+ assert_equal nil, @cache.read('foo')
+ 'baz'
end
- assert_equal "baz", result
+ assert_equal 'baz', result
end
def test_race_condition_protection_is_limited
@@ -437,6 +438,17 @@ module CacheStoreBehavior
assert_nil @cache.read('foo')
end
+ def test_race_condition_protection
+ time = Time.now
+ @cache.write('foo', 'bar', :expires_in => 60)
+ Time.stubs(:now).returns(time + 61)
+ result = @cache.fetch('foo', :race_condition_ttl => 10) do
+ assert_equal 'bar', @cache.read('foo')
+ "baz"
+ end
+ assert_equal "baz", result
+ end
+
def test_crazy_key_characters
crazy_key = "#/:*(<+=> )&$%@?;'\"\'`~-"
assert @cache.write(crazy_key, "1", :raw => true)