Skip to content

Commit f89feb6

Browse files
committed
test(gateway-api): add tests for custom backend filters
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
1 parent 7eb0708 commit f89feb6

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

pkg/router/gateway_api_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,56 @@ func TestGatewayAPIRouter_Routes(t *testing.T) {
276276
assert.Len(t, hr.Spec.Rules, 1)
277277
assert.Len(t, hr.Spec.Rules[0].Filters, 0)
278278
})
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+
})
279329
}
280330

281331
func TestGatewayAPIRouter_getSessionAffinityRouteRules(t *testing.T) {

0 commit comments

Comments
 (0)