@@ -24,8 +24,10 @@ def test_sentinel_connection
24
24
}
25
25
end
26
26
27
- RedisMock . start ( handler . call ( :s1 ) , { } , 26381 ) do
28
- RedisMock . start ( handler . call ( :s2 ) , { } , 26382 ) do
27
+ RedisMock . start ( handler . call ( :s1 ) , { } , 0 ) do |s1_port |
28
+ RedisMock . start ( handler . call ( :s2 ) , { } , 0 ) do |s2_port |
29
+ sentinels [ 0 ] [ :port ] = s1_port
30
+ sentinels [ 1 ] [ :port ] = s2_port
29
31
redis = Redis . new ( :url => "redis://master1" , :sentinels => sentinels , :role => :master )
30
32
31
33
assert redis . ping
@@ -59,8 +61,10 @@ def test_sentinel_failover
59
61
end
60
62
}
61
63
62
- RedisMock . start ( s1 , { } , 26381 ) do
63
- RedisMock . start ( s2 , { } , 26382 ) do
64
+ RedisMock . start ( s1 , { } , 0 ) do |s1_port |
65
+ RedisMock . start ( s2 , { } , 0 ) do |s2_port |
66
+ sentinels [ 0 ] [ :port ] = s1_port
67
+ sentinels [ 1 ] [ :port ] = s2_port
64
68
redis = Redis . new ( :url => "redis://master1" , :sentinels => sentinels , :role => :master )
65
69
66
70
assert redis . ping
@@ -94,8 +98,10 @@ def test_sentinel_failover_prioritize_healthy_sentinel
94
98
end
95
99
}
96
100
97
- RedisMock . start ( s1 , { } , 26381 ) do
98
- RedisMock . start ( s2 , { } , 26382 ) do
101
+ RedisMock . start ( s1 , { } , 0 ) do |s1_port |
102
+ RedisMock . start ( s2 , { } , 0 ) do |s2_port |
103
+ sentinels [ 0 ] [ :port ] = s1_port
104
+ sentinels [ 1 ] [ :port ] = s2_port
99
105
redis = Redis . new ( :url => "redis://master1" , :sentinels => sentinels , :role => :master )
100
106
101
107
assert redis . ping
@@ -118,20 +124,22 @@ def test_sentinel_with_non_sentinel_options
118
124
:m1 => [ ]
119
125
}
120
126
121
- sentinel = {
122
- :auth => lambda do |pass |
123
- commands [ :s1 ] << [ "auth" , pass ]
124
- "-ERR unknown command 'auth'"
125
- end ,
126
- :select => lambda do |db |
127
- commands [ :s1 ] << [ "select" , db ]
128
- "-ERR unknown command 'select'"
129
- end ,
130
- :sentinel => lambda do |command , *args |
131
- commands [ :s1 ] << [ command , *args ]
132
- [ "127.0.0.1" , "6382" ]
133
- end
134
- }
127
+ sentinel = lambda do |port |
128
+ {
129
+ :auth => lambda do |pass |
130
+ commands [ :s1 ] << [ "auth" , pass ]
131
+ "-ERR unknown command 'auth'"
132
+ end ,
133
+ :select => lambda do |db |
134
+ commands [ :s1 ] << [ "select" , db ]
135
+ "-ERR unknown command 'select'"
136
+ end ,
137
+ :sentinel => lambda do |command , *args |
138
+ commands [ :s1 ] << [ command , *args ]
139
+ [ "127.0.0.1" , port . to_s ]
140
+ end
141
+ }
142
+ end
135
143
136
144
master = {
137
145
:auth => lambda do |pass |
@@ -144,8 +152,9 @@ def test_sentinel_with_non_sentinel_options
144
152
end
145
153
}
146
154
147
- RedisMock . start ( master , { } , 6382 ) do
148
- RedisMock . start ( sentinel , { } , 26381 ) do
155
+ RedisMock . start ( master , { } , 0 ) do |master_port |
156
+ RedisMock . start ( sentinel . call ( master_port ) , { } , 0 ) do |sen_port |
157
+ sentinels [ 0 ] [ :port ] = sen_port
149
158
redis = Redis . new ( :url => "redis://:foo@master1/15" , :sentinels => sentinels , :role => :master )
150
159
151
160
assert redis . ping
@@ -159,11 +168,13 @@ def test_sentinel_with_non_sentinel_options
159
168
def test_sentinel_role_mismatch
160
169
sentinels = [ { :host => "127.0.0.1" , :port => 26381 } ]
161
170
162
- sentinel = {
163
- :sentinel => lambda do |command , *args |
164
- [ "127.0.0.1" , "6382" ]
165
- end
166
- }
171
+ sentinel = lambda do |port |
172
+ {
173
+ :sentinel => lambda do |command , *args |
174
+ [ "127.0.0.1" , port . to_s ]
175
+ end
176
+ }
177
+ end
167
178
168
179
master = {
169
180
:role => lambda do
@@ -172,8 +183,9 @@ def test_sentinel_role_mismatch
172
183
}
173
184
174
185
ex = assert_raise ( Redis ::ConnectionError ) do
175
- RedisMock . start ( master , { } , 6382 ) do
176
- RedisMock . start ( sentinel , { } , 26381 ) do
186
+ RedisMock . start ( master , { } , 0 ) do |master_port |
187
+ RedisMock . start ( sentinel . call ( master_port ) , { } , 0 ) do |sen_port |
188
+ sentinels [ 0 ] [ :port ] = sen_port
177
189
redis = Redis . new ( :url => "redis://master1" , :sentinels => sentinels , :role => :master )
178
190
179
191
assert redis . ping
@@ -190,15 +202,15 @@ def test_sentinel_retries
190
202
191
203
connections = [ ]
192
204
193
- handler = lambda do |id |
205
+ handler = lambda do |id , port |
194
206
{
195
207
:sentinel => lambda do |command , *args |
196
208
connections << id
197
209
198
210
if connections . count ( id ) < 2
199
211
:close
200
212
else
201
- [ "127.0.0.1" , "6382" ]
213
+ [ "127.0.0.1" , port . to_s ]
202
214
end
203
215
end
204
216
}
@@ -210,9 +222,11 @@ def test_sentinel_retries
210
222
end
211
223
}
212
224
213
- RedisMock . start ( master , { } , 6382 ) do
214
- RedisMock . start ( handler . call ( :s1 ) , { } , 26381 ) do
215
- RedisMock . start ( handler . call ( :s2 ) , { } , 26382 ) do
225
+ RedisMock . start ( master , { } , 0 ) do |master_port |
226
+ RedisMock . start ( handler . call ( :s1 , master_port ) , { } , 0 ) do |s1_port |
227
+ RedisMock . start ( handler . call ( :s2 , master_port ) , { } , 0 ) do |s2_port |
228
+ sentinels [ 0 ] [ :port ] = s1_port
229
+ sentinels [ 1 ] [ :port ] = s2_port
216
230
redis = Redis . new ( :url => "redis://master1" , :sentinels => sentinels , :role => :master , :reconnect_attempts => 1 )
217
231
218
232
assert redis . ping
@@ -225,9 +239,9 @@ def test_sentinel_retries
225
239
connections . clear
226
240
227
241
ex = assert_raise ( Redis ::CannotConnectError ) do
228
- RedisMock . start ( master , { } , 6382 ) do
229
- RedisMock . start ( handler . call ( :s1 ) , { } , 26381 ) do
230
- RedisMock . start ( handler . call ( :s2 ) , { } , 26382 ) do
242
+ RedisMock . start ( master , { } , 0 ) do | master_port |
243
+ RedisMock . start ( handler . call ( :s1 , master_port ) , { } , 0 ) do | s1_port |
244
+ RedisMock . start ( handler . call ( :s2 , master_port ) , { } , 0 ) do | s2_port |
231
245
redis = Redis . new ( :url => "redis://master1" , :sentinels => sentinels , :role => :master , :reconnect_attempts => 0 )
232
246
233
247
assert redis . ping
0 commit comments