@@ -247,3 +247,108 @@ 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, subset with one matching pod" ,
290
+ metadata : makeFilterMetadata ([]interface {}{"10.0.0.1" }),
291
+ filter : & SubsetFilter {},
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
+ },
305
+ },
306
+ {
307
+ name : "SubsetFilter, subset with multiple matching pods" ,
308
+ metadata : makeFilterMetadata ([]interface {}{"10.0.0.1" , "10.0.0.2" , "10.0.0.3" }),
309
+ filter : & SubsetFilter {},
310
+ input : []types.Pod {
311
+ & types.PodMetrics {
312
+ Pod : & backend.Pod {Address : "10.0.0.1" },
313
+ },
314
+ & types.PodMetrics {
315
+ Pod : & backend.Pod {Address : "10.0.0.2" },
316
+ },
317
+ },
318
+ output : []types.Pod {
319
+ & types.PodMetrics {
320
+ Pod : & backend.Pod {Address : "10.0.0.1" },
321
+ },
322
+ & types.PodMetrics {
323
+ Pod : & backend.Pod {Address : "10.0.0.2" },
324
+ },
325
+ },
326
+ },
327
+ {
328
+ name : "SubsetFilter, subset with no matching pods" ,
329
+ metadata : makeFilterMetadata ([]interface {}{"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
+ },
341
+ }
342
+
343
+ for _ , test := range tests {
344
+ t .Run (test .name , func (t * testing.T ) {
345
+ req := & types.LLMRequest {}
346
+ req .SetMetadata (test .metadata )
347
+ got := test .filter .Filter (context .Background (), req , types .NewCycleState (), test .input )
348
+
349
+ if diff := cmp .Diff (test .output , got ); diff != "" {
350
+ t .Errorf ("Unexpected output (-want +got): %v" , diff )
351
+ }
352
+ })
353
+ }
354
+ }
0 commit comments