@@ -276,6 +276,56 @@ func TestGatewayAPIRouter_Routes(t *testing.T) {
276
276
assert .Len (t , hr .Spec .Rules , 1 )
277
277
assert .Len (t , hr .Spec .Rules [0 ].Filters , 0 )
278
278
})
279
+
280
+ t .Run ("custom backend filters" , func (t * testing.T ) {
281
+ canary := mocks .canary .DeepCopy ()
282
+ primaryHostName := v1 .PreciseHostname ("primary.example.com" )
283
+ canary .Spec .Service .Primary = & flaggerv1.CustomBackend {
284
+ Backend : & flaggerv1.HTTPBackendRefTemplate {
285
+ Filters : []v1.HTTPRouteFilter {
286
+ {
287
+ Type : v1 .HTTPRouteFilterURLRewrite ,
288
+ URLRewrite : & v1.HTTPURLRewriteFilter {
289
+ Hostname : & primaryHostName ,
290
+ },
291
+ },
292
+ },
293
+ },
294
+ }
295
+
296
+ kind := v1 .Kind ("Service" )
297
+ name := v1 .ObjectName ("canary" )
298
+ namespace := v1 .Namespace ("kube-system" )
299
+ port := v1 .PortNumber (30080 )
300
+ objRef := v1.BackendObjectReference {
301
+ Kind : & kind ,
302
+ Name : name ,
303
+ Namespace : & namespace ,
304
+ Port : & port ,
305
+ }
306
+
307
+ canary .Spec .Service .Canary = & flaggerv1.CustomBackend {
308
+ Backend : & flaggerv1.HTTPBackendRefTemplate {
309
+ BackendObjectReference : & objRef ,
310
+ },
311
+ }
312
+ err = router .SetRoutes (canary , 50 , 50 , false )
313
+ require .NoError (t , err )
314
+
315
+ httpRoute , err := router .gatewayAPIClient .GatewayapiV1 ().HTTPRoutes ("default" ).Get (context .TODO (), "podinfo" , metav1.GetOptions {})
316
+ require .NoError (t , err )
317
+
318
+ primary := httpRoute .Spec .Rules [0 ].BackendRefs [0 ]
319
+ assert .Equal (t , int32 (50 ), * primary .Weight )
320
+
321
+ canaryBackend := httpRoute .Spec .Rules [0 ].BackendRefs [1 ]
322
+ assert .Equal (t , canaryBackend .Name , name )
323
+ assert .Equal (t , canaryBackend .Namespace , & namespace )
324
+ assert .Equal (t , canaryBackend .Port , & port )
325
+
326
+ primaryBackend := httpRoute .Spec .Rules [0 ].BackendRefs [0 ].Filters [0 ].URLRewrite
327
+ assert .Equal (t , primaryBackend .Hostname , & primaryHostName )
328
+ })
279
329
}
280
330
281
331
func TestGatewayAPIRouter_getSessionAffinityRouteRules (t * testing.T ) {
0 commit comments