mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-08-25 16:07:24 +00:00
* feat: add leader-election tuning Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat: add leader-election tuning Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat: add tracing for admission Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat: add tracing for admission Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * add tenant --------- Signed-off-by: Oliver Baehler <oliver@sudo-i.net>
75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
// Copyright 2020-2026 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package ingress_test
|
|
|
|
import (
|
|
"reflect"
|
|
"sort"
|
|
"testing"
|
|
|
|
"github.com/projectcapsule/capsule/pkg/runtime/indexers/ingress"
|
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
|
networkingv1 "k8s.io/api/networking/v1"
|
|
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
)
|
|
|
|
func TestHostnamePathIndexers(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
want := []string{"example.com;/", "example.com;/api"}
|
|
|
|
tests := []struct {
|
|
name string
|
|
idx ingress.HostnamePath
|
|
obj client.Object
|
|
}{
|
|
{
|
|
name: "networking v1",
|
|
idx: ingress.HostnamePath{Obj: &networkingv1.Ingress{}},
|
|
obj: &networkingv1.Ingress{Spec: networkingv1.IngressSpec{Rules: []networkingv1.IngressRule{{
|
|
Host: "example.com",
|
|
IngressRuleValue: networkingv1.IngressRuleValue{HTTP: &networkingv1.HTTPIngressRuleValue{Paths: []networkingv1.HTTPIngressPath{
|
|
{Path: "/"}, {Path: "/api"},
|
|
}}},
|
|
}}}},
|
|
},
|
|
{
|
|
name: "networking v1beta1",
|
|
idx: ingress.HostnamePath{Obj: &networkingv1beta1.Ingress{}},
|
|
obj: &networkingv1beta1.Ingress{Spec: networkingv1beta1.IngressSpec{Rules: []networkingv1beta1.IngressRule{{
|
|
Host: "example.com",
|
|
IngressRuleValue: networkingv1beta1.IngressRuleValue{HTTP: &networkingv1beta1.HTTPIngressRuleValue{Paths: []networkingv1beta1.HTTPIngressPath{
|
|
{Path: "/"}, {Path: "/api"},
|
|
}}},
|
|
}}}},
|
|
},
|
|
{
|
|
name: "extensions v1beta1",
|
|
idx: ingress.HostnamePath{Obj: &extensionsv1beta1.Ingress{}},
|
|
obj: &extensionsv1beta1.Ingress{Spec: extensionsv1beta1.IngressSpec{Rules: []extensionsv1beta1.IngressRule{{
|
|
Host: "example.com",
|
|
IngressRuleValue: extensionsv1beta1.IngressRuleValue{HTTP: &extensionsv1beta1.HTTPIngressRuleValue{Paths: []extensionsv1beta1.HTTPIngressPath{
|
|
{Path: "/"}, {Path: "/api"},
|
|
}}},
|
|
}}}},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if tt.idx.Object() == nil || tt.idx.Field() != ingress.HostPathPair {
|
|
t.Fatalf("unexpected object/field")
|
|
}
|
|
got := tt.idx.Func()(tt.obj)
|
|
sort.Strings(got)
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("Func() = %#v, want %#v", got, want)
|
|
}
|
|
})
|
|
}
|
|
}
|