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  })