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

72 lines
1.6 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package utils
import (
"context"
"testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
)
type countingReader struct {
client.Reader
gets int
}
func (r *countingReader) 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 TestTenantCachingReaderDeduplicatesTenantGets(t *testing.T) {
t.Parallel()
scheme := runtime.NewScheme()
if err := capsulev1beta2.AddToScheme(scheme); err != nil {
t.Fatal(err)
}
base := fake.NewClientBuilder().
WithScheme(scheme).
WithObjects(&capsulev1beta2.Tenant{
ObjectMeta: metav1.ObjectMeta{Name: "solar"},
}).
Build()
counting := &countingReader{Reader: base}
reader := NewTenantCachingReader(counting)
first := &capsulev1beta2.Tenant{}
if err := reader.Get(context.Background(), client.ObjectKey{Name: "solar"}, first); err != nil {
t.Fatal(err)
}
first.Labels = map[string]string{"mutated": "true"}
second := &capsulev1beta2.Tenant{}
if err := reader.Get(context.Background(), client.ObjectKey{Name: "solar"}, second); err != nil {
t.Fatal(err)
}
if counting.gets != 1 {
t.Fatalf("underlying Tenant gets = %d, want 1", counting.gets)
}
if second.Labels["mutated"] != "" {
t.Fatal("cached Tenant result was not deep-copied")
}
}