github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/pkg/test/framework/metrics/metrics.go (about)

     1  // Copyright (c) 2021, 2022, 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 metrics
     5  
     6  import (
     7  	"fmt"
     8  	"time"
     9  )
    10  
    11  const (
    12  	defaultPushInterval time.Duration = time.Minute
    13  )
    14  
    15  type MetricsReceiver interface {
    16  	SetGauge(name string, value float64) error
    17  	IncrementCounter(name string) error
    18  }
    19  
    20  type MetricsReceiverConfig interface {
    21  	GetReceiverType() string
    22  }
    23  
    24  func NewMetricsReceiver(cfg MetricsReceiverConfig) (MetricsReceiver, error) {
    25  	switch cfg.GetReceiverType() {
    26  	case "PrometheusMetricsReceiver":
    27  		promConfig := cfg.(*PrometheusMetricsReceiverConfig)
    28  		//reg := prom.NewRegistry()
    29  		pushInterval := promConfig.PushInterval
    30  		if pushInterval == 0 {
    31  			pushInterval = defaultPushInterval
    32  		}
    33  		promConfig.PushInterval = pushInterval
    34  		return NewPrometheusMetricsReceiver(*promConfig)
    35  	case "FileMetricsReceiver":
    36  		return nil, nil
    37  	default:
    38  		return nil, fmt.Errorf("unknown MetricsReceiver type %s", cfg.GetReceiverType())
    39  	}
    40  }