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