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  }