Skip to content

Commit 8d00a48

Browse files
committed
Simplify TestGetNode unit test
Signed-off-by: Stefan Büringer buringerst@vmware.com
1 parent a1d7ee3 commit 8d00a48

File tree

1 file changed

+5
-117
lines changed

1 file changed

+5
-117
lines changed

internal/controllers/machine/machine_controller_noderef_test.go

Lines changed: 5 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package machine
1818

1919
import (
20-
"context"
2120
"fmt"
2221
"testing"
2322
"time"
@@ -32,17 +31,12 @@ import (
3231
ctrl "sigs.k8s.io/controller-runtime"
3332
"sigs.k8s.io/controller-runtime/pkg/client"
3433
"sigs.k8s.io/controller-runtime/pkg/client/fake"
35-
"sigs.k8s.io/controller-runtime/pkg/controller"
36-
"sigs.k8s.io/controller-runtime/pkg/handler"
37-
"sigs.k8s.io/controller-runtime/pkg/reconcile"
3834

3935
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
4036
"sigs.k8s.io/cluster-api/api/core/v1beta2/index"
4137
"sigs.k8s.io/cluster-api/controllers/clustercache"
42-
"sigs.k8s.io/cluster-api/controllers/remote"
4338
"sigs.k8s.io/cluster-api/feature"
4439
"sigs.k8s.io/cluster-api/internal/topology/ownerrefs"
45-
capicontrollerutil "sigs.k8s.io/cluster-api/internal/util/controller"
4640
"sigs.k8s.io/cluster-api/util"
4741
"sigs.k8s.io/cluster-api/util/kubeconfig"
4842
"sigs.k8s.io/cluster-api/util/test/builder"
@@ -336,45 +330,14 @@ func TestReconcileNode(t *testing.T) {
336330
}
337331

338332
func TestGetNode(t *testing.T) {
339-
g := NewWithT(t)
340-
341-
ns, err := env.CreateNamespace(ctx, "test-get-node")
342-
g.Expect(err).ToNot(HaveOccurred())
343-
344-
// Set up cluster to test against.
345-
testCluster := &clusterv1.Cluster{
346-
ObjectMeta: metav1.ObjectMeta{
347-
GenerateName: "test-get-node-",
348-
Namespace: ns.Name,
349-
},
350-
Spec: clusterv1.ClusterSpec{
351-
ControlPlaneRef: clusterv1.ContractVersionedObjectReference{
352-
APIGroup: builder.ControlPlaneGroupVersion.Group,
353-
Kind: builder.GenericControlPlaneKind,
354-
Name: "cp1",
355-
},
356-
},
357-
}
358-
359-
g.Expect(env.Create(ctx, testCluster)).To(Succeed())
360-
// Set InfrastructureReady to true so ClusterCache creates the clusterAccessor.
361-
patch := client.MergeFrom(testCluster.DeepCopy())
362-
testCluster.Status.Initialization.InfrastructureProvisioned = ptr.To(true)
363-
g.Expect(env.Status().Patch(ctx, testCluster, patch)).To(Succeed())
364-
365-
g.Expect(env.CreateKubeconfigSecret(ctx, testCluster)).To(Succeed())
366-
defer func(do ...client.Object) {
367-
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
368-
}(ns, testCluster)
369-
370333
testCases := []struct {
371334
name string
372335
node *corev1.Node
373336
providerIDInput string
374337
error error
375338
}{
376339
{
377-
name: "full providerID matches",
340+
name: "providerID matches",
378341
node: &corev1.Node{
379342
ObjectMeta: metav1.ObjectMeta{
380343
Name: "test-get-node-node-1",
@@ -386,31 +349,7 @@ func TestGetNode(t *testing.T) {
386349
providerIDInput: "aws://us-east-1/test-get-node-1",
387350
},
388351
{
389-
name: "aws prefix: cloudProvider and ID matches",
390-
node: &corev1.Node{
391-
ObjectMeta: metav1.ObjectMeta{
392-
Name: "test-get-node-node-2",
393-
},
394-
Spec: corev1.NodeSpec{
395-
ProviderID: "aws://us-west-2/test-get-node-2",
396-
},
397-
},
398-
providerIDInput: "aws://us-west-2/test-get-node-2",
399-
},
400-
{
401-
name: "gce prefix, cloudProvider and ID matches",
402-
node: &corev1.Node{
403-
ObjectMeta: metav1.ObjectMeta{
404-
Name: "test-get-node-gce-node-2",
405-
},
406-
Spec: corev1.NodeSpec{
407-
ProviderID: "gce://us-central1/test-get-node-2",
408-
},
409-
},
410-
providerIDInput: "gce://us-central1/test-get-node-2",
411-
},
412-
{
413-
name: "Node is not found",
352+
name: "Node is not found, providerID does not match",
414353
node: &corev1.Node{
415354
ObjectMeta: metav1.ObjectMeta{
416355
Name: "test-get-node-not-found",
@@ -424,64 +363,13 @@ func TestGetNode(t *testing.T) {
424363
},
425364
}
426365

427-
nodesToCleanup := make([]client.Object, 0, len(testCases))
428-
for _, tc := range testCases {
429-
g.Expect(env.Create(ctx, tc.node)).To(Succeed())
430-
nodesToCleanup = append(nodesToCleanup, tc.node)
431-
}
432-
defer func(do ...client.Object) {
433-
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
434-
}(nodesToCleanup...)
435-
436-
clusterCache, err := clustercache.SetupWithManager(ctx, env.Manager, clustercache.Options{
437-
SecretClient: env.GetClient(),
438-
Cache: clustercache.CacheOptions{
439-
Indexes: []clustercache.CacheOptionsIndex{clustercache.NodeProviderIDIndex},
440-
},
441-
Client: clustercache.ClientOptions{
442-
UserAgent: remote.DefaultClusterAPIUserAgent("test-controller-manager"),
443-
Cache: clustercache.ClientCacheOptions{
444-
DisableFor: []client.Object{
445-
// Don't cache ConfigMaps & Secrets.
446-
&corev1.ConfigMap{},
447-
&corev1.Secret{},
448-
},
449-
},
450-
},
451-
}, controller.Options{MaxConcurrentReconciles: 10, SkipNameValidation: ptr.To(true)})
452-
if err != nil {
453-
panic(fmt.Sprintf("Failed to create ClusterCache: %v", err))
454-
}
455-
defer clusterCache.(interface{ Shutdown() }).Shutdown()
456-
457-
r := &Reconciler{
458-
ClusterCache: clusterCache,
459-
Client: env,
460-
}
461-
462-
predicateLog := ctrl.LoggerFrom(ctx).WithValues("controller", "node")
463-
w, err := capicontrollerutil.NewControllerManagedBy(env.Manager, predicateLog).For(&corev1.Node{}).Build(r)
464-
g.Expect(err).ToNot(HaveOccurred())
465-
466-
// Retry because the ClusterCache might not have immediately created the clusterAccessor.
467-
g.Eventually(func(g Gomega) {
468-
g.Expect(clusterCache.Watch(ctx, util.ObjectKey(testCluster), clustercache.NewWatcher(clustercache.WatcherOptions{
469-
Name: "TestGetNode",
470-
Watcher: w,
471-
Kind: &corev1.Node{},
472-
EventHandler: handler.EnqueueRequestsFromMapFunc(func(context.Context, client.Object) []reconcile.Request {
473-
return nil
474-
}),
475-
}))).To(Succeed())
476-
}, 1*time.Minute, 5*time.Second).Should(Succeed())
477-
478366
for _, tc := range testCases {
479367
t.Run(tc.name, func(t *testing.T) {
480368
g := NewWithT(t)
481-
remoteClient, err := r.ClusterCache.GetClient(ctx, util.ObjectKey(testCluster))
482-
g.Expect(err).ToNot(HaveOccurred())
483369

484-
node, err := r.getNode(ctx, remoteClient, tc.providerIDInput)
370+
remoteClient := fake.NewClientBuilder().WithObjects(tc.node).WithIndex(&corev1.Node{}, index.NodeProviderIDField, index.NodeByProviderID).Build()
371+
372+
node, err := (&Reconciler{}).getNode(ctx, remoteClient, tc.providerIDInput)
485373
if tc.error != nil {
486374
g.Expect(err).To(Equal(tc.error))
487375
return

0 commit comments

Comments
 (0)