@@ -180,6 +180,23 @@ func TestGetReplicationSetForListRule(t *testing.T) {
180
180
"z2" : {},
181
181
},
182
182
},
183
+ "should succeed on 1 unhealthy instances in RF=3 zone replication enabled but only 1 zone" : {
184
+ ringInstances : map [string ]ring.InstanceDesc {
185
+ "instance-1" : {Addr : "127.0.0.1" , State : ring .ACTIVE , Timestamp : now .Unix (), Tokens : g .GenerateTokens (ring .NewDesc (), "instance-1" , "z1" , 128 , true ), Zone : "z1" },
186
+ "instance-2" : {Addr : "127.0.0.2" , State : ring .ACTIVE , Timestamp : now .Add (- 10 * time .Second ).Unix (), Tokens : g .GenerateTokens (ring .NewDesc (), "instance-2" , "z1" , 128 , true ), Zone : "z1" },
187
+ "instance-3" : {Addr : "127.0.0.3" , State : ring .ACTIVE , Timestamp : now .Add (- 20 * time .Second ).Unix (), Tokens : g .GenerateTokens (ring .NewDesc (), "instance-3" , "z1" , 128 , true ), Zone : "z1" },
188
+ "instance-4" : {Addr : "127.0.0.4" , State : ring .PENDING , Timestamp : now .Add (- 30 * time .Second ).Unix (), Tokens : g .GenerateTokens (ring .NewDesc (), "instance-4" , "z1" , 128 , true ), Zone : "z1" },
189
+ },
190
+ ringHeartbeatTimeout : time .Minute ,
191
+ ringReplicationFactor : 3 ,
192
+ expectedSet : []string {"127.0.0.1" , "127.0.0.2" , "127.0.0.3" },
193
+ enableAZReplication : true ,
194
+ expectedFailedZones : map [string ]struct {}{
195
+ "z1" : {},
196
+ },
197
+ expectedMaxUnavailableZones : 0 ,
198
+ expectedMaxError : 1 ,
199
+ },
183
200
}
184
201
185
202
for testName , testData := range tests {
0 commit comments