github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/pkg/test/framework/ginkgo_wrapper_util.go (about) 1 // Copyright (c) 2021, 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 package framework 5 6 import ( 7 "fmt" 8 "os" 9 "reflect" 10 "strings" 11 "time" 12 13 testmetrics "github.com/verrazzano/verrazzano/tests/e2e/pkg/test/framework/metrics" 14 ) 15 16 const ( 17 metricsReceiverTypeEnvVarName = "METRICS_RECEIVER_TYPE" 18 promReceiverType = "Prometheus" 19 20 // Prometheus related env vars and constants 21 promPushURLEnvVarName = "PROMETHEUS_GW_URL" 22 promPushUserEnvVarName = "PROMETHEUS_CREDENTIALS_USR" 23 promPushPasswordEnvVarName = "PROMETHEUS_CREDENTIALS_PSW" 24 defaultPushInterval = time.Minute 25 ) 26 27 var getenvFunc = os.Getenv 28 29 // isBodyFunc - return boolean indicating if the interface is a function 30 func isBodyFunc(body interface{}) bool { 31 bodyType := reflect.TypeOf(body) 32 return bodyType.Kind() == reflect.Func 33 } 34 35 // createTestMetricsReceiver - Creates a MetricsReceiver for the test to use 36 func createTestMetricsReceiver(testName string) (testmetrics.MetricsReceiver, error) { 37 // sanitize the test name to have no spaces and be all lower case 38 name := strings.ReplaceAll(strings.ToLower(testName), " ", "_") 39 metricsConfig, err := createMetricsConfigFromEnv(name) 40 if err != nil { 41 return nil, err 42 } 43 return testmetrics.NewMetricsReceiver(metricsConfig) 44 } 45 46 // createMetricsConfigFromEnv - creates a MetricsReceiverConfig based on env vars, which will be used to 47 // create the appropriate metrics receiver 48 func createMetricsConfigFromEnv(name string) (testmetrics.MetricsReceiverConfig, error) { 49 metricsReceiverType := getMetricsReceiverType() 50 return nil, fmt.Errorf("unsupported %s value: %s", metricsReceiverTypeEnvVarName, metricsReceiverType) 51 } 52 53 // Get the metrics receiver type set in the environment, defaulting to Prometheus 54 func getMetricsReceiverType() string { 55 metricsReceiverType, isSet := os.LookupEnv(metricsReceiverTypeEnvVarName) 56 if !isSet { 57 metricsReceiverType = promReceiverType 58 } 59 return metricsReceiverType 60 } 61 62 func EmitGauge(testName string, metricName string, value float64) error { 63 metricsReceiver, err := createTestMetricsReceiver(testName) 64 if err != nil { 65 return err 66 } 67 return metricsReceiver.SetGauge(metricName, value) 68 } 69 70 func IncrementCounter(testName string, metricName string) error { 71 metricsReceiver, err := createTestMetricsReceiver(testName) 72 if err != nil { 73 return err 74 } 75 return metricsReceiver.IncrementCounter(metricName) 76 }