From 62b9d5b2a4d8573b21d16bf9f5d00e2184aea258 Mon Sep 17 00:00:00 2001 From: arshadda Date: Tue, 28 Jan 2025 19:10:43 +0530 Subject: [PATCH 1/2] Sync Cache configuration in tests --- .../internal/controllers/suite_test.go | 15 +++++++++++++++ controllers/clustercache/suite_test.go | 19 ++++++++++++++++++- controllers/remote/suite_test.go | 19 ++++++++++++++++++- controlplane/kubeadm/internal/suite_test.go | 16 ++++++++++++++++ exp/internal/controllers/suite_test.go | 18 +++++++++++++++++- internal/controllers/cluster/suite_test.go | 17 ++++++++++++++++- .../controllers/clusterclass/suite_test.go | 18 +++++++++++++++++- internal/controllers/machine/suite_test.go | 17 ++++++++++++++++- .../machinedeployment/suite_test.go | 17 ++++++++++++++++- .../machinehealthcheck/suite_test.go | 18 +++++++++++++++++- internal/controllers/machineset/suite_test.go | 17 ++++++++++++++++- .../cluster/structuredmerge/suite_test.go | 18 +++++++++++++++++- 12 files changed, 199 insertions(+), 10 deletions(-) diff --git a/bootstrap/kubeadm/internal/controllers/suite_test.go b/bootstrap/kubeadm/internal/controllers/suite_test.go index dce30d9334f7..1d9ae9c5165b 100644 --- a/bootstrap/kubeadm/internal/controllers/suite_test.go +++ b/bootstrap/kubeadm/internal/controllers/suite_test.go @@ -23,9 +23,13 @@ import ( "testing" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/internal/test/envtest" ) @@ -48,9 +52,20 @@ func TestMain(m *testing.M) { panic(fmt.Sprintf("unable to create secretCachingClient: %v", err)) } } + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) os.Exit(envtest.Run(ctx, envtest.RunInput{ M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, ManagerUncachedObjs: []client.Object{ &corev1.ConfigMap{}, &corev1.Secret{}, diff --git a/controllers/clustercache/suite_test.go b/controllers/clustercache/suite_test.go index a9d8681627fe..c93bb5fa8e6e 100644 --- a/controllers/clustercache/suite_test.go +++ b/controllers/clustercache/suite_test.go @@ -20,8 +20,14 @@ import ( "os" "testing" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/internal/test/envtest" ) @@ -31,8 +37,19 @@ var ( ) func TestMain(m *testing.M) { + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, })) } diff --git a/controllers/remote/suite_test.go b/controllers/remote/suite_test.go index 8b6f016fa630..0e22ac8e1ec5 100644 --- a/controllers/remote/suite_test.go +++ b/controllers/remote/suite_test.go @@ -21,8 +21,14 @@ import ( "testing" "time" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/internal/test/envtest" ) @@ -36,8 +42,19 @@ var ( ) func TestMain(m *testing.M) { + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, })) } diff --git a/controlplane/kubeadm/internal/suite_test.go b/controlplane/kubeadm/internal/suite_test.go index 65e3c9a61ff1..bf42fe5b3d99 100644 --- a/controlplane/kubeadm/internal/suite_test.go +++ b/controlplane/kubeadm/internal/suite_test.go @@ -23,9 +23,13 @@ import ( "testing" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/internal/test/envtest" ) @@ -48,8 +52,20 @@ func TestMain(m *testing.M) { panic(fmt.Sprintf("unable to create secretCachingClient: %v", err)) } } + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, ManagerUncachedObjs: []client.Object{ &corev1.ConfigMap{}, &corev1.Secret{}, diff --git a/exp/internal/controllers/suite_test.go b/exp/internal/controllers/suite_test.go index 3aaff11385ca..7d7836f5c95e 100644 --- a/exp/internal/controllers/suite_test.go +++ b/exp/internal/controllers/suite_test.go @@ -23,10 +23,14 @@ import ( "testing" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/api/v1beta1/index" "sigs.k8s.io/cluster-api/controllers/clustercache" "sigs.k8s.io/cluster-api/controllers/remote" @@ -76,8 +80,20 @@ func TestMain(m *testing.M) { } } + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/cluster/suite_test.go b/internal/controllers/cluster/suite_test.go index 122a405cad73..9f2f52b92ca5 100644 --- a/internal/controllers/cluster/suite_test.go +++ b/internal/controllers/cluster/suite_test.go @@ -26,9 +26,12 @@ import ( . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/selection" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -110,8 +113,20 @@ func TestMain(m *testing.M) { SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(timeout) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/clusterclass/suite_test.go b/internal/controllers/clusterclass/suite_test.go index d945d10bdcac..384e07ad87a7 100644 --- a/internal/controllers/clusterclass/suite_test.go +++ b/internal/controllers/clusterclass/suite_test.go @@ -27,11 +27,14 @@ import ( corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/selection" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/component-base/featuregate" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -72,8 +75,21 @@ func TestMain(m *testing.M) { } SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(30 * time.Second) + + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, ManagerUncachedObjs: []client.Object{}, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, diff --git a/internal/controllers/machine/suite_test.go b/internal/controllers/machine/suite_test.go index b6e00091e0d6..7344a49377a0 100644 --- a/internal/controllers/machine/suite_test.go +++ b/internal/controllers/machine/suite_test.go @@ -26,9 +26,12 @@ import ( . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/selection" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -102,8 +105,20 @@ func TestMain(m *testing.M) { SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(timeout) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/machinedeployment/suite_test.go b/internal/controllers/machinedeployment/suite_test.go index ff041b191bbd..d46d0b0d07ec 100644 --- a/internal/controllers/machinedeployment/suite_test.go +++ b/internal/controllers/machinedeployment/suite_test.go @@ -28,12 +28,15 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/uuid" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -116,8 +119,20 @@ func TestMain(m *testing.M) { SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(timeout) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/machinehealthcheck/suite_test.go b/internal/controllers/machinehealthcheck/suite_test.go index d68122bc76eb..639e48af2e19 100644 --- a/internal/controllers/machinehealthcheck/suite_test.go +++ b/internal/controllers/machinehealthcheck/suite_test.go @@ -25,10 +25,14 @@ import ( . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/api/v1beta1/index" "sigs.k8s.io/cluster-api/controllers/clustercache" "sigs.k8s.io/cluster-api/controllers/remote" @@ -115,8 +119,20 @@ func TestMain(m *testing.M) { SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(timeout) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/machineset/suite_test.go b/internal/controllers/machineset/suite_test.go index ec9aa076bfb2..0eaef806b1f8 100644 --- a/internal/controllers/machineset/suite_test.go +++ b/internal/controllers/machineset/suite_test.go @@ -28,11 +28,14 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/util/uuid" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -109,8 +112,20 @@ func TestMain(m *testing.M) { SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(timeout) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) + os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/topology/cluster/structuredmerge/suite_test.go b/internal/controllers/topology/cluster/structuredmerge/suite_test.go index 5991ecd5bf9d..0d5f3c33d772 100644 --- a/internal/controllers/topology/cluster/structuredmerge/suite_test.go +++ b/internal/controllers/topology/cluster/structuredmerge/suite_test.go @@ -22,10 +22,15 @@ import ( "time" . "github.com/onsi/gomega" + corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/selection" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/internal/test/envtest" @@ -46,8 +51,19 @@ func init() { func TestMain(m *testing.M) { SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(30 * time.Second) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, SetupEnv: func(e *envtest.Environment) { env = e }, // We are testing the patch helper against a real API Server, no need of additional indexes/reconcilers. MinK8sVersion: "v1.22.0", // ClusterClass uses server side apply that went GA in 1.22; we do not support previous version because of bug/inconsistent behaviours in the older release. From bf8931ba9bc29f5abdc67bd8b68e19c49eb5de56 Mon Sep 17 00:00:00 2001 From: arshadda Date: Wed, 5 Feb 2025 10:30:44 +0530 Subject: [PATCH 2/2] Address review comments --- controllers/remote/suite_test.go | 4 ++++ exp/internal/controllers/suite_test.go | 4 ++++ .../internal/controllers/suite_test.go | 21 +++++++++++++++++++ internal/controllers/cluster/suite_test.go | 4 ++++ .../controllers/clusterclass/suite_test.go | 11 ++++++---- internal/controllers/machine/suite_test.go | 4 ++++ .../machinedeployment/suite_test.go | 4 ++++ .../machinehealthcheck/suite_test.go | 4 ++++ internal/controllers/machineset/suite_test.go | 4 ++++ .../cluster/structuredmerge/suite_test.go | 4 ++++ .../topology/cluster/suite_test.go | 20 +++++++++++++++++- 11 files changed, 79 insertions(+), 5 deletions(-) diff --git a/controllers/remote/suite_test.go b/controllers/remote/suite_test.go index 0e22ac8e1ec5..a857dee94c43 100644 --- a/controllers/remote/suite_test.go +++ b/controllers/remote/suite_test.go @@ -55,6 +55,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, })) } diff --git a/exp/internal/controllers/suite_test.go b/exp/internal/controllers/suite_test.go index 7d7836f5c95e..dff4554250f3 100644 --- a/exp/internal/controllers/suite_test.go +++ b/exp/internal/controllers/suite_test.go @@ -94,6 +94,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/exp/runtime/internal/controllers/suite_test.go b/exp/runtime/internal/controllers/suite_test.go index bc840c940a2b..921e31894a7b 100644 --- a/exp/runtime/internal/controllers/suite_test.go +++ b/exp/runtime/internal/controllers/suite_test.go @@ -22,8 +22,14 @@ import ( "os" "testing" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/cluster-api/api/v1beta1/index" "sigs.k8s.io/cluster-api/internal/test/envtest" ) @@ -39,8 +45,23 @@ func TestMain(m *testing.M) { panic(fmt.Sprintf("unable to setup index: %v", err)) } } + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) os.Exit(envtest.Run(ctx, envtest.RunInput{ + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, M: m, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, diff --git a/internal/controllers/cluster/suite_test.go b/internal/controllers/cluster/suite_test.go index 9f2f52b92ca5..ef1e8acb2826 100644 --- a/internal/controllers/cluster/suite_test.go +++ b/internal/controllers/cluster/suite_test.go @@ -127,6 +127,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/clusterclass/suite_test.go b/internal/controllers/clusterclass/suite_test.go index 384e07ad87a7..7ce39f4f5eb0 100644 --- a/internal/controllers/clusterclass/suite_test.go +++ b/internal/controllers/clusterclass/suite_test.go @@ -90,10 +90,13 @@ func TestMain(m *testing.M) { }, }, }, - ManagerUncachedObjs: []client.Object{}, - SetupEnv: func(e *envtest.Environment) { env = e }, - SetupIndexes: setupIndexes, - SetupReconcilers: setupReconcilers, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, + SetupEnv: func(e *envtest.Environment) { env = e }, + SetupIndexes: setupIndexes, + SetupReconcilers: setupReconcilers, })) } diff --git a/internal/controllers/machine/suite_test.go b/internal/controllers/machine/suite_test.go index 7344a49377a0..6c1d3bd592c1 100644 --- a/internal/controllers/machine/suite_test.go +++ b/internal/controllers/machine/suite_test.go @@ -119,6 +119,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/machinedeployment/suite_test.go b/internal/controllers/machinedeployment/suite_test.go index d46d0b0d07ec..be1239270f30 100644 --- a/internal/controllers/machinedeployment/suite_test.go +++ b/internal/controllers/machinedeployment/suite_test.go @@ -133,6 +133,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/machinehealthcheck/suite_test.go b/internal/controllers/machinehealthcheck/suite_test.go index 639e48af2e19..2b8254a9abd6 100644 --- a/internal/controllers/machinehealthcheck/suite_test.go +++ b/internal/controllers/machinehealthcheck/suite_test.go @@ -133,6 +133,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/machineset/suite_test.go b/internal/controllers/machineset/suite_test.go index 0eaef806b1f8..b8cf0b4dff68 100644 --- a/internal/controllers/machineset/suite_test.go +++ b/internal/controllers/machineset/suite_test.go @@ -126,6 +126,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers, diff --git a/internal/controllers/topology/cluster/structuredmerge/suite_test.go b/internal/controllers/topology/cluster/structuredmerge/suite_test.go index 0d5f3c33d772..ed3f1e15fe5c 100644 --- a/internal/controllers/topology/cluster/structuredmerge/suite_test.go +++ b/internal/controllers/topology/cluster/structuredmerge/suite_test.go @@ -64,6 +64,10 @@ func TestMain(m *testing.M) { }, }, }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, // We are testing the patch helper against a real API Server, no need of additional indexes/reconcilers. MinK8sVersion: "v1.22.0", // ClusterClass uses server side apply that went GA in 1.22; we do not support previous version because of bug/inconsistent behaviours in the older release. diff --git a/internal/controllers/topology/cluster/suite_test.go b/internal/controllers/topology/cluster/suite_test.go index 945e3520d8c5..0d59c84fcc3f 100644 --- a/internal/controllers/topology/cluster/suite_test.go +++ b/internal/controllers/topology/cluster/suite_test.go @@ -26,9 +26,12 @@ import ( . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/selection" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -104,8 +107,23 @@ func TestMain(m *testing.M) { } SetDefaultEventuallyPollingInterval(100 * time.Millisecond) SetDefaultEventuallyTimeout(30 * time.Second) + req, _ := labels.NewRequirement(clusterv1.ClusterNameLabel, selection.Exists, nil) + clusterSecretCacheSelector := labels.NewSelector().Add(*req) os.Exit(envtest.Run(ctx, envtest.RunInput{ - M: m, + M: m, + ManagerCacheOptions: cache.Options{ + ByObject: map[client.Object]cache.ByObject{ + // Only cache Secrets with the cluster name label. + // This is similar to the real world. + &corev1.Secret{}: { + Label: clusterSecretCacheSelector, + }, + }, + }, + ManagerUncachedObjs: []client.Object{ + &corev1.ConfigMap{}, + &corev1.Secret{}, + }, SetupEnv: func(e *envtest.Environment) { env = e }, SetupIndexes: setupIndexes, SetupReconcilers: setupReconcilers,