Files
Oliver BählerandGitHub 2252c530f4 feat(performance): removed duplicate client calls from all admission paths (#2054)
* chore

* perfromance improvements

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* perfromance improvements

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat(performance): removed duplicate client calls from all admission paths

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

---------

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>
2026-07-28 14:32:42 +02:00

77 lines
1.7 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package serviceaccounts
import (
"context"
"encoding/json"
"testing"
admissionv1 "k8s.io/api/admission/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
)
func TestHandlerSkipsUnlabeledServiceAccountsBeforeTenantLookup(t *testing.T) {
t.Parallel()
scheme := runtime.NewScheme()
if err := corev1.AddToScheme(scheme); err != nil {
t.Fatal(err)
}
base := fake.NewClientBuilder().WithScheme(scheme).Build()
reader := &serviceAccountCountingReader{Reader: base}
handler := Handler(nil)
request := serviceAccountAdmissionRequest(t, &corev1.ServiceAccount{})
if response := handler.OnCreate(nil, reader, admission.NewDecoder(scheme), nil)(
context.Background(),
request,
); response != nil {
t.Fatalf("response = %#v, want nil", response)
}
if reader.gets != 0 {
t.Fatalf("tenant lookup gets = %d, want 0 without promotion labels", reader.gets)
}
}
type serviceAccountCountingReader struct {
client.Reader
gets int
}
func (r *serviceAccountCountingReader) Get(
ctx context.Context,
key client.ObjectKey,
obj client.Object,
opts ...client.GetOption,
) error {
r.gets++
return r.Reader.Get(ctx, key, obj, opts...)
}
func serviceAccountAdmissionRequest(t *testing.T, sa *corev1.ServiceAccount) admission.Request {
t.Helper()
raw, err := json.Marshal(sa)
if err != nil {
t.Fatal(err)
}
return admission.Request{AdmissionRequest: admissionv1.AdmissionRequest{
Operation: admissionv1.Create,
Namespace: "solar",
Object: runtime.RawExtension{
Raw: raw,
},
}}
}