github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/update/apiconversion/apiconversion_test.go (about) 1 // Copyright (c) 2022, 2023, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package apiconversion 5 6 import ( 7 "fmt" 8 "github.com/verrazzano/verrazzano/pkg/log/vzlog" 9 "github.com/verrazzano/verrazzano/pkg/nginxutil" 10 "time" 11 12 . "github.com/onsi/ginkgo/v2" 13 "github.com/verrazzano/verrazzano/platform-operator/apis/verrazzano/v1beta1" 14 "github.com/verrazzano/verrazzano/tests/e2e/pkg" 15 "github.com/verrazzano/verrazzano/tests/e2e/pkg/test/framework" 16 "github.com/verrazzano/verrazzano/tests/e2e/pkg/update" 17 ) 18 19 const ( 20 ingressNGINXComponentLabelKey = "app.kubernetes.io/component" 21 ingressNGINXComponentBackendValue = "default-backend" 22 ingressNGINXComponentControllerValue = "controller" 23 ingressNGINXNameLabelValue = "ingress-nginx" 24 ingressNGINXNameLabelKey = "app.kubernetes.io/name" 25 waitTimeout = 10 * time.Minute 26 pollingInterval = 5 * time.Second 27 ) 28 29 type IngressNGINXControllerReplicasModifierV1beta1 struct { 30 replicas uint32 31 } 32 33 type IngressNGINXBackendReplicasModifierV1beta1 struct { 34 replicas uint32 35 } 36 37 type IngressNGINXDefaultModifierV1beta1 struct { 38 } 39 40 func (u IngressNGINXDefaultModifierV1beta1) ModifyCRV1beta1(cr *v1beta1.Verrazzano) { 41 cr.Spec.Components.IngressNGINX = &v1beta1.IngressNginxComponent{} 42 } 43 44 var t = framework.NewTestFramework("apiconversion") 45 46 var nodeCount uint32 47 48 var ingressNGINXNamespace string 49 50 var beforeSuite = t.BeforeSuiteFunc(func() { 51 var err error 52 nodeCount, err = pkg.GetNodeCount() 53 if err != nil { 54 Fail(err.Error()) 55 } 56 ingressNGINXNamespace, err = nginxutil.DetermineNamespaceForIngressNGINX(vzlog.DefaultLogger()) 57 if err != nil { 58 Fail(err.Error()) 59 } 60 }) 61 62 var _ = BeforeSuite(beforeSuite) 63 64 var afterSuite = t.AfterSuiteFunc(func() { 65 m := IngressNGINXDefaultModifierV1beta1{} 66 update.UpdateCRV1beta1WithRetries(m, pollingInterval, waitTimeout) 67 expectedRunning := uint32(2) 68 update.ValidatePods(ingressNGINXNameLabelValue, ingressNGINXNameLabelKey, ingressNGINXNamespace, expectedRunning, false) 69 70 }) 71 72 var _ = AfterSuite(afterSuite) 73 74 func (u IngressNGINXBackendReplicasModifierV1beta1) ModifyCRV1beta1(cr *v1beta1.Verrazzano) { 75 if cr.Spec.Components.IngressNGINX == nil { 76 cr.Spec.Components.IngressNGINX = &v1beta1.IngressNginxComponent{} 77 } 78 ingressNginxReplicaOverridesYaml := fmt.Sprintf(`defaultBackend: 79 replicaCount: %v`, u.replicas) 80 cr.Spec.Components.IngressNGINX.ValueOverrides = pkg.CreateOverridesOrDie(ingressNginxReplicaOverridesYaml) 81 } 82 83 func (u IngressNGINXControllerReplicasModifierV1beta1) ModifyCRV1beta1(cr *v1beta1.Verrazzano) { 84 if cr.Spec.Components.IngressNGINX == nil { 85 cr.Spec.Components.IngressNGINX = &v1beta1.IngressNginxComponent{} 86 } 87 ingressNginxReplicaOverridesYaml := fmt.Sprintf(`controller: 88 replicaCount: %v`, u.replicas) 89 cr.Spec.Components.IngressNGINX.ValueOverrides = pkg.CreateOverridesOrDie(ingressNginxReplicaOverridesYaml) 90 } 91 92 var _ = t.Describe("Update ingressNGINX", Label("f:platform-lcm.update"), func() { 93 t.Describe("ingressNginx update backend replicas with v1beta1 client", Label("f:platform-lcm.ingressNginx-update-replicas"), func() { 94 t.It("ingressNginx explicit replicas", func() { 95 m := IngressNGINXBackendReplicasModifierV1beta1{replicas: nodeCount} 96 update.UpdateCRV1beta1WithRetries(m, pollingInterval, waitTimeout) 97 expectedRunning := nodeCount 98 update.ValidatePods(ingressNGINXComponentBackendValue, ingressNGINXComponentLabelKey, ingressNGINXNamespace, expectedRunning, false) 99 100 }) 101 }) 102 103 t.Describe("ingressNginx update controller replicas with v1beta1 client", Label("f:platform-lcm.ingressNginx-update-replicas"), func() { 104 t.It("ingressNginx explicit replicas", func() { 105 m := IngressNGINXControllerReplicasModifierV1beta1{replicas: nodeCount} 106 update.UpdateCRV1beta1WithRetries(m, pollingInterval, waitTimeout) 107 expectedRunning := nodeCount 108 update.ValidatePods(ingressNGINXComponentControllerValue, ingressNGINXComponentLabelKey, ingressNGINXNamespace, expectedRunning, false) 109 110 }) 111 }) 112 })