@@ -311,6 +311,104 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
311
311
},
312
312
expectedErrors : field.ErrorList {},
313
313
},
314
+ {
315
+ name : "duplicated backends" ,
316
+ ingresses : []networkingv1.Ingress {{
317
+ ObjectMeta : metav1.ObjectMeta {Name : "duplicate-a" , Namespace : "test" },
318
+ Spec : networkingv1.IngressSpec {
319
+ IngressClassName : PtrTo ("example-proxy" ),
320
+ Rules : []networkingv1.IngressRule {{
321
+ Host : "example.com" ,
322
+ IngressRuleValue : networkingv1.IngressRuleValue {
323
+ HTTP : & networkingv1.HTTPIngressRuleValue {
324
+ Paths : []networkingv1.HTTPIngressPath {{
325
+ Path : "/foo" ,
326
+ PathType : & iPrefix ,
327
+ Backend : networkingv1.IngressBackend {
328
+ Service : & networkingv1.IngressServiceBackend {
329
+ Name : "example" ,
330
+ Port : networkingv1.ServiceBackendPort {
331
+ Number : 3000 ,
332
+ },
333
+ },
334
+ },
335
+ }},
336
+ },
337
+ },
338
+ }},
339
+ },
340
+ }, {
341
+ ObjectMeta : metav1.ObjectMeta {Name : "duplicate-b" , Namespace : "test" },
342
+ Spec : networkingv1.IngressSpec {
343
+ IngressClassName : PtrTo ("example-proxy" ),
344
+ Rules : []networkingv1.IngressRule {{
345
+ Host : "example.com" ,
346
+ IngressRuleValue : networkingv1.IngressRuleValue {
347
+ HTTP : & networkingv1.HTTPIngressRuleValue {
348
+ Paths : []networkingv1.HTTPIngressPath {{
349
+ Path : "/foo" ,
350
+ PathType : & iPrefix ,
351
+ Backend : networkingv1.IngressBackend {
352
+ Service : & networkingv1.IngressServiceBackend {
353
+ Name : "example" ,
354
+ Port : networkingv1.ServiceBackendPort {
355
+ Number : 3000 ,
356
+ },
357
+ },
358
+ },
359
+ }},
360
+ },
361
+ },
362
+ }},
363
+ },
364
+ }},
365
+ expectedGatewayResources : i2gw.GatewayResources {
366
+ Gateways : map [types.NamespacedName ]gatewayv1.Gateway {
367
+ {Namespace : "test" , Name : "example-proxy" }: {
368
+ ObjectMeta : metav1.ObjectMeta {Name : "example-proxy" , Namespace : "test" },
369
+ Spec : gatewayv1.GatewaySpec {
370
+ GatewayClassName : "example-proxy" ,
371
+ Listeners : []gatewayv1.Listener {{
372
+ Name : "example-com-http" ,
373
+ Port : 80 ,
374
+ Protocol : gatewayv1 .HTTPProtocolType ,
375
+ Hostname : PtrTo (gatewayv1 .Hostname ("example.com" )),
376
+ }},
377
+ },
378
+ },
379
+ },
380
+ HTTPRoutes : map [types.NamespacedName ]gatewayv1.HTTPRoute {
381
+ {Namespace : "test" , Name : "duplicate-a-example-com" }: {
382
+ ObjectMeta : metav1.ObjectMeta {Name : "duplicate-a-example-com" , Namespace : "test" },
383
+ Spec : gatewayv1.HTTPRouteSpec {
384
+ CommonRouteSpec : gatewayv1.CommonRouteSpec {
385
+ ParentRefs : []gatewayv1.ParentReference {{
386
+ Name : "example-proxy" ,
387
+ }},
388
+ },
389
+ Hostnames : []gatewayv1.Hostname {"example.com" },
390
+ Rules : []gatewayv1.HTTPRouteRule {{
391
+ Matches : []gatewayv1.HTTPRouteMatch {{
392
+ Path : & gatewayv1.HTTPPathMatch {
393
+ Type : & gPathPrefix ,
394
+ Value : PtrTo ("/foo" ),
395
+ },
396
+ }},
397
+ BackendRefs : []gatewayv1.HTTPBackendRef {{
398
+ BackendRef : gatewayv1.BackendRef {
399
+ BackendObjectReference : gatewayv1.BackendObjectReference {
400
+ Name : "example" ,
401
+ Port : PtrTo (gatewayv1 .PortNumber (3000 )),
402
+ },
403
+ },
404
+ }},
405
+ }},
406
+ },
407
+ },
408
+ },
409
+ },
410
+ expectedErrors : field.ErrorList {},
411
+ },
314
412
}
315
413
316
414
for _ , tc := range testCases {
0 commit comments