From e97d29500b24d09ff57b8f48a62d042f67dca9f3 Mon Sep 17 00:00:00 2001 From: rayywu Date: Thu, 1 Jun 2023 21:07:47 +0800 Subject: [PATCH] Add UT for pkg/controllers/applicationfailover/common.go Signed-off-by: rayywu --- .../applicationfailover/common_test.go | 78 +++++++++++++++++++ .../status/rb_status_controller_test.go | 12 +-- 2 files changed, 85 insertions(+), 5 deletions(-) diff --git a/pkg/controllers/applicationfailover/common_test.go b/pkg/controllers/applicationfailover/common_test.go index 84a32d4897e2..da16ac736f16 100644 --- a/pkg/controllers/applicationfailover/common_test.go +++ b/pkg/controllers/applicationfailover/common_test.go @@ -4,9 +4,87 @@ import ( "reflect" "testing" + "github.com/stretchr/testify/assert" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/sets" + workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" ) +func TestNewWorkloadUnhealthyMap(t *testing.T) { + m := newWorkloadUnhealthyMap() + expected := &workloadUnhealthyMap{ + workloadUnhealthy: make(map[types.NamespacedName]map[string]metav1.Time), + } + assert.Equal(t, expected, m) +} + +func TestTimeStampProcess(t *testing.T) { + key := types.NamespacedName{ + Namespace: "default", + Name: "test", + } + cluster := "cluster-1" + + m := newWorkloadUnhealthyMap() + m.setTimeStamp(key, cluster) + res := m.hasWorkloadBeenUnhealthy(key, cluster) + assert.Equal(t, true, res) + + time := m.getTimeStamp(key, cluster) + assert.NotEmpty(t, time) + + m.delete(key) + res = m.hasWorkloadBeenUnhealthy(key, cluster) + assert.Equal(t, false, res) +} + +func TestWorkloadUnhealthyMap_deleteIrrelevantClusters(t *testing.T) { + cluster1 := "cluster-1" + cluster2 := "cluster-2" + cluster3 := "cluster-3" + t.Run("normal case", func(t *testing.T) { + key := types.NamespacedName{ + Namespace: "default", + Name: "test", + } + + m := newWorkloadUnhealthyMap() + + m.setTimeStamp(key, cluster1) + m.setTimeStamp(key, cluster2) + m.setTimeStamp(key, cluster3) + + allClusters := sets.New[string](cluster2, cluster3) + healthyClusters := []string{cluster3} + + m.deleteIrrelevantClusters(key, allClusters, healthyClusters) + res1 := m.hasWorkloadBeenUnhealthy(key, cluster1) + assert.Equal(t, false, res1) + res2 := m.hasWorkloadBeenUnhealthy(key, cluster2) + assert.Equal(t, true, res2) + res3 := m.hasWorkloadBeenUnhealthy(key, cluster3) + assert.Equal(t, false, res3) + }) + + t.Run("unhealthyClusters is nil", func(t *testing.T) { + key := types.NamespacedName{ + Namespace: "default", + Name: "test", + } + + m := newWorkloadUnhealthyMap() + + allClusters := sets.New[string](cluster2, cluster3) + healthyClusters := []string{cluster3} + + m.deleteIrrelevantClusters(key, allClusters, healthyClusters) + res := m.hasWorkloadBeenUnhealthy(key, cluster2) + assert.Equal(t, false, res) + }) +} + func TestDistinguishUnhealthyClustersWithOthers(t *testing.T) { tests := []struct { name string diff --git a/pkg/controllers/status/rb_status_controller_test.go b/pkg/controllers/status/rb_status_controller_test.go index 7ae89a0f6a75..f0b14e544def 100644 --- a/pkg/controllers/status/rb_status_controller_test.go +++ b/pkg/controllers/status/rb_status_controller_test.go @@ -2,9 +2,9 @@ package status import ( "context" - workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" - "github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager" - "github.com/karmada-io/karmada/pkg/util/gclient" + "testing" + "time" + "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" @@ -16,8 +16,10 @@ import ( "k8s.io/client-go/tools/record" controllerruntime "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "testing" - "time" + + workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" + "github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager" + "github.com/karmada-io/karmada/pkg/util/gclient" ) func generateRBStatusController() *RBStatusController {