github.com/argoproj-labs/argocd-operator@v0.10.0/controllers/argocd/hpa_test.go (about) 1 package argocd 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 autoscaling "k8s.io/api/autoscaling/v1" 9 "k8s.io/apimachinery/pkg/api/errors" 10 "k8s.io/apimachinery/pkg/runtime" 11 "k8s.io/apimachinery/pkg/types" 12 "sigs.k8s.io/controller-runtime/pkg/client" 13 logf "sigs.k8s.io/controller-runtime/pkg/log" 14 15 argoproj "github.com/argoproj-labs/argocd-operator/api/v1beta1" 16 ) 17 18 var ( 19 min int32 = 5 20 max int32 = 8 21 cpuUtil int32 = 45 22 ) 23 24 func TestReconcileHPA(t *testing.T) { 25 26 logf.SetLogger(ZapLogger(true)) 27 a := makeTestArgoCD() 28 29 resObjs := []client.Object{a} 30 subresObjs := []client.Object{a} 31 runtimeObjs := []runtime.Object{} 32 sch := makeTestReconcilerScheme(argoproj.AddToScheme) 33 cl := makeTestReconcilerClient(sch, resObjs, subresObjs, runtimeObjs) 34 r := makeTestReconciler(cl, sch) 35 36 existingHPA := newHorizontalPodAutoscalerWithSuffix("server", a) 37 38 defaultHPASpec := autoscaling.HorizontalPodAutoscalerSpec{ 39 MaxReplicas: maxReplicas, 40 MinReplicas: &minReplicas, 41 TargetCPUUtilizationPercentage: &tcup, 42 ScaleTargetRef: autoscaling.CrossVersionObjectReference{ 43 APIVersion: "apps/v1", 44 Kind: "Deployment", 45 Name: nameWithSuffix("server", a), 46 }, 47 } 48 49 updatedHPASpec := autoscaling.HorizontalPodAutoscalerSpec{ 50 MaxReplicas: max, 51 MinReplicas: &min, 52 TargetCPUUtilizationPercentage: &cpuUtil, 53 ScaleTargetRef: autoscaling.CrossVersionObjectReference{ 54 APIVersion: "apps/v1", 55 Kind: "Deployment", 56 Name: nameWithSuffix("server", a), 57 }, 58 } 59 60 err := r.Client.Get(context.TODO(), types.NamespacedName{ 61 Name: "argocd-server", 62 Namespace: testNamespace, 63 }, existingHPA) 64 assert.True(t, errors.IsNotFound(err)) 65 66 a.Spec.Server.Autoscale.Enabled = true 67 68 err = r.reconcileServerHPA(a) 69 assert.NoError(t, err) 70 71 err = r.Client.Get(context.TODO(), types.NamespacedName{ 72 Name: "argocd-server", 73 Namespace: testNamespace, 74 }, existingHPA) 75 assert.NoError(t, err) 76 assert.Equal(t, defaultHPASpec, existingHPA.Spec) 77 78 a.Spec.Server.Autoscale.HPA = &updatedHPASpec 79 80 err = r.reconcileServerHPA(a) 81 assert.NoError(t, err) 82 83 err = r.Client.Get(context.TODO(), types.NamespacedName{ 84 Name: "argocd-server", 85 Namespace: testNamespace, 86 }, existingHPA) 87 assert.NoError(t, err) 88 assert.Equal(t, updatedHPASpec, existingHPA.Spec) 89 90 a.Spec.Server.Autoscale.Enabled = false 91 92 err = r.reconcileServerHPA(a) 93 assert.NoError(t, err) 94 95 err = r.Client.Get(context.TODO(), types.NamespacedName{ 96 Name: "argocd-server", 97 Namespace: testNamespace, 98 }, existingHPA) 99 assert.True(t, errors.IsNotFound(err)) 100 101 }