@@ -247,3 +247,128 @@ func TestLoRASoftAffinityDistribution(t *testing.T) {
247
247
actualAvailablePercent , availableLowerBound , availableUpperBound )
248
248
}
249
249
}
250
+
251
+ func TestSubsettingFilter (t * testing.T ) {
252
+ var makeFilterMetadata = func (data []interface {}) map [string ]any {
253
+ return map [string ]any {
254
+ "envoy.lb.subset_hint" : map [string ]any {
255
+ "x-gateway-destination-endpoint-subset" : data ,
256
+ },
257
+ }
258
+ }
259
+
260
+ tests := []struct {
261
+ name string
262
+ metadata map [string ]any
263
+ filter framework.Filter
264
+ input []types.Pod
265
+ output []types.Pod
266
+ }{
267
+ {
268
+ name : "SubsetFilter, filter not present — return all pods" ,
269
+ filter : & SubsetFilter {},
270
+ metadata : map [string ]any {},
271
+ input : []types.Pod {
272
+ & types.PodMetrics {
273
+ Pod : & backend.Pod {Address : "10.0.0.1" },
274
+ },
275
+ & types.PodMetrics {
276
+ Pod : & backend.Pod {Address : "10.0.0.2" },
277
+ },
278
+ },
279
+ output : []types.Pod {
280
+ & types.PodMetrics {
281
+ Pod : & backend.Pod {Address : "10.0.0.1" },
282
+ },
283
+ & types.PodMetrics {
284
+ Pod : & backend.Pod {Address : "10.0.0.2" },
285
+ },
286
+ },
287
+ },
288
+ {
289
+ name : "SubsetFilter, namespace present filter not present — return all pods" ,
290
+ filter : & SubsetFilter {},
291
+ metadata : map [string ]any {"envoy.lb.subset_hint" : map [string ]any {}},
292
+ input : []types.Pod {
293
+ & types.PodMetrics {
294
+ Pod : & backend.Pod {Address : "10.0.0.1" },
295
+ },
296
+ & types.PodMetrics {
297
+ Pod : & backend.Pod {Address : "10.0.0.2" },
298
+ },
299
+ },
300
+ output : []types.Pod {
301
+ & types.PodMetrics {
302
+ Pod : & backend.Pod {Address : "10.0.0.1" },
303
+ },
304
+ & types.PodMetrics {
305
+ Pod : & backend.Pod {Address : "10.0.0.2" },
306
+ },
307
+ },
308
+ },
309
+ {
310
+ name : "SubsetFilter, subset with one matching pod" ,
311
+ metadata : makeFilterMetadata ([]interface {}{"10.0.0.1" }),
312
+ filter : & SubsetFilter {},
313
+ input : []types.Pod {
314
+ & types.PodMetrics {
315
+ Pod : & backend.Pod {Address : "10.0.0.1" },
316
+ },
317
+ & types.PodMetrics {
318
+ Pod : & backend.Pod {Address : "10.0.0.2" },
319
+ },
320
+ },
321
+ output : []types.Pod {
322
+ & types.PodMetrics {
323
+ Pod : & backend.Pod {Address : "10.0.0.1" },
324
+ },
325
+ },
326
+ },
327
+ {
328
+ name : "SubsetFilter, subset with multiple matching pods" ,
329
+ metadata : makeFilterMetadata ([]interface {}{"10.0.0.1" , "10.0.0.2" , "10.0.0.3" }),
330
+ filter : & SubsetFilter {},
331
+ input : []types.Pod {
332
+ & types.PodMetrics {
333
+ Pod : & backend.Pod {Address : "10.0.0.1" },
334
+ },
335
+ & types.PodMetrics {
336
+ Pod : & backend.Pod {Address : "10.0.0.2" },
337
+ },
338
+ },
339
+ output : []types.Pod {
340
+ & types.PodMetrics {
341
+ Pod : & backend.Pod {Address : "10.0.0.1" },
342
+ },
343
+ & types.PodMetrics {
344
+ Pod : & backend.Pod {Address : "10.0.0.2" },
345
+ },
346
+ },
347
+ },
348
+ {
349
+ name : "SubsetFilter, subset with no matching pods" ,
350
+ metadata : makeFilterMetadata ([]interface {}{"10.0.0.3" }),
351
+ filter : & SubsetFilter {},
352
+ input : []types.Pod {
353
+ & types.PodMetrics {
354
+ Pod : & backend.Pod {Address : "10.0.0.1" },
355
+ },
356
+ & types.PodMetrics {
357
+ Pod : & backend.Pod {Address : "10.0.0.2" },
358
+ },
359
+ },
360
+ output : []types.Pod {},
361
+ },
362
+ }
363
+
364
+ for _ , test := range tests {
365
+ t .Run (test .name , func (t * testing.T ) {
366
+ req := types .NewLLMRequest (uuid .NewString (), "" , "" , nil , test .metadata )
367
+ got := test .filter .Filter (context .Background (), types .NewCycleState (), req , test .input )
368
+
369
+ if diff := cmp .Diff (test .output , got ); diff != "" {
370
+ t .Errorf ("Unexpected output (-want +got): %v" , diff )
371
+ }
372
+ })
373
+ }
374
+ }
0 commit comments