redis-store 1.6.0 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/auto-assign-issues.yml +2 -0
- data/.github/release.yml +13 -0
- data/.github/workflows/ci.yml +62 -0
- data/.github/workflows/publish.yml +32 -0
- data/.rubocop.yml +5 -11
- data/Appraisals +13 -2
- data/CHANGELOG.md +59 -1
- data/CODEOWNERS +1 -0
- data/README.md +3 -3
- data/Rakefile +1 -1
- data/gemfiles/redis_4_0_x.gemfile +7 -0
- data/gemfiles/redis_4_1_x.gemfile +7 -0
- data/gemfiles/redis_4_6_x.gemfile +7 -0
- data/gemfiles/{redis_3_x.gemfile → redis_5_x.gemfile} +1 -1
- data/lib/redis/store/interface.rb +9 -1
- data/lib/redis/store/namespace.rb +109 -10
- data/lib/redis/store/ttl.rb +9 -4
- data/lib/redis/store/version.rb +1 -1
- data/redis-store.gemspec +3 -7
- data/test/redis/distributed_store_test.rb +13 -13
- data/test/redis/store/factory_test.rb +44 -44
- data/test/redis/store/namespace_test.rb +136 -18
- data/test/redis/store/redis_version_test.rb +6 -6
- data/test/redis/store/serialization_test.rb +46 -44
- data/test/redis/store/ttl_test.rb +17 -13
- data/test/redis/store/version_test.rb +1 -1
- data/test/redis/store_test.rb +7 -7
- metadata +25 -29
- data/.travis.yml +0 -41
@@ -6,55 +6,55 @@ describe "Redis::Store::Factory" do
|
|
6
6
|
describe "when not given any arguments" do
|
7
7
|
it "instantiates Redis::Store" do
|
8
8
|
store = Redis::Store::Factory.create
|
9
|
-
store.must_be_kind_of(Redis::Store)
|
10
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0")
|
9
|
+
_(store).must_be_kind_of(Redis::Store)
|
10
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0")
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "when given a Hash" do
|
15
15
|
it "uses specified host" do
|
16
16
|
store = Redis::Store::Factory.create :host => "localhost"
|
17
|
-
store.to_s.must_equal("Redis Client connected to localhost:6379 against DB 0")
|
17
|
+
_(store.to_s).must_equal("Redis Client connected to localhost:6379 against DB 0")
|
18
18
|
end
|
19
19
|
|
20
20
|
it "uses specified port" do
|
21
21
|
store = Redis::Store::Factory.create :host => "localhost", :port => 6380
|
22
|
-
store.to_s.must_equal("Redis Client connected to localhost:6380 against DB 0")
|
22
|
+
_(store.to_s).must_equal("Redis Client connected to localhost:6380 against DB 0")
|
23
23
|
end
|
24
24
|
|
25
25
|
it "uses specified scheme" do
|
26
26
|
store = Redis::Store::Factory.create :scheme => "rediss"
|
27
|
-
store.instance_variable_get(:@client).scheme.must_equal('rediss')
|
27
|
+
_(store.instance_variable_get(:@client).scheme).must_equal('rediss')
|
28
28
|
end
|
29
29
|
|
30
30
|
it "uses specified path" do
|
31
31
|
store = Redis::Store::Factory.create :path => "/var/run/redis.sock"
|
32
|
-
store.to_s.must_equal("Redis Client connected to /var/run/redis.sock against DB 0")
|
32
|
+
_(store.to_s).must_equal("Redis Client connected to /var/run/redis.sock against DB 0")
|
33
33
|
end
|
34
34
|
|
35
35
|
it "uses specified db" do
|
36
36
|
store = Redis::Store::Factory.create :host => "localhost", :port => 6380, :db => 13
|
37
|
-
store.to_s.must_equal("Redis Client connected to localhost:6380 against DB 13")
|
37
|
+
_(store.to_s).must_equal("Redis Client connected to localhost:6380 against DB 13")
|
38
38
|
end
|
39
39
|
|
40
40
|
it "uses specified namespace" do
|
41
41
|
store = Redis::Store::Factory.create :namespace => "theplaylist"
|
42
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
42
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
43
43
|
end
|
44
44
|
|
45
45
|
it "uses specified key_prefix as namespace" do
|
46
46
|
store = Redis::Store::Factory.create :key_prefix => "theplaylist"
|
47
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
47
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
48
48
|
end
|
49
49
|
|
50
50
|
it "uses specified password" do
|
51
51
|
store = Redis::Store::Factory.create :password => "secret"
|
52
|
-
store.instance_variable_get(:@client).password.must_equal("secret")
|
52
|
+
_(store.instance_variable_get(:@client).password).must_equal("secret")
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'uses empty password' do
|
56
56
|
store = Redis::Store::Factory.create :password => ''
|
57
|
-
store.instance_variable_get(:@client).password.must_equal('')
|
57
|
+
_(store.instance_variable_get(:@client).password).must_equal('')
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'uses nil password' do
|
@@ -64,30 +64,30 @@ describe "Redis::Store::Factory" do
|
|
64
64
|
|
65
65
|
it "disables serialization" do
|
66
66
|
store = Redis::Store::Factory.create :serializer => nil
|
67
|
-
store.instance_variable_get(:@serializer).must_be_nil
|
68
|
-
store.instance_variable_get(:@options)[:raw].must_equal(true)
|
67
|
+
_(store.instance_variable_get(:@serializer)).must_be_nil
|
68
|
+
_(store.instance_variable_get(:@options)[:raw]).must_equal(true)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "configures pluggable serialization backend" do
|
72
72
|
store = Redis::Store::Factory.create :serializer => JSON
|
73
|
-
store.instance_variable_get(:@serializer).must_equal(JSON)
|
74
|
-
store.instance_variable_get(:@options)[:raw].must_equal(false)
|
73
|
+
_(store.instance_variable_get(:@serializer)).must_equal(JSON)
|
74
|
+
_(store.instance_variable_get(:@options)[:raw]).must_equal(false)
|
75
75
|
end
|
76
76
|
|
77
77
|
describe "defaults" do
|
78
78
|
it "defaults to localhost if no host specified" do
|
79
79
|
store = Redis::Store::Factory.create
|
80
|
-
store.instance_variable_get(:@client).host.must_equal('127.0.0.1')
|
80
|
+
_(store.instance_variable_get(:@client).host).must_equal('127.0.0.1')
|
81
81
|
end
|
82
82
|
|
83
83
|
it "defaults to 6379 if no port specified" do
|
84
84
|
store = Redis::Store::Factory.create
|
85
|
-
store.instance_variable_get(:@client).port.must_equal(6379)
|
85
|
+
_(store.instance_variable_get(:@client).port).must_equal(6379)
|
86
86
|
end
|
87
87
|
|
88
88
|
it "defaults to redis:// if no scheme specified" do
|
89
89
|
store = Redis::Store::Factory.create
|
90
|
-
store.instance_variable_get(:@client).scheme.must_equal('redis')
|
90
|
+
_(store.instance_variable_get(:@client).scheme).must_equal('redis')
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -102,14 +102,14 @@ describe "Redis::Store::Factory" do
|
|
102
102
|
|
103
103
|
it "disables marshalling and provides deprecation warning" do
|
104
104
|
store = Redis::Store::Factory.create :marshalling => false
|
105
|
-
store.instance_variable_get(:@serializer).must_be_nil
|
106
|
-
store.instance_variable_get(:@options)[:raw].must_equal(true)
|
105
|
+
_(store.instance_variable_get(:@serializer)).must_be_nil
|
106
|
+
_(store.instance_variable_get(:@options)[:raw]).must_equal(true)
|
107
107
|
end
|
108
108
|
|
109
109
|
it "enables marshalling but provides warning to use :serializer instead" do
|
110
110
|
store = Redis::Store::Factory.create :marshalling => true
|
111
|
-
store.instance_variable_get(:@serializer).must_equal(Marshal)
|
112
|
-
store.instance_variable_get(:@options)[:raw].must_equal(false)
|
111
|
+
_(store.instance_variable_get(:@serializer)).must_equal(Marshal)
|
112
|
+
_(store.instance_variable_get(:@options)[:raw]).must_equal(false)
|
113
113
|
end
|
114
114
|
|
115
115
|
after do
|
@@ -123,8 +123,8 @@ describe "Redis::Store::Factory" do
|
|
123
123
|
{ :host => "localhost", :port => 6379 },
|
124
124
|
{ :host => "localhost", :port => 6380 }
|
125
125
|
)
|
126
|
-
store.must_be_kind_of(Redis::DistributedStore)
|
127
|
-
store.nodes.map { |node| node.to_s }.must_equal([
|
126
|
+
_(store).must_be_kind_of(Redis::DistributedStore)
|
127
|
+
_(store.nodes.map { |node| node.to_s }).must_equal([
|
128
128
|
"Redis Client connected to localhost:6379 against DB 0",
|
129
129
|
"Redis Client connected to localhost:6380 against DB 0",
|
130
130
|
])
|
@@ -134,62 +134,62 @@ describe "Redis::Store::Factory" do
|
|
134
134
|
describe "when given a String" do
|
135
135
|
it "uses specified host" do
|
136
136
|
store = Redis::Store::Factory.create "redis://127.0.0.1"
|
137
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0")
|
137
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0")
|
138
138
|
end
|
139
139
|
|
140
140
|
it "uses specified port" do
|
141
141
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6380"
|
142
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6380 against DB 0")
|
142
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6380 against DB 0")
|
143
143
|
end
|
144
144
|
|
145
145
|
it "uses specified scheme" do
|
146
146
|
store = Redis::Store::Factory.create "rediss://127.0.0.1:6380"
|
147
|
-
store.instance_variable_get(:@client).scheme.must_equal('rediss')
|
147
|
+
_(store.instance_variable_get(:@client).scheme).must_equal('rediss')
|
148
148
|
end
|
149
149
|
|
150
150
|
it "correctly defaults to redis:// when relative scheme specified" do
|
151
151
|
store = Redis::Store::Factory.create "//127.0.0.1:6379"
|
152
|
-
store.instance_variable_get(:@client).scheme.must_equal('redis')
|
152
|
+
_(store.instance_variable_get(:@client).scheme).must_equal('redis')
|
153
153
|
end
|
154
154
|
|
155
155
|
it "uses specified path" do
|
156
156
|
store = Redis::Store::Factory.create "unix:///var/run/redis.sock"
|
157
|
-
store.to_s.must_equal("Redis Client connected to /var/run/redis.sock against DB 0")
|
157
|
+
_(store.to_s).must_equal("Redis Client connected to /var/run/redis.sock against DB 0")
|
158
158
|
end
|
159
159
|
|
160
160
|
it "uses specified db" do
|
161
161
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6380/13"
|
162
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6380 against DB 13")
|
162
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6380 against DB 13")
|
163
163
|
end
|
164
164
|
|
165
165
|
it "uses specified namespace" do
|
166
166
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6379/0/theplaylist"
|
167
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
167
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
168
168
|
end
|
169
169
|
|
170
170
|
it "uses specified via query namespace" do
|
171
171
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6379/0?namespace=theplaylist"
|
172
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
172
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
173
173
|
end
|
174
174
|
|
175
175
|
it "uses specified namespace with path" do
|
176
176
|
store = Redis::Store::Factory.create "unix:///var/run/redis.sock?db=2&namespace=theplaylist"
|
177
|
-
store.to_s.must_equal("Redis Client connected to /var/run/redis.sock against DB 2 with namespace theplaylist")
|
177
|
+
_(store.to_s).must_equal("Redis Client connected to /var/run/redis.sock against DB 2 with namespace theplaylist")
|
178
178
|
end
|
179
179
|
|
180
180
|
it "uses specified password" do
|
181
181
|
store = Redis::Store::Factory.create "redis://:secret@127.0.0.1:6379/0/theplaylist"
|
182
|
-
store.instance_variable_get(:@client).password.must_equal("secret")
|
182
|
+
_(store.instance_variable_get(:@client).password).must_equal("secret")
|
183
183
|
end
|
184
184
|
|
185
185
|
it 'uses specified password with special characters' do
|
186
186
|
store = Redis::Store::Factory.create 'redis://:pwd%40123@127.0.0.1:6379/0/theplaylist'
|
187
|
-
store.instance_variable_get(:@client).password.must_equal('pwd@123')
|
187
|
+
_(store.instance_variable_get(:@client).password).must_equal('pwd@123')
|
188
188
|
end
|
189
189
|
|
190
190
|
it 'uses empty password' do
|
191
191
|
store = Redis::Store::Factory.create 'redis://:@127.0.0.1:6379/0/theplaylist'
|
192
|
-
store.instance_variable_get(:@client).password.must_equal('')
|
192
|
+
_(store.instance_variable_get(:@client).password).must_equal('')
|
193
193
|
end
|
194
194
|
|
195
195
|
it 'uses nil password' do
|
@@ -199,14 +199,14 @@ describe "Redis::Store::Factory" do
|
|
199
199
|
|
200
200
|
it "correctly uses specified ipv6 host" do
|
201
201
|
store = Redis::Store::Factory.create "redis://[::1]:6380"
|
202
|
-
store.to_s.must_equal("Redis Client connected to [::1]:6380 against DB 0")
|
203
|
-
store.instance_variable_get('@options')[:host].must_equal("::1")
|
202
|
+
_(store.to_s).must_equal("Redis Client connected to [::1]:6380 against DB 0")
|
203
|
+
_(store.instance_variable_get('@options')[:host]).must_equal("::1")
|
204
204
|
end
|
205
205
|
|
206
206
|
it "instantiates Redis::DistributedStore" do
|
207
207
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6379", "redis://127.0.0.1:6380"
|
208
|
-
store.must_be_kind_of(Redis::DistributedStore)
|
209
|
-
store.nodes.map { |node| node.to_s }.must_equal([
|
208
|
+
_(store).must_be_kind_of(Redis::DistributedStore)
|
209
|
+
_(store.nodes.map { |node| node.to_s }).must_equal([
|
210
210
|
"Redis Client connected to 127.0.0.1:6379 against DB 0",
|
211
211
|
"Redis Client connected to 127.0.0.1:6380 against DB 0",
|
212
212
|
])
|
@@ -227,7 +227,7 @@ describe "Redis::Store::Factory" do
|
|
227
227
|
{ :host => '127.0.0.1', :port => '6380' },
|
228
228
|
{ :namespace => 'theplaylist' }
|
229
229
|
)
|
230
|
-
store.nodes.map { |node| node.to_s }.must_equal([
|
230
|
+
_(store.nodes.map { |node| node.to_s }).must_equal([
|
231
231
|
"Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist",
|
232
232
|
"Redis Client connected to 127.0.0.1:6380 against DB 0 with namespace theplaylist"
|
233
233
|
])
|
@@ -237,12 +237,12 @@ describe "Redis::Store::Factory" do
|
|
237
237
|
describe 'when given host String and options Hash' do
|
238
238
|
it 'instantiates Redis::Store and merges options' do
|
239
239
|
store = Redis::Store::Factory.create "redis://127.0.0.1", :namespace => 'theplaylist'
|
240
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
240
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
241
241
|
end
|
242
242
|
|
243
243
|
it 'instantiates Redis::DistributedStore and merges options' do
|
244
244
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6379", "redis://127.0.0.1:6380", :namespace => 'theplaylist'
|
245
|
-
store.nodes.map { |node| node.to_s }.must_equal([
|
245
|
+
_(store.nodes.map { |node| node.to_s }).must_equal([
|
246
246
|
"Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist",
|
247
247
|
"Redis Client connected to 127.0.0.1:6380 against DB 0 with namespace theplaylist",
|
248
248
|
])
|
@@ -250,7 +250,7 @@ describe "Redis::Store::Factory" do
|
|
250
250
|
|
251
251
|
it 'instantiates Redis::Store and sets namespace from String' do
|
252
252
|
store = Redis::Store::Factory.create "redis://127.0.0.1:6379/0/theplaylist", :expire_after => 5
|
253
|
-
store.to_s.must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
253
|
+
_(store.to_s).must_equal("Redis Client connected to 127.0.0.1:6379 against DB 0 with namespace theplaylist")
|
254
254
|
end
|
255
255
|
end
|
256
256
|
end
|
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
describe "Redis::Store::Namespace" do
|
4
4
|
def setup
|
5
5
|
@namespace = "theplaylist"
|
6
|
-
@store
|
6
|
+
@store = Redis::Store.new :namespace => @namespace, :serializer => nil
|
7
7
|
@client = @store.instance_variable_get(:@client)
|
8
8
|
@rabbit = "bunny"
|
9
9
|
@default_store = Redis::Store.new
|
@@ -30,7 +30,7 @@ describe "Redis::Store::Namespace" do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "doesn't namespace a key which is already namespaced" do
|
33
|
-
@store.send(:interpolate, "#{@namespace}:rabbit").must_equal("#{@namespace}:rabbit")
|
33
|
+
_(@store.send(:interpolate, "#{@namespace}:rabbit")).must_equal("#{@namespace}:rabbit")
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should only delete namespaced keys" do
|
@@ -38,26 +38,26 @@ describe "Redis::Store::Namespace" do
|
|
38
38
|
@store.set 'def', 'fed'
|
39
39
|
|
40
40
|
@store.flushdb
|
41
|
-
@store.get('def').must_be_nil
|
42
|
-
@default_store.get('abc').must_equal('cba')
|
41
|
+
_(@store.get('def')).must_be_nil
|
42
|
+
_(@default_store.get('abc')).must_equal('cba')
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'should allow to change namespace on the fly' do
|
46
46
|
@default_store.set 'abc', 'cba'
|
47
47
|
@other_store.set 'foo', 'bar'
|
48
48
|
|
49
|
-
@default_store.keys.sort.must_equal ['abc', 'other:foo']
|
49
|
+
_(@default_store.keys.sort).must_equal ['abc', 'other:foo']
|
50
50
|
|
51
51
|
@default_store.with_namespace(@other_namespace) do
|
52
|
-
@default_store.keys.must_equal ['foo']
|
53
|
-
@default_store.get('foo').must_equal('bar')
|
52
|
+
_(@default_store.keys).must_equal ['foo']
|
53
|
+
_(@default_store.get('foo')).must_equal('bar')
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should not try to delete missing namespaced keys" do
|
58
58
|
empty_store = Redis::Store.new :namespace => 'empty'
|
59
59
|
empty_store.flushdb
|
60
|
-
empty_store.keys.must_be_empty
|
60
|
+
_(empty_store.keys).must_be_empty
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should work with dynamic namespace" do
|
@@ -74,7 +74,7 @@ describe "Redis::Store::Namespace" do
|
|
74
74
|
r2 = dyn_store.get 'key'
|
75
75
|
$ns = "ns1"
|
76
76
|
r1 = dyn_store.get 'key'
|
77
|
-
r1.must_equal('x') && r2.must_equal('y') && r3.must_be_nil
|
77
|
+
_(r1).must_equal('x') && _(r2).must_equal('y') && _(r3).must_be_nil
|
78
78
|
end
|
79
79
|
|
80
80
|
it "namespaces setex and ttl" do
|
@@ -82,11 +82,11 @@ describe "Redis::Store::Namespace" do
|
|
82
82
|
@other_store.flushdb
|
83
83
|
|
84
84
|
@store.setex('foo', 30, 'bar')
|
85
|
-
@store.ttl('foo').must_be_close_to(30)
|
86
|
-
@store.get('foo').must_equal('bar')
|
85
|
+
_(@store.ttl('foo')).must_be_close_to(30)
|
86
|
+
_(@store.get('foo')).must_equal('bar')
|
87
87
|
|
88
|
-
@other_store.ttl('foo').must_equal(-2)
|
89
|
-
@other_store.get('foo').must_be_nil
|
88
|
+
_(@other_store.ttl('foo')).must_equal(-2)
|
89
|
+
_(@other_store.get('foo')).must_be_nil
|
90
90
|
end
|
91
91
|
|
92
92
|
describe 'method calls' do
|
@@ -120,7 +120,18 @@ describe "Redis::Store::Namespace" do
|
|
120
120
|
|
121
121
|
it "should namespace keys" do
|
122
122
|
store.set "rabbit", @rabbit
|
123
|
-
store.keys("rabb*").must_equal [ "rabbit" ]
|
123
|
+
_(store.keys("rabb*")).must_equal [ "rabbit" ]
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should namespace scan when a pattern is given" do
|
127
|
+
store.set "rabbit", @rabbit
|
128
|
+
cursor = "0"
|
129
|
+
keys = []
|
130
|
+
begin
|
131
|
+
cursor, matched_keys = store.scan(cursor, match: "rabb*")
|
132
|
+
keys = keys.concat(matched_keys) unless matched_keys.empty?
|
133
|
+
end until cursor == "0"
|
134
|
+
_(keys).must_equal [ "rabbit" ]
|
124
135
|
end
|
125
136
|
|
126
137
|
it "should namespace exists" do
|
@@ -141,16 +152,16 @@ describe "Redis::Store::Namespace" do
|
|
141
152
|
it "should namespace mget" do
|
142
153
|
client.expects(:call).with([:mget, "#{@namespace}:rabbit", "#{@namespace}:white_rabbit"]).returns(%w[ foo bar ])
|
143
154
|
store.mget "rabbit", "white_rabbit" do |result|
|
144
|
-
result.must_equal(%w[ foo bar ])
|
155
|
+
_(result).must_equal(%w[ foo bar ])
|
145
156
|
end
|
146
157
|
end
|
147
158
|
|
148
159
|
it "should namespace mapped_mget" do
|
149
160
|
client.expects(:process).with([[:mget, "#{@namespace}:rabbit", "#{@namespace}:white_rabbit"]]).returns(%w[ foo bar ])
|
150
161
|
result = store.mapped_mget "rabbit", "white_rabbit"
|
151
|
-
result.keys.must_equal %w[ rabbit white_rabbit ]
|
152
|
-
result["rabbit"].must_equal "foo"
|
153
|
-
result["white_rabbit"].must_equal "bar"
|
162
|
+
_(result.keys).must_equal %w[ rabbit white_rabbit ]
|
163
|
+
_(result["rabbit"]).must_equal "foo"
|
164
|
+
_(result["white_rabbit"]).must_equal "bar"
|
154
165
|
end
|
155
166
|
|
156
167
|
it "should namespace expire" do
|
@@ -182,5 +193,112 @@ describe "Redis::Store::Namespace" do
|
|
182
193
|
store.flushdb
|
183
194
|
end
|
184
195
|
end
|
196
|
+
|
197
|
+
it "should namespace hdel" do
|
198
|
+
client.expects(:call).with([:hdel, "#{@namespace}:rabbit", "key1", "key2"]).once
|
199
|
+
store.hdel("rabbit", "key1", "key2")
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should namespace hget" do
|
203
|
+
client.expects(:call).with([:hget, "#{@namespace}:rabbit", "key"]).once
|
204
|
+
store.hget("rabbit", "key")
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should namespace hgetall" do
|
208
|
+
client.expects(:call).with([:hgetall, "#{@namespace}:rabbit"]).once
|
209
|
+
store.hgetall("rabbit")
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should namespace hexists" do
|
213
|
+
client.expects(:call).with([:hexists, "#{@namespace}:rabbit", "key"]).once
|
214
|
+
results = store.hexists("rabbit", "key")
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should namespace hincrby" do
|
218
|
+
client.expects(:call).with([:hincrby, "#{@namespace}:rabbit", "key", 1]).once
|
219
|
+
store.hincrby("rabbit", "key", 1)
|
220
|
+
end
|
221
|
+
|
222
|
+
it "should namespace hincrbyfloat" do
|
223
|
+
client.expects(:call).with([:hincrby, "#{@namespace}:rabbit", "key", 1.5]).once
|
224
|
+
store.hincrby("rabbit", "key", 1.5)
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should namespace hkeys" do
|
228
|
+
client.expects(:call).with([:hkeys, "#{@namespace}:rabbit"])
|
229
|
+
store.hkeys("rabbit")
|
230
|
+
end
|
231
|
+
|
232
|
+
it "should namespace hlen" do
|
233
|
+
client.expects(:call).with([:hlen, "#{@namespace}:rabbit"])
|
234
|
+
store.hlen("rabbit")
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should namespace hmget" do
|
238
|
+
client.expects(:call).with([:hmget, "#{@namespace}:rabbit", "key1", "key2"])
|
239
|
+
store.hmget("rabbit", "key1", "key2")
|
240
|
+
end
|
241
|
+
|
242
|
+
it "should namespace hmset" do
|
243
|
+
client.expects(:call).with([:hmset, "#{@namespace}:rabbit", "key", @rabbit])
|
244
|
+
store.hmset("rabbit", "key", @rabbit)
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should namespace hset" do
|
248
|
+
client.expects(:call).with([:hset, "#{@namespace}:rabbit", "key", @rabbit])
|
249
|
+
store.hset("rabbit", "key", @rabbit)
|
250
|
+
end
|
251
|
+
|
252
|
+
it "should namespace hsetnx" do
|
253
|
+
client.expects(:call).with([:hsetnx, "#{@namespace}:rabbit", "key", @rabbit])
|
254
|
+
store.hsetnx("rabbit", "key", @rabbit)
|
255
|
+
end
|
256
|
+
|
257
|
+
it "should namespace hvals" do
|
258
|
+
client.expects(:call).with([:hvals, "#{@namespace}:rabbit"])
|
259
|
+
store.hvals("rabbit")
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should namespace hscan" do
|
263
|
+
client.expects(:call).with([:hscan, "#{@namespace}:rabbit", 0])
|
264
|
+
store.hscan("rabbit", 0)
|
265
|
+
end
|
266
|
+
|
267
|
+
it "should namespace hscan_each with block" do
|
268
|
+
client.call([:hset, "#{@namespace}:rabbit", "key1", @rabbit])
|
269
|
+
client.expects(:call).with([:hscan, "#{@namespace}:rabbit", 0]).returns(["0", ["key1"]])
|
270
|
+
results = []
|
271
|
+
store.hscan_each("rabbit") do |key|
|
272
|
+
results << key
|
273
|
+
end
|
274
|
+
_(results).must_equal(["key1"])
|
275
|
+
end
|
276
|
+
|
277
|
+
it "should namespace hscan_each without block" do
|
278
|
+
client.call([:hset, "#{@namespace}:rabbit", "key1", @rabbit])
|
279
|
+
client.expects(:call).with([:hscan, "#{@namespace}:rabbit", 0]).returns(["0", ["key1"]])
|
280
|
+
results = store.hscan_each("rabbit").to_a
|
281
|
+
_(results).must_equal(["key1"])
|
282
|
+
end
|
283
|
+
|
284
|
+
it "should namespace zincrby" do
|
285
|
+
client.expects(:call).with([:zincrby, "#{@namespace}:rabbit", 1.0, "member"])
|
286
|
+
store.zincrby("rabbit", 1.0, "member")
|
287
|
+
end
|
288
|
+
|
289
|
+
it "should namespace zscore" do
|
290
|
+
client.expects(:call).with([:zscore, "#{@namespace}:rabbit", "member"])
|
291
|
+
store.zscore("rabbit", "member")
|
292
|
+
end
|
293
|
+
|
294
|
+
it "should namespace zadd" do
|
295
|
+
client.expects(:call).with([:zadd, "#{@namespace}:rabbit", 1.0, "member"])
|
296
|
+
store.zadd("rabbit", 1.0, "member")
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should namespace zrem" do
|
300
|
+
client.expects(:call).with([:zrem, "#{@namespace}:rabbit", "member"])
|
301
|
+
store.zrem("rabbit", "member")
|
302
|
+
end
|
185
303
|
end
|
186
304
|
end
|
@@ -11,18 +11,18 @@ describe "Redis::RedisVersion" do
|
|
11
11
|
|
12
12
|
describe '#redis_version' do
|
13
13
|
it 'returns redis version' do
|
14
|
-
@store.redis_version.to_s.must_match(/^\d{1}\.\d{1,}\.\d{1,}$/)
|
14
|
+
_(@store.redis_version.to_s).must_match(/^\d{1}\.\d{1,}\.\d{1,}$/)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
describe '#supports_redis_version?' do
|
19
19
|
it 'returns true if redis version is greater or equal to required version' do
|
20
20
|
@store.stubs(:redis_version).returns('2.8.19')
|
21
|
-
@store.supports_redis_version?('2.6.0').must_equal(true)
|
22
|
-
@store.supports_redis_version?('2.8.19').must_equal(true)
|
23
|
-
@store.supports_redis_version?('2.8.20').must_equal(false)
|
24
|
-
@store.supports_redis_version?('2.9.0').must_equal(false)
|
25
|
-
@store.supports_redis_version?('3.0.0').must_equal(false)
|
21
|
+
_(@store.supports_redis_version?('2.6.0')).must_equal(true)
|
22
|
+
_(@store.supports_redis_version?('2.8.19')).must_equal(true)
|
23
|
+
_(@store.supports_redis_version?('2.8.20')).must_equal(false)
|
24
|
+
_(@store.supports_redis_version?('2.9.0')).must_equal(false)
|
25
|
+
_(@store.supports_redis_version?('3.0.0')).must_equal(false)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|