@@ -186,3 +186,57 @@ func TestDesc_Ready(t *testing.T) {
186
186
t .Fatal ("expected ready, got" , err )
187
187
}
188
188
}
189
+
190
+ func TestDesc_getTokensByZone (t * testing.T ) {
191
+ tests := map [string ]struct {
192
+ desc * Desc
193
+ expected map [string ][]TokenDesc
194
+ }{
195
+ "empty ring" : {
196
+ desc : & Desc {Ingesters : map [string ]IngesterDesc {}},
197
+ expected : map [string ][]TokenDesc {},
198
+ },
199
+ "single zone" : {
200
+ desc : & Desc {Ingesters : map [string ]IngesterDesc {
201
+ "instance-1" : {Addr : "127.0.0.1" , Tokens : []uint32 {1 , 5 }, Zone : "" },
202
+ "instance-2" : {Addr : "127.0.0.1" , Tokens : []uint32 {2 , 4 }, Zone : "" },
203
+ "instance-3" : {Addr : "127.0.0.1" , Tokens : []uint32 {3 , 6 }, Zone : "" },
204
+ }},
205
+ expected : map [string ][]TokenDesc {
206
+ "" : {
207
+ {Token : 1 , Ingester : "instance-1" , Zone : "" },
208
+ {Token : 2 , Ingester : "instance-2" , Zone : "" },
209
+ {Token : 3 , Ingester : "instance-3" , Zone : "" },
210
+ {Token : 4 , Ingester : "instance-2" , Zone : "" },
211
+ {Token : 5 , Ingester : "instance-1" , Zone : "" },
212
+ {Token : 6 , Ingester : "instance-3" , Zone : "" },
213
+ },
214
+ },
215
+ },
216
+ "multiple zones" : {
217
+ desc : & Desc {Ingesters : map [string ]IngesterDesc {
218
+ "instance-1" : {Addr : "127.0.0.1" , Tokens : []uint32 {1 , 5 }, Zone : "zone-1" },
219
+ "instance-2" : {Addr : "127.0.0.1" , Tokens : []uint32 {2 , 4 }, Zone : "zone-1" },
220
+ "instance-3" : {Addr : "127.0.0.1" , Tokens : []uint32 {3 , 6 }, Zone : "zone-2" },
221
+ }},
222
+ expected : map [string ][]TokenDesc {
223
+ "zone-1" : {
224
+ {Token : 1 , Ingester : "instance-1" , Zone : "zone-1" },
225
+ {Token : 2 , Ingester : "instance-2" , Zone : "zone-1" },
226
+ {Token : 4 , Ingester : "instance-2" , Zone : "zone-1" },
227
+ {Token : 5 , Ingester : "instance-1" , Zone : "zone-1" },
228
+ },
229
+ "zone-2" : {
230
+ {Token : 3 , Ingester : "instance-3" , Zone : "zone-2" },
231
+ {Token : 6 , Ingester : "instance-3" , Zone : "zone-2" },
232
+ },
233
+ },
234
+ },
235
+ }
236
+
237
+ for testName , testData := range tests {
238
+ t .Run (testName , func (t * testing.T ) {
239
+ assert .Equal (t , testData .expected , testData .desc .getTokensByZone ())
240
+ })
241
+ }
242
+ }
0 commit comments