From 1060b70bc20f675ed7622c2fc9bd5025e37dd4bb Mon Sep 17 00:00:00 2001 From: facchettos Date: Fri, 19 Jul 2024 16:25:11 +0200 Subject: [PATCH 1/6] serated the tests into multiple tests --- .../resources/nodes/syncer_test.go | 46 +++++++++++-------- .../resources/nodes/translate_test.go | 20 ++++---- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/pkg/controllers/resources/nodes/syncer_test.go b/pkg/controllers/resources/nodes/syncer_test.go index d675ee347e..793559226c 100644 --- a/pkg/controllers/resources/nodes/syncer_test.go +++ b/pkg/controllers/resources/nodes/syncer_test.go @@ -71,11 +71,11 @@ func TestNodeDeletion(t *testing.T) { }) } -func TestSync(t *testing.T) { - baseName := types.NamespacedName{ +var ( + baseName types.NamespacedName = types.NamespacedName{ Name: "mynode", } - basePod := &corev1.Pod{ + basePod corev1.Pod = corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "mypod", }, @@ -83,7 +83,8 @@ func TestSync(t *testing.T) { NodeName: baseName.Name, }, } - baseNode := &corev1.Node{ + + baseNode corev1.Node = corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, }, @@ -95,7 +96,7 @@ func TestSync(t *testing.T) { }, }, } - baseVNode := &corev1.Node{ + baseVNode corev1.Node = corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, }, @@ -113,6 +114,9 @@ func TestSync(t *testing.T) { }, }, } +) + +func TestSync(t *testing.T) { editedNode := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, @@ -218,8 +222,10 @@ func TestSync(t *testing.T) { }, }, }) +} - baseNode = &corev1.Node{ +func TestTaints(t *testing.T) { + baseNode := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Annotations: map[string]string{ @@ -253,7 +259,7 @@ func TestSync(t *testing.T) { }, } - editedNode = &corev1.Node{ + editedNode := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Annotations: map[string]string{ @@ -331,11 +337,13 @@ func TestSync(t *testing.T) { }, }, }) +} +func TestLabelSelector(t *testing.T) { baseName = types.NamespacedName{ Name: "mynode", } - basePod = &corev1.Pod{ + basePod = corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "mypod", }, @@ -343,7 +351,7 @@ func TestSync(t *testing.T) { NodeName: baseName.Name, }, } - baseNode = &corev1.Node{ + baseNode = corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Labels: map[string]string{ @@ -361,7 +369,7 @@ func TestSync(t *testing.T) { }, }, } - baseVNode = &corev1.Node{ + baseVNode = corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, }, @@ -382,7 +390,7 @@ func TestSync(t *testing.T) { }, }, } - editedNode = &corev1.Node{ + editedNode := corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Annotations: map[string]string{ @@ -477,12 +485,10 @@ func TestSync(t *testing.T) { }, }, }) +} - baseName = types.NamespacedName{ - Name: "mynode", - } - - baseNode = &corev1.Node{ +func TestClearNode(t *testing.T) { + baseNode = corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Labels: map[string]string{ @@ -505,7 +511,7 @@ func TestSync(t *testing.T) { }, }, } - baseVNode = &corev1.Node{ + baseVNode = corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, }, @@ -526,7 +532,7 @@ func TestSync(t *testing.T) { }, }, } - editedNode = &corev1.Node{ + editedNode := corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Annotations: map[string]string{ @@ -573,8 +579,10 @@ func TestSync(t *testing.T) { }, }, }) +} - editedNode = &corev1.Node{ +func TestClearNodeImageDisabled(t *testing.T) { + editedNode := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, Annotations: map[string]string{ diff --git a/pkg/controllers/resources/nodes/translate_test.go b/pkg/controllers/resources/nodes/translate_test.go index ec1da46bd8..c4f72ad4ca 100644 --- a/pkg/controllers/resources/nodes/translate_test.go +++ b/pkg/controllers/resources/nodes/translate_test.go @@ -2,7 +2,6 @@ package nodes import ( "encoding/json" - "fmt" "testing" "github.com/loft-sh/vcluster/pkg/util/translate" @@ -293,15 +292,16 @@ func TestTranslateBackwards(t *testing.T) { // test cases s := &nodeSyncer{} for _, testCase := range testCases { - fmt.Println(testCase.name) - result := testCase.vNode.DeepCopy() - s.translateUpdateBackwards(testCase.pNode, result) - if result == nil { - result = testCase.vNode - } - assert.DeepEqual(t, result.Annotations, testCase.expectedAnnotations) - assert.DeepEqual(t, result.Labels, testCase.expectedLabels) - assert.DeepEqual(t, result.Spec.Taints, testCase.expectedTaints) + t.Run(testCase.name, func(t *testing.T) { + result := testCase.vNode.DeepCopy() + s.translateUpdateBackwards(testCase.pNode, result) + if result == nil { + result = testCase.vNode + } + assert.DeepEqual(t, result.Annotations, testCase.expectedAnnotations) + assert.DeepEqual(t, result.Labels, testCase.expectedLabels) + assert.DeepEqual(t, result.Spec.Taints, testCase.expectedTaints) + }) } } From c42a8f7cb134022af2d0cd6f3de0ad4cb2b46dd4 Mon Sep 17 00:00:00 2001 From: facchettos Date: Fri, 19 Jul 2024 16:42:49 +0200 Subject: [PATCH 2/6] declare variables first --- .../resources/nodes/syncer_test.go | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/pkg/controllers/resources/nodes/syncer_test.go b/pkg/controllers/resources/nodes/syncer_test.go index 793559226c..1f41bedf87 100644 --- a/pkg/controllers/resources/nodes/syncer_test.go +++ b/pkg/controllers/resources/nodes/syncer_test.go @@ -20,6 +20,51 @@ import ( "k8s.io/apimachinery/pkg/types" ) +var ( + baseName types.NamespacedName = types.NamespacedName{ + Name: "mynode", + } + basePod corev1.Pod = corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "mypod", + }, + Spec: corev1.PodSpec{ + NodeName: baseName.Name, + }, + } + + baseNode corev1.Node = corev1.Node{ + ObjectMeta: metav1.ObjectMeta{ + Name: baseName.Name, + }, + Status: corev1.NodeStatus{ + DaemonEndpoints: corev1.NodeDaemonEndpoints{ + KubeletEndpoint: corev1.DaemonEndpoint{ + Port: 0, + }, + }, + }, + } + baseVNode corev1.Node = corev1.Node{ + ObjectMeta: metav1.ObjectMeta{ + Name: baseName.Name, + }, + Status: corev1.NodeStatus{ + Addresses: []corev1.NodeAddress{ + { + Address: GetNodeHost(baseName.Name), + Type: corev1.NodeHostName, + }, + }, + DaemonEndpoints: corev1.NodeDaemonEndpoints{ + KubeletEndpoint: corev1.DaemonEndpoint{ + Port: constants.KubeletPort, + }, + }, + }, + } +) + func newFakeSyncer(t *testing.T, ctx *synccontext.RegisterContext) (*synccontext.SyncContext, *nodeSyncer) { // we need that index here as well otherwise we wouldn't find the related pod err := ctx.VirtualManager.GetFieldIndexer().IndexField(ctx, &corev1.Pod{}, constants.IndexByAssigned, func(rawObj client.Object) []string { @@ -71,51 +116,6 @@ func TestNodeDeletion(t *testing.T) { }) } -var ( - baseName types.NamespacedName = types.NamespacedName{ - Name: "mynode", - } - basePod corev1.Pod = corev1.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: "mypod", - }, - Spec: corev1.PodSpec{ - NodeName: baseName.Name, - }, - } - - baseNode corev1.Node = corev1.Node{ - ObjectMeta: metav1.ObjectMeta{ - Name: baseName.Name, - }, - Status: corev1.NodeStatus{ - DaemonEndpoints: corev1.NodeDaemonEndpoints{ - KubeletEndpoint: corev1.DaemonEndpoint{ - Port: 0, - }, - }, - }, - } - baseVNode corev1.Node = corev1.Node{ - ObjectMeta: metav1.ObjectMeta{ - Name: baseName.Name, - }, - Status: corev1.NodeStatus{ - Addresses: []corev1.NodeAddress{ - { - Address: GetNodeHost(baseName.Name), - Type: corev1.NodeHostName, - }, - }, - DaemonEndpoints: corev1.NodeDaemonEndpoints{ - KubeletEndpoint: corev1.DaemonEndpoint{ - Port: constants.KubeletPort, - }, - }, - }, - } -) - func TestSync(t *testing.T) { editedNode := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ From db538bac827b3c358cbb315e2697bae584696f12 Mon Sep 17 00:00:00 2001 From: facchettos Date: Mon, 22 Jul 2024 12:17:27 +0200 Subject: [PATCH 3/6] refactored sync test --- .../resources/nodes/syncer_test.go | 248 +++++++++++------- 1 file changed, 146 insertions(+), 102 deletions(-) diff --git a/pkg/controllers/resources/nodes/syncer_test.go b/pkg/controllers/resources/nodes/syncer_test.go index 1f41bedf87..1ab77dcd4b 100644 --- a/pkg/controllers/resources/nodes/syncer_test.go +++ b/pkg/controllers/resources/nodes/syncer_test.go @@ -65,58 +65,60 @@ var ( } ) -func newFakeSyncer(t *testing.T, ctx *synccontext.RegisterContext) (*synccontext.SyncContext, *nodeSyncer) { - // we need that index here as well otherwise we wouldn't find the related pod - err := ctx.VirtualManager.GetFieldIndexer().IndexField(ctx, &corev1.Pod{}, constants.IndexByAssigned, func(rawObj client.Object) []string { - pod := rawObj.(*corev1.Pod) - return []string{pod.Spec.NodeName} - }) - assert.NilError(t, err) - - syncContext, object := syncertesting.FakeStartSyncer(t, ctx, func(ctx *synccontext.RegisterContext) (syncertypes.Object, error) { - return NewSyncer(ctx, &fakeNodeServiceProvider{}) - }) - return syncContext, object.(*nodeSyncer) -} - -func TestNodeDeletion(t *testing.T) { - baseName := types.NamespacedName{ - Name: "mynode", - } - baseNode := &corev1.Node{ - ObjectMeta: metav1.ObjectMeta{ - Name: baseName.Name, +func TestSyncToVirtual(t *testing.T) { + testCases := []struct { + name string + withVirtualPod bool + virtualNodeExists bool + expectNode bool + }{ + { + name: "Create backward", + withVirtualPod: true, + expectNode: true, }, - Status: corev1.NodeStatus{ - DaemonEndpoints: corev1.NodeDaemonEndpoints{ - KubeletEndpoint: corev1.DaemonEndpoint{ - Port: 0, - }, - }, + { + name: "Create backward not needed", }, } + for _, tC := range testCases { + t.Run(tC.name, func(t *testing.T) { + baseNode := baseNode.DeepCopy() - syncertesting.RunTests(t, []*syncertesting.SyncTest{ - { - Name: "Delete unused node backwards", - InitialVirtualState: []runtime.Object{baseNode}, - InitialPhysicalState: []runtime.Object{baseNode}, - ExpectedVirtualState: map[schema.GroupVersionKind][]runtime.Object{ - corev1.SchemeGroupVersion.WithKind("Node"): {}, - }, - Sync: func(ctx *synccontext.RegisterContext) { - _, nodesSyncer := newFakeSyncer(t, ctx) - syncController, err := syncer.NewSyncController(ctx, nodesSyncer) - assert.NilError(t, err) + initialObjects := []runtime.Object{} + expectedVirtualObjects := map[schema.GroupVersionKind][]runtime.Object{} - _, err = syncController.Reconcile(ctx, controllerruntime.Request{NamespacedName: baseName}) - assert.NilError(t, err) - }, - }, - }) + if tC.withVirtualPod { + initialObjects = append(initialObjects, basePod.DeepCopy()) + expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Pod")] = []runtime.Object{basePod.DeepCopy()} + } + + if tC.virtualNodeExists { + initialObjects = append(initialObjects, baseNode.DeepCopy()) + } + if tC.expectNode { + expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Node")] = []runtime.Object{baseNode.DeepCopy()} + } + + // add more logic as needed + test := syncertesting.SyncTest{ + Name: tC.name, + InitialVirtualState: initialObjects, + ExpectedVirtualState: expectedVirtualObjects, + Sync: func(ctx *synccontext.RegisterContext) { + ctx.Config.Networking.Advanced.ProxyKubelets.ByIP = false + syncCtx, syncer := newFakeSyncer(t, ctx) + _, err := syncer.SyncToVirtual(syncCtx, baseNode.DeepCopy()) + assert.NilError(t, err) + }, + } + + test.Run(t, syncertesting.NewFakeRegisterContext) + }) + } } -func TestSync(t *testing.T) { +func TestSyncBothExist(t *testing.T) { editedNode := &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: baseName.Name, @@ -146,78 +148,120 @@ func TestSync(t *testing.T) { }, }, } - - syncertesting.RunTests(t, []*syncertesting.SyncTest{ + testCases := []struct { + name string + withVirtualPod bool + virtualNodeExists bool + modifiedPhysical bool + expectNoVNode bool + }{ { - Name: "Create backward", - InitialVirtualState: []runtime.Object{basePod.DeepCopy()}, - ExpectedVirtualState: map[schema.GroupVersionKind][]runtime.Object{ - corev1.SchemeGroupVersion.WithKind("Node"): {baseNode.DeepCopy()}, - corev1.SchemeGroupVersion.WithKind("Pod"): {basePod.DeepCopy()}, - }, - Sync: func(ctx *synccontext.RegisterContext) { - syncCtx, syncer := newFakeSyncer(t, ctx) - _, err := syncer.SyncToVirtual(syncCtx, baseNode.DeepCopy()) - assert.NilError(t, err) - }, + name: "Update backward no change", + withVirtualPod: true, + virtualNodeExists: true, + modifiedPhysical: false, }, { - Name: "Create backward not needed", - InitialVirtualState: []runtime.Object{}, - ExpectedVirtualState: map[schema.GroupVersionKind][]runtime.Object{ - corev1.SchemeGroupVersion.WithKind("Node"): {}, - corev1.SchemeGroupVersion.WithKind("Pod"): {}, - }, - Sync: func(ctx *synccontext.RegisterContext) { - syncCtx, syncer := newFakeSyncer(t, ctx) - _, err := syncer.SyncToVirtual(syncCtx, baseNode.DeepCopy()) - assert.NilError(t, err) - }, + name: "Update backward", + withVirtualPod: true, + virtualNodeExists: true, + modifiedPhysical: true, }, { - Name: "Update backward", - InitialVirtualState: []runtime.Object{basePod.DeepCopy(), baseNode.DeepCopy()}, - ExpectedVirtualState: map[schema.GroupVersionKind][]runtime.Object{ - corev1.SchemeGroupVersion.WithKind("Node"): {editedNode.DeepCopy()}, - corev1.SchemeGroupVersion.WithKind("Pod"): {basePod.DeepCopy()}, - }, - Sync: func(ctx *synccontext.RegisterContext) { - ctx.Config.Networking.Advanced.ProxyKubelets.ByIP = false - syncCtx, syncer := newFakeSyncer(t, ctx) - _, err := syncer.Sync(syncCtx, editedNode.DeepCopy(), baseNode.DeepCopy()) - assert.NilError(t, err) + name: "Delete backward", + virtualNodeExists: true, + expectNoVNode: true, + }, + } + for _, tC := range testCases { + t.Run(tC.name, func(t *testing.T) { + baseVNode := baseVNode - err = ctx.VirtualManager.GetClient().Get(ctx, types.NamespacedName{Name: baseNode.Name}, baseNode.DeepCopy()) - assert.NilError(t, err) + initialObjects := []runtime.Object{} + expectedVirtualObjects := map[schema.GroupVersionKind][]runtime.Object{} - _, err = syncer.Sync(syncCtx, editedNode.DeepCopy(), baseNode.DeepCopy()) - assert.NilError(t, err) - }, + if tC.withVirtualPod { + initialObjects = append(initialObjects, basePod.DeepCopy()) + expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Pod")] = []runtime.Object{basePod.DeepCopy()} + } + + if tC.virtualNodeExists { + initialObjects = append(initialObjects, baseVNode.DeepCopy()) + } + if !tC.expectNoVNode { + expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Node")] = []runtime.Object{baseVNode.DeepCopy()} + } + + physical := baseNode.DeepCopy() + + if tC.modifiedPhysical { + expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Node")] = []runtime.Object{editedNode.DeepCopy()} + physical = editedNode.DeepCopy() + } + + // add more logic as needed + test := syncertesting.SyncTest{ + Name: tC.name, + InitialVirtualState: initialObjects, + ExpectedVirtualState: expectedVirtualObjects, + Sync: func(ctx *synccontext.RegisterContext) { + ctx.Config.Networking.Advanced.ProxyKubelets.ByIP = false + syncCtx, syncer := newFakeSyncer(t, ctx) + _, err := syncer.Sync(syncCtx, physical, baseVNode.DeepCopy()) + assert.NilError(t, err) + }, + } + + test.Run(t, syncertesting.NewFakeRegisterContext) + }) + } +} + +func newFakeSyncer(t *testing.T, ctx *synccontext.RegisterContext) (*synccontext.SyncContext, *nodeSyncer) { + // we need that index here as well otherwise we wouldn't find the related pod + err := ctx.VirtualManager.GetFieldIndexer().IndexField(ctx, &corev1.Pod{}, constants.IndexByAssigned, func(rawObj client.Object) []string { + pod := rawObj.(*corev1.Pod) + return []string{pod.Spec.NodeName} + }) + assert.NilError(t, err) + + syncContext, object := syncertesting.FakeStartSyncer(t, ctx, func(ctx *synccontext.RegisterContext) (syncertypes.Object, error) { + return NewSyncer(ctx, &fakeNodeServiceProvider{}) + }) + return syncContext, object.(*nodeSyncer) +} + +func TestNodeDeletion(t *testing.T) { + baseName := types.NamespacedName{ + Name: "mynode", + } + baseNode := &corev1.Node{ + ObjectMeta: metav1.ObjectMeta{ + Name: baseName.Name, }, - { - Name: "Update backward no change", - InitialVirtualState: []runtime.Object{basePod.DeepCopy(), baseNode.DeepCopy()}, - ExpectedVirtualState: map[schema.GroupVersionKind][]runtime.Object{ - corev1.SchemeGroupVersion.WithKind("Node"): {baseNode.DeepCopy()}, - corev1.SchemeGroupVersion.WithKind("Pod"): {basePod.DeepCopy()}, - }, - Sync: func(ctx *synccontext.RegisterContext) { - ctx.Config.Networking.Advanced.ProxyKubelets.ByIP = false - syncCtx, syncer := newFakeSyncer(t, ctx) - _, err := syncer.Sync(syncCtx, baseNode.DeepCopy(), baseVNode.DeepCopy()) - assert.NilError(t, err) + Status: corev1.NodeStatus{ + DaemonEndpoints: corev1.NodeDaemonEndpoints{ + KubeletEndpoint: corev1.DaemonEndpoint{ + Port: 0, + }, }, }, + } + + syncertesting.RunTests(t, []*syncertesting.SyncTest{ { - Name: "Delete backward", - InitialVirtualState: []runtime.Object{baseNode.DeepCopy()}, + Name: "Delete unused node backwards", + InitialVirtualState: []runtime.Object{baseNode}, + InitialPhysicalState: []runtime.Object{baseNode}, ExpectedVirtualState: map[schema.GroupVersionKind][]runtime.Object{ corev1.SchemeGroupVersion.WithKind("Node"): {}, - corev1.SchemeGroupVersion.WithKind("Pod"): {}, }, Sync: func(ctx *synccontext.RegisterContext) { - syncCtx, syncer := newFakeSyncer(t, ctx) - _, err := syncer.Sync(syncCtx, baseNode.DeepCopy(), baseNode.DeepCopy()) + _, nodesSyncer := newFakeSyncer(t, ctx) + syncController, err := syncer.NewSyncController(ctx, nodesSyncer) + assert.NilError(t, err) + + _, err = syncController.Reconcile(ctx, controllerruntime.Request{NamespacedName: baseName}) assert.NilError(t, err) }, }, From 90a17db598355c14234c9063b059d64f515caba3 Mon Sep 17 00:00:00 2001 From: facchettos Date: Mon, 22 Jul 2024 12:18:20 +0200 Subject: [PATCH 4/6] removed useless param --- pkg/controllers/resources/nodes/syncer_test.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkg/controllers/resources/nodes/syncer_test.go b/pkg/controllers/resources/nodes/syncer_test.go index 1ab77dcd4b..17714da29f 100644 --- a/pkg/controllers/resources/nodes/syncer_test.go +++ b/pkg/controllers/resources/nodes/syncer_test.go @@ -67,10 +67,9 @@ var ( func TestSyncToVirtual(t *testing.T) { testCases := []struct { - name string - withVirtualPod bool - virtualNodeExists bool - expectNode bool + name string + withVirtualPod bool + expectNode bool }{ { name: "Create backward", @@ -93,9 +92,6 @@ func TestSyncToVirtual(t *testing.T) { expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Pod")] = []runtime.Object{basePod.DeepCopy()} } - if tC.virtualNodeExists { - initialObjects = append(initialObjects, baseNode.DeepCopy()) - } if tC.expectNode { expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Node")] = []runtime.Object{baseNode.DeepCopy()} } From 67fd8f0bfb9cb92422dc2f1f45acbe416f9a97f9 Mon Sep 17 00:00:00 2001 From: facchettos Date: Mon, 22 Jul 2024 13:50:48 +0200 Subject: [PATCH 5/6] added testing library mod --- pkg/syncer/testing/testing.go | 38 +++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/pkg/syncer/testing/testing.go b/pkg/syncer/testing/testing.go index aebc07bd86..1f122d0a06 100644 --- a/pkg/syncer/testing/testing.go +++ b/pkg/syncer/testing/testing.go @@ -36,26 +36,27 @@ type SyncTest struct { InitialPhysicalState []runtime.Object InitialVirtualState []runtime.Object AdjustConfig func(vConfig *config.VirtualClusterConfig) + pClient *testingutil.FakeIndexClient + vClient *testingutil.FakeIndexClient + vConfig *config.VirtualClusterConfig } func RunTests(t *testing.T, tests []*SyncTest) { // run focus first for _, test := range tests { t.Run(test.Name, func(t *testing.T) { - test.Run(t, test, NewFakeRegisterContext) + test.Run(t, NewFakeRegisterContext) }) } } func RunTestsWithContext(t *testing.T, createContext NewContextFunc, tests []*SyncTest) { for _, test := range tests { - test.Run(t, test, createContext) + test.Run(t, createContext) } } -func (s *SyncTest) Run(t *testing.T, test *SyncTest, createContext NewContextFunc) { - ctx := context.Background() - +func (s *SyncTest) Setup() (*testingutil.FakeIndexClient, *testingutil.FakeIndexClient, *config.VirtualClusterConfig) { for i := range s.InitialPhysicalState { s.InitialPhysicalState[i] = s.InitialPhysicalState[i].DeepCopyObject() } @@ -63,25 +64,36 @@ func (s *SyncTest) Run(t *testing.T, test *SyncTest, createContext NewContextFun s.InitialVirtualState[i] = s.InitialVirtualState[i].DeepCopyObject() } - pClient := testingutil.NewFakeClient(scheme.Scheme, s.InitialPhysicalState...) - vClient := testingutil.NewFakeClient(scheme.Scheme, s.InitialVirtualState...) - vConfig := NewFakeConfig() - if test.AdjustConfig != nil { - test.AdjustConfig(vConfig) + s.pClient = testingutil.NewFakeClient(scheme.Scheme, s.InitialPhysicalState...) + s.vClient = testingutil.NewFakeClient(scheme.Scheme, s.InitialVirtualState...) + s.vConfig = NewFakeConfig() + return s.pClient, s.vClient, s.vConfig +} + +func (s *SyncTest) Run(t *testing.T, createContext NewContextFunc) { + s.Setup() + + if s.AdjustConfig != nil { + s.AdjustConfig(s.vConfig) } // do the sync - s.Sync(createContext(vConfig, pClient, vClient)) + s.Sync(createContext(s.vConfig, s.pClient, s.vClient)) + + s.Validate(t) +} +func (s *SyncTest) Validate(t *testing.T) { + ctx := context.Background() // Compare states for gvk, objs := range s.ExpectedPhysicalState { - err := CompareObjs(ctx, t, s.Name+" physical state", pClient, gvk, scheme.Scheme, objs, s.Compare) + err := CompareObjs(ctx, t, s.Name+" physical state", s.pClient, gvk, scheme.Scheme, objs, s.Compare) if err != nil { t.Fatalf("%s - Physical State mismatch: %v", s.Name, err) } } for gvk, objs := range s.ExpectedVirtualState { - err := CompareObjs(ctx, t, s.Name+" virtual state", vClient, gvk, scheme.Scheme, objs, s.Compare) + err := CompareObjs(ctx, t, s.Name+" virtual state", s.vClient, gvk, scheme.Scheme, objs, s.Compare) if err != nil { t.Fatalf("%s - Virtual State mismatch: %v", s.Name, err) } From 482e71a1a878c83009226a5bd0ca5e33a85ff48a Mon Sep 17 00:00:00 2001 From: facchettos Date: Mon, 22 Jul 2024 14:10:48 +0200 Subject: [PATCH 6/6] removed comment --- pkg/controllers/resources/nodes/syncer_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/controllers/resources/nodes/syncer_test.go b/pkg/controllers/resources/nodes/syncer_test.go index 17714da29f..e36db845e2 100644 --- a/pkg/controllers/resources/nodes/syncer_test.go +++ b/pkg/controllers/resources/nodes/syncer_test.go @@ -96,7 +96,6 @@ func TestSyncToVirtual(t *testing.T) { expectedVirtualObjects[corev1.SchemeGroupVersion.WithKind("Node")] = []runtime.Object{baseNode.DeepCopy()} } - // add more logic as needed test := syncertesting.SyncTest{ Name: tC.name, InitialVirtualState: initialObjects, @@ -195,7 +194,6 @@ func TestSyncBothExist(t *testing.T) { physical = editedNode.DeepCopy() } - // add more logic as needed test := syncertesting.SyncTest{ Name: tC.name, InitialVirtualState: initialObjects,