github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/jaeger/system/jaeger_system_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 system
     5  
     6  import (
     7  	"fmt"
     8  	"time"
     9  
    10  	. "github.com/onsi/ginkgo/v2"
    11  	. "github.com/onsi/gomega"
    12  	"github.com/verrazzano/verrazzano/pkg/k8sutil"
    13  	"github.com/verrazzano/verrazzano/tests/e2e/jaeger"
    14  	"github.com/verrazzano/verrazzano/tests/e2e/pkg"
    15  	"github.com/verrazzano/verrazzano/tests/e2e/pkg/test/framework"
    16  )
    17  
    18  const (
    19  	shortPollingInterval = 10 * time.Second
    20  	shortWaitTimeout     = 5 * time.Minute
    21  	longPollingInterval  = 30 * time.Second
    22  	longWaitTimeout      = 15 * time.Minute
    23  )
    24  
    25  var (
    26  	t = framework.NewTestFramework("jaeger-system-traces")
    27  	// Allow 3 hour allowance in start time to find the system traces faster
    28  	start = time.Now().Add(-3 * time.Hour)
    29  
    30  	kubeconfigPath string
    31  	metricsTest    pkg.MetricsTest
    32  )
    33  
    34  var beforeSuite = t.BeforeSuiteFunc(func() {
    35  	var err error
    36  	kubeconfigPath, err = k8sutil.GetKubeConfigLocation()
    37  	if err != nil {
    38  		AbortSuite(fmt.Sprintf("Failed to find Kubeconfig location: %v", err))
    39  	}
    40  	metricsTest, err = pkg.NewMetricsTest(kubeconfigPath, map[string]string{})
    41  	if err != nil {
    42  		AbortSuite(fmt.Sprintf("Failed to create the Metrics test object: %v", err))
    43  	}
    44  })
    45  
    46  var _ = BeforeSuite(beforeSuite)
    47  
    48  var whenJaegerOperatorEnabledIt = t.WhenMeetsConditionFunc(jaeger.OperatorCondition, jaeger.IsJaegerEnabled)
    49  
    50  var _ = t.Describe("Verrazzano System traces with Jaeger", Label("f:jaeger.system-traces"), func() {
    51  	t.Context("after successful installation", func() {
    52  
    53  		// GIVEN the Jaeger Operator is enabled and istio tracing is enabled,
    54  		// WHEN we query for traces from verrazzano system components,
    55  		// THEN we are able to get the traces
    56  		whenJaegerOperatorEnabledIt("traces from verrazzano system components should be available when queried from Jaeger", func() {
    57  			validatorFn := pkg.ValidateSystemTracesFuncInCluster(kubeconfigPath, start, "local")
    58  			Eventually(validatorFn).WithPolling(longPollingInterval).WithTimeout(longWaitTimeout).Should(BeTrue())
    59  		})
    60  
    61  		// GIVEN the Jaeger Operator is enabled and istio tracing is enabled,
    62  		// WHEN we check for traces from verrazzano system components in Opensearch Storage,
    63  		// THEN we are able to get the traces
    64  		whenJaegerOperatorEnabledIt("traces from verrazzano system components should be available in the OS backend storage.", func() {
    65  			validatorFn := pkg.ValidateSystemTracesInOSFunc(start)
    66  			Eventually(validatorFn).WithPolling(longPollingInterval).WithTimeout(longWaitTimeout).Should(BeTrue())
    67  		})
    68  
    69  		// GIVEN the Jaeger Operator component is enabled,
    70  		// WHEN we query for metrics related to Jaeger operator
    71  		// THEN we see that the metrics are present in prometheus
    72  		whenJaegerOperatorEnabledIt("metrics of jaeger operator are available in prometheus", func() {
    73  			validatorFn := pkg.ValidateJaegerOperatorMetricFunc(metricsTest)
    74  			Eventually(validatorFn).WithPolling(shortPollingInterval).WithTimeout(shortWaitTimeout).Should(BeTrue())
    75  		})
    76  
    77  		// GIVEN the Jaeger Operator component is installed with default Jaeger CR enabled
    78  		// WHEN we query for metrics related to Jaeger collector
    79  		// THEN we see that the metrics are present in prometheus
    80  		whenJaegerOperatorEnabledIt("metrics of jaeger collector are available in prometheus", func() {
    81  			validatorFn := pkg.ValidateJaegerCollectorMetricFunc(metricsTest)
    82  			Eventually(validatorFn).WithPolling(shortPollingInterval).WithTimeout(shortWaitTimeout).Should(BeTrue())
    83  		})
    84  
    85  		// GIVEN the Jaeger Operator component is installed with default Jaeger CR enabled
    86  		// WHEN we query for metrics related to Jaeger collector
    87  		// THEN we see that the metrics are present in prometheus
    88  		whenJaegerOperatorEnabledIt("metrics of jaeger query are available in prometheus", func() {
    89  			validatorFn := pkg.ValidateJaegerQueryMetricFunc(metricsTest)
    90  			Eventually(validatorFn).WithPolling(shortPollingInterval).WithTimeout(shortWaitTimeout).Should(BeTrue())
    91  		})
    92  
    93  		// GIVEN the Jaeger Operator component is installed with default Jaeger CR enabled
    94  		// WHEN we query for metrics related to Jaeger collector
    95  		// THEN we see that the metrics are present in prometheus
    96  		whenJaegerOperatorEnabledIt("metrics of jaeger agent are available in prometheus", func() {
    97  			validatorFn := pkg.ValidateJaegerAgentMetricFunc(metricsTest)
    98  			Eventually(validatorFn).WithPolling(shortPollingInterval).WithTimeout(shortWaitTimeout).Should(BeTrue())
    99  		})
   100  	})
   101  
   102  })