github.com/argoproj/argo-cd/v2@v2.10.5/util/db/cluster_norace_test.go (about) 1 //go:build !race 2 // +build !race 3 4 package db 5 6 import ( 7 "context" 8 "testing" 9 10 v1 "k8s.io/api/core/v1" 11 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 12 13 "github.com/argoproj/argo-cd/v2/common" 14 15 "github.com/stretchr/testify/assert" 16 "k8s.io/client-go/kubernetes/fake" 17 18 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" 19 "github.com/argoproj/argo-cd/v2/util/settings" 20 ) 21 22 func TestWatchClusters_CreateRemoveCluster(t *testing.T) { 23 24 // !race: 25 // Intermittent failure when running TestWatchClusters_LocalClusterModifications with -race, likely due to race condition 26 // https://github.com/argoproj/argo-cd/issues/4755 27 emptyArgoCDConfigMap := &v1.ConfigMap{ 28 ObjectMeta: metav1.ObjectMeta{ 29 Name: common.ArgoCDConfigMapName, 30 Namespace: fakeNamespace, 31 Labels: map[string]string{ 32 "app.kubernetes.io/part-of": "argocd", 33 }, 34 }, 35 Data: map[string]string{}, 36 } 37 argoCDSecret := &v1.Secret{ 38 ObjectMeta: metav1.ObjectMeta{ 39 Name: common.ArgoCDSecretName, 40 Namespace: fakeNamespace, 41 Labels: map[string]string{ 42 "app.kubernetes.io/part-of": "argocd", 43 }, 44 }, 45 Data: map[string][]byte{ 46 "admin.password": nil, 47 "server.secretkey": nil, 48 }, 49 } 50 kubeclientset := fake.NewSimpleClientset(emptyArgoCDConfigMap, argoCDSecret) 51 settingsManager := settings.NewSettingsManager(context.Background(), kubeclientset, fakeNamespace) 52 db := NewDB(fakeNamespace, settingsManager, kubeclientset) 53 runWatchTest(t, db, []func(old *v1alpha1.Cluster, new *v1alpha1.Cluster){ 54 func(old *v1alpha1.Cluster, new *v1alpha1.Cluster) { 55 assert.Nil(t, old) 56 assert.Equal(t, new.Server, v1alpha1.KubernetesInternalAPIServerAddr) 57 58 _, err := db.CreateCluster(context.Background(), &v1alpha1.Cluster{ 59 Server: "https://minikube", 60 Name: "minikube", 61 }) 62 assert.NoError(t, err) 63 }, 64 func(old *v1alpha1.Cluster, new *v1alpha1.Cluster) { 65 assert.Nil(t, old) 66 assert.Equal(t, new.Server, "https://minikube") 67 assert.Equal(t, new.Name, "minikube") 68 69 assert.NoError(t, db.DeleteCluster(context.Background(), "https://minikube")) 70 }, 71 func(old *v1alpha1.Cluster, new *v1alpha1.Cluster) { 72 assert.Nil(t, new) 73 assert.Equal(t, old.Server, "https://minikube") 74 }, 75 }) 76 } 77 78 func TestWatchClusters_LocalClusterModifications(t *testing.T) { 79 80 // !race: 81 // Intermittent failure when running TestWatchClusters_LocalClusterModifications with -race, likely due to race condition 82 // https://github.com/argoproj/argo-cd/issues/4755 83 emptyArgoCDConfigMap := &v1.ConfigMap{ 84 ObjectMeta: metav1.ObjectMeta{ 85 Name: common.ArgoCDConfigMapName, 86 Namespace: fakeNamespace, 87 Labels: map[string]string{ 88 "app.kubernetes.io/part-of": "argocd", 89 }, 90 }, 91 Data: map[string]string{}, 92 } 93 argoCDSecret := &v1.Secret{ 94 ObjectMeta: metav1.ObjectMeta{ 95 Name: common.ArgoCDSecretName, 96 Namespace: fakeNamespace, 97 Labels: map[string]string{ 98 "app.kubernetes.io/part-of": "argocd", 99 }, 100 }, 101 Data: map[string][]byte{ 102 "admin.password": nil, 103 "server.secretkey": nil, 104 }, 105 } 106 kubeclientset := fake.NewSimpleClientset(emptyArgoCDConfigMap, argoCDSecret) 107 settingsManager := settings.NewSettingsManager(context.Background(), kubeclientset, fakeNamespace) 108 db := NewDB(fakeNamespace, settingsManager, kubeclientset) 109 runWatchTest(t, db, []func(old *v1alpha1.Cluster, new *v1alpha1.Cluster){ 110 func(old *v1alpha1.Cluster, new *v1alpha1.Cluster) { 111 assert.Nil(t, old) 112 assert.Equal(t, new.Server, v1alpha1.KubernetesInternalAPIServerAddr) 113 114 _, err := db.CreateCluster(context.Background(), &v1alpha1.Cluster{ 115 Server: v1alpha1.KubernetesInternalAPIServerAddr, 116 Name: "some name", 117 }) 118 assert.NoError(t, err) 119 }, 120 func(old *v1alpha1.Cluster, new *v1alpha1.Cluster) { 121 assert.NotNil(t, old) 122 assert.Equal(t, new.Server, v1alpha1.KubernetesInternalAPIServerAddr) 123 assert.Equal(t, new.Name, "some name") 124 125 assert.NoError(t, db.DeleteCluster(context.Background(), v1alpha1.KubernetesInternalAPIServerAddr)) 126 }, 127 func(old *v1alpha1.Cluster, new *v1alpha1.Cluster) { 128 assert.Equal(t, new.Server, v1alpha1.KubernetesInternalAPIServerAddr) 129 assert.Equal(t, new.Name, "in-cluster") 130 }, 131 }) 132 }