github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/verify-analyze-tool/node/node_test.go (about)

     1  // Copyright (c) 2023, 2024, 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  // This is an e2e test to plant node related issues and validates it
     5  // Followed by reverting the issues to normal state and validates it
     6  package node
     7  
     8  import (
     9  	"fmt"
    10  	"time"
    11  
    12  	. "github.com/onsi/ginkgo/v2"
    13  	. "github.com/onsi/gomega"
    14  	"github.com/verrazzano/verrazzano/tests/e2e/pkg/test/framework"
    15  	utility "github.com/verrazzano/verrazzano/tests/e2e/verify-analyze-tool"
    16  )
    17  
    18  var (
    19  	waitTimeout     = 10 * time.Second
    20  	pollingInterval = 10 * time.Second
    21  )
    22  
    23  var t = framework.NewTestFramework("Vz Analysis Tool Node Issues")
    24  
    25  var issuesToBeDiagnosed = []string{utility.InsufficientMemory, utility.InsufficientCPU}
    26  
    27  // patches node for all the issues listed into 'issuesToBeDiagnosed'
    28  func patch() error {
    29  	for i := 0; i < len(issuesToBeDiagnosed); i++ {
    30  		switch issuesToBeDiagnosed[i] {
    31  		case utility.InsufficientMemory:
    32  			patchErr := utility.PatchPod(utility.InsufficientMemory, []string{"memory=1000Gi", "memory=100Mi"})
    33  			if patchErr != nil {
    34  				return patchErr
    35  			}
    36  		case utility.InsufficientCPU:
    37  			patchErr := utility.PatchPod(utility.InsufficientCPU, []string{"cpu=50000m", "cpu=128m"})
    38  			if patchErr != nil {
    39  				return patchErr
    40  			}
    41  		}
    42  		if i < len(issuesToBeDiagnosed)-1 {
    43  			time.Sleep(time.Second * 20)
    44  		}
    45  	}
    46  	return nil
    47  }
    48  
    49  var _ = BeforeSuite(beforeSuite)
    50  var beforeSuite = t.BeforeSuiteFunc(func() {
    51  	err := patch()
    52  	if err != nil {
    53  		Fail(fmt.Sprintf("error while patching verrazzano-related resources: %v", err.Error()))
    54  	}
    55  })
    56  
    57  var _ = t.Describe("VZ Tools", Label("f:vz-tools-node-issues"), func() {
    58  	t.Context("During Node Issue Analysis", func() {
    59  		t.It("Should Have InsufficientMemory Issue Post Bad Memory Request", func() {
    60  			Eventually(func() bool {
    61  				return utility.VerifyIssue(utility.ReportAnalysis[utility.InsufficientMemory][0], utility.InsufficientMemory)
    62  			}, waitTimeout, pollingInterval).Should(BeTrue())
    63  		})
    64  		t.It("Should Not Have InsufficientMemory Issue Post Rectifying Memory Request", func() {
    65  			Eventually(func() bool {
    66  				return utility.VerifyIssue(utility.ReportAnalysis[utility.InsufficientMemory][1], utility.InsufficientMemory)
    67  			}, waitTimeout, pollingInterval).Should(BeFalse())
    68  		})
    69  		t.It("Should Have InsufficientCPU Issue Post Bad CPU Request", func() {
    70  			Eventually(func() bool {
    71  				return utility.VerifyIssue(utility.ReportAnalysis[utility.InsufficientCPU][0], utility.InsufficientCPU)
    72  			}, waitTimeout, pollingInterval).Should(BeTrue())
    73  		})
    74  		t.It("Should Not Have InsufficientCPU Issue Post Rectifying CPU Request", func() {
    75  			Eventually(func() bool {
    76  				return utility.VerifyIssue(utility.ReportAnalysis[utility.InsufficientCPU][1], utility.InsufficientCPU)
    77  			}, waitTimeout, pollingInterval).Should(BeFalse())
    78  		})
    79  	})
    80  })