@@ -151,7 +151,9 @@ def lookup_store(options = {})
151
151
152
152
teardown do
153
153
@cache . clear
154
- @cache . redis . disconnect!
154
+ @cache . redis . with do |r |
155
+ r . respond_to? ( :on_each_node , true ) ? r . send ( :on_each_node , :disconnect! ) : r . disconnect!
156
+ end
155
157
end
156
158
end
157
159
@@ -169,15 +171,15 @@ class RedisCacheStoreCommonBehaviorTest < StoreTest
169
171
include EncodedKeyCacheBehavior
170
172
171
173
def test_fetch_multi_uses_redis_mget
172
- assert_called ( @cache . redis , :mget , returns : [ ] ) do
174
+ assert_called ( redis_backend , :mget , returns : [ ] ) do
173
175
@cache . fetch_multi ( "a" , "b" , "c" ) do |key |
174
176
key * 2
175
177
end
176
178
end
177
179
end
178
180
179
181
def test_fetch_multi_with_namespace
180
- assert_called_with ( @cache . redis , :mget , [ "custom-namespace:a" , "custom-namespace:b" , "custom-namespace:c" ] , returns : [ ] ) do
182
+ assert_called_with ( redis_backend , :mget , [ "custom-namespace:a" , "custom-namespace:b" , "custom-namespace:c" ] , returns : [ ] ) do
181
183
@cache . fetch_multi ( "a" , "b" , "c" , namespace : "custom-namespace" ) do |key |
182
184
key * 2
183
185
end
@@ -186,39 +188,53 @@ def test_fetch_multi_with_namespace
186
188
187
189
def test_write_expires_at
188
190
@cache . write "key_with_expires_at" , "bar" , expires_at : 30 . minutes . from_now
189
- assert @cache . redis . ttl ( "#{ @namespace } :key_with_expires_at" ) > 0
191
+ redis_backend do |r |
192
+ assert r . ttl ( "#{ @namespace } :key_with_expires_at" ) > 0
193
+ end
190
194
end
191
195
192
196
def test_increment_expires_in
193
197
@cache . increment "foo" , 1 , expires_in : 60
194
- assert @cache . redis . exists? ( "#{ @namespace } :foo" )
195
- assert @cache . redis . ttl ( "#{ @namespace } :foo" ) > 0
198
+ redis_backend do |r |
199
+ assert r . exists? ( "#{ @namespace } :foo" )
200
+ assert r . ttl ( "#{ @namespace } :foo" ) > 0
201
+ end
196
202
197
203
# key and ttl exist
198
- @cache . redis . setex "#{ @namespace } :bar" , 120 , 1
204
+ redis_backend { | r | r . setex "#{ @namespace } :bar" , 120 , 1 }
199
205
@cache . increment "bar" , 1 , expires_in : 60
200
- assert @cache . redis . ttl ( "#{ @namespace } :bar" ) > 60
206
+ redis_backend do |r |
207
+ assert r . ttl ( "#{ @namespace } :bar" ) > 60
208
+ end
201
209
202
210
# key exist but not have expire
203
- @cache . redis . set "#{ @namespace } :dar" , 10
211
+ redis_backend { | r | r . set "#{ @namespace } :dar" , 10 }
204
212
@cache . increment "dar" , 1 , expires_in : 60
205
- assert @cache . redis . ttl ( "#{ @namespace } :dar" ) > 0
213
+ redis_backend do |r |
214
+ assert r . ttl ( "#{ @namespace } :dar" ) > 0
215
+ end
206
216
end
207
217
208
218
def test_decrement_expires_in
209
219
@cache . decrement "foo" , 1 , expires_in : 60
210
- assert @cache . redis . exists? ( "#{ @namespace } :foo" )
211
- assert @cache . redis . ttl ( "#{ @namespace } :foo" ) > 0
220
+ redis_backend do |r |
221
+ assert r . exists? ( "#{ @namespace } :foo" )
222
+ assert r . ttl ( "#{ @namespace } :foo" ) > 0
223
+ end
212
224
213
225
# key and ttl exist
214
- @cache . redis . setex "#{ @namespace } :bar" , 120 , 1
226
+ redis_backend { | r | r . setex "#{ @namespace } :bar" , 120 , 1 }
215
227
@cache . decrement "bar" , 1 , expires_in : 60
216
- assert @cache . redis . ttl ( "#{ @namespace } :bar" ) > 60
228
+ redis_backend do |r |
229
+ assert r . ttl ( "#{ @namespace } :bar" ) > 60
230
+ end
217
231
218
232
# key exist but not have expire
219
- @cache . redis . set "#{ @namespace } :dar" , 10
233
+ redis_backend { | r | r . set "#{ @namespace } :dar" , 10 }
220
234
@cache . decrement "dar" , 1 , expires_in : 60
221
- assert @cache . redis . ttl ( "#{ @namespace } :dar" ) > 0
235
+ redis_backend do |r |
236
+ assert r . ttl ( "#{ @namespace } :dar" ) > 0
237
+ end
222
238
end
223
239
224
240
test "fetch caches nil" do
@@ -235,6 +251,19 @@ def test_decrement_expires_in
235
251
assert_equal false , @cache . exist? ( "foo" )
236
252
end
237
253
end
254
+
255
+ def redis_backend
256
+ @cache . redis . with do |r |
257
+ yield r if block_given?
258
+ return r
259
+ end
260
+ end
261
+ end
262
+
263
+ class RedisCacheStoreWithDistributedRedisTest < RedisCacheStoreCommonBehaviorTest
264
+ def lookup_store ( options = { } )
265
+ super ( options . merge ( pool : { size : 5 } , url : [ ENV [ "REDIS_URL" ] || "redis://localhost:6379/0" ] * 2 ) )
266
+ end
238
267
end
239
268
240
269
class ConnectionPoolBehaviorTest < StoreTest
0 commit comments