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