From 82b2c395c6b66d480690150f1b600ee8482c5a94 Mon Sep 17 00:00:00 2001 From: razashahid107 Date: Wed, 20 Sep 2023 06:16:06 +0500 Subject: [PATCH 1/3] Add unit tests for state_test.go --- .../topology/cluster/scope/state_test.go | 131 +++++++++++++++++- 1 file changed, 129 insertions(+), 2 deletions(-) diff --git a/internal/controllers/topology/cluster/scope/state_test.go b/internal/controllers/topology/cluster/scope/state_test.go index 40a7a9d97a6c..bfc1217563ee 100644 --- a/internal/controllers/topology/cluster/scope/state_test.go +++ b/internal/controllers/topology/cluster/scope/state_test.go @@ -29,7 +29,7 @@ import ( "sigs.k8s.io/cluster-api/internal/test/builder" ) -func TestIsUpgrading(t *testing.T) { +func TestMDIsUpgrading(t *testing.T) { g := NewWithT(t) scheme := runtime.NewScheme() g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) @@ -115,7 +115,93 @@ func TestIsUpgrading(t *testing.T) { } } -func TestUpgrading(t *testing.T) { +func TestMPIsUpgrading(t *testing.T) { + g := NewWithT(t) + scheme := runtime.NewScheme() + g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) + + tests := []struct { + name string + mp *clusterv1.MachinePool + machines []*clusterv1.Machine + want bool + wantErr bool + }{ + { + name: "should return false if all the machines of MachinePool have the same version as the MachinePool", + mp: builder.MachinePool("ns", "mp1"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build(), + machines: []*clusterv1.Machine{ + builder.Machine("ns", "machine1"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build(), + builder.Machine("ns", "machine2"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build(), + }, + want: false, + wantErr: false, + }, + { + name: "should return true if at least one of the machines of MachinePool has a different version", + mp: builder.MachinePool("ns", "mp1"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build(), + machines: []*clusterv1.Machine{ + builder.Machine("ns", "machine1"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build(), + builder.Machine("ns", "machine2"). + WithClusterName("cluster1"). + WithVersion("v1.2.2"). + Build(), + }, + want: true, + wantErr: false, + }, + { + name: "should return false if the MachinePool has no machines (creation phase)", + mp: builder.MachinePool("ns", "mp1"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build(), + machines: []*clusterv1.Machine{}, + want: false, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + g := NewWithT(t) + ctx := context.Background() + objs := []client.Object{} + objs = append(objs, tt.mp) + for _, m := range tt.machines { + objs = append(objs, m) + } + fakeClient := fake.NewClientBuilder().WithScheme(scheme).WithObjects(objs...).Build() + mpState := &MachinePoolState{ + Object: tt.mp, + } + got, err := mpState.IsUpgrading(ctx, fakeClient) + if tt.wantErr { + g.Expect(err).To(HaveOccurred()) + } else { + g.Expect(err).ToNot(HaveOccurred()) + g.Expect(got).To(Equal(tt.want)) + } + }) + } +} + +func TestMDUpgrading(t *testing.T) { g := NewWithT(t) scheme := runtime.NewScheme() g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) @@ -155,3 +241,44 @@ func TestUpgrading(t *testing.T) { g.Expect(got).To(BeComparableTo(want)) }) } + +func TestMPUpgrading(t *testing.T) { + g := NewWithT(t) + scheme := runtime.NewScheme() + g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) + + ctx := context.Background() + + t.Run("should return the names of the upgrading MachinePools", func(t *testing.T) { + stableMP := builder.MachinePool("ns", "stableMP"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build() + stableMPMachine := builder.Machine("ns", "stableMP-machine1"). + WithClusterName("cluster1"). + WithVersion("v1.2.3"). + Build() + + upgradingMP := builder.MachinePool("ns", "upgradingMP"). + WithClusterName("cluster2"). + WithVersion("v1.2.3"). + Build() + upgradingMPMachine := builder.Machine("ns", "upgradingMP-machine1"). + WithClusterName("cluster2"). + WithVersion("v1.2.2"). + Build() + + objs := []client.Object{stableMP, stableMPMachine, upgradingMP, upgradingMPMachine} + fakeClient := fake.NewClientBuilder().WithObjects(objs...).WithScheme(scheme).Build() + + mpsStateMap := MachinePoolsStateMap{ + "stableMP": {Object: stableMP}, + "upgradingMP": {Object: upgradingMP}, + } + want := []string{"upgradingMP"} + + got, err := mpsStateMap.Upgrading(ctx, fakeClient) + g.Expect(err).ToNot(HaveOccurred()) + g.Expect(got).To(BeComparableTo(want)) + }) +} From dc7fc2ef19b8bf949ad7dd1c505e3e4e09fed6d4 Mon Sep 17 00:00:00 2001 From: razashahid107 Date: Thu, 28 Sep 2023 07:32:24 +0500 Subject: [PATCH 2/3] Added expv1 --- internal/controllers/topology/cluster/scope/state_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/controllers/topology/cluster/scope/state_test.go b/internal/controllers/topology/cluster/scope/state_test.go index bfc1217563ee..1f2611adc23d 100644 --- a/internal/controllers/topology/cluster/scope/state_test.go +++ b/internal/controllers/topology/cluster/scope/state_test.go @@ -118,8 +118,7 @@ func TestMDIsUpgrading(t *testing.T) { func TestMPIsUpgrading(t *testing.T) { g := NewWithT(t) scheme := runtime.NewScheme() - g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) - + g.Expect(expv1.AddToScheme(scheme)).To(Succeed()) tests := []struct { name string mp *clusterv1.MachinePool @@ -245,7 +244,7 @@ func TestMDUpgrading(t *testing.T) { func TestMPUpgrading(t *testing.T) { g := NewWithT(t) scheme := runtime.NewScheme() - g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) + g.Expect(expv1.AddToScheme(scheme)).To(Succeed()) ctx := context.Background() From 1f4507146c5c29a9ee7c144669f33120d1c7504b Mon Sep 17 00:00:00 2001 From: razashahid107 Date: Thu, 28 Sep 2023 07:35:18 +0500 Subject: [PATCH 3/3] Added expv1 --- internal/controllers/topology/cluster/scope/state_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/controllers/topology/cluster/scope/state_test.go b/internal/controllers/topology/cluster/scope/state_test.go index 1f2611adc23d..0612d72fbae3 100644 --- a/internal/controllers/topology/cluster/scope/state_test.go +++ b/internal/controllers/topology/cluster/scope/state_test.go @@ -121,7 +121,7 @@ func TestMPIsUpgrading(t *testing.T) { g.Expect(expv1.AddToScheme(scheme)).To(Succeed()) tests := []struct { name string - mp *clusterv1.MachinePool + mp *expv1.MachinePool machines []*clusterv1.Machine want bool wantErr bool