mirror of
https://github.com/zitadel/zitadel.git
synced 2025-04-29 01:20:51 +00:00
96 lines
2.5 KiB
Go
96 lines
2.5 KiB
Go
![]() |
package metrics
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"net/http"
|
||
|
"sync"
|
||
|
|
||
|
"go.opentelemetry.io/otel/attribute"
|
||
|
"go.opentelemetry.io/otel/metric"
|
||
|
)
|
||
|
|
||
|
// MockMetrics implements the metrics.Metrics interface for testing
|
||
|
type MockMetrics struct {
|
||
|
mu sync.RWMutex
|
||
|
histogramValues map[string][]float64
|
||
|
counterValues map[string]int64
|
||
|
histogramLabels map[string][]map[string]attribute.Value
|
||
|
counterLabels map[string][]map[string]attribute.Value
|
||
|
}
|
||
|
|
||
|
var _ Metrics = new(MockMetrics)
|
||
|
|
||
|
// NewMockMetrics creates a new Metrics instance for testing
|
||
|
func NewMockMetrics() *MockMetrics {
|
||
|
return &MockMetrics{
|
||
|
histogramValues: make(map[string][]float64),
|
||
|
counterValues: make(map[string]int64),
|
||
|
histogramLabels: make(map[string][]map[string]attribute.Value),
|
||
|
counterLabels: make(map[string][]map[string]attribute.Value),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) GetExporter() http.Handler {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) GetMetricsProvider() metric.MeterProvider {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) RegisterCounter(name, description string) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) AddCount(ctx context.Context, name string, value int64, labels map[string]attribute.Value) error {
|
||
|
m.mu.Lock()
|
||
|
defer m.mu.Unlock()
|
||
|
m.counterValues[name] += value
|
||
|
m.counterLabels[name] = append(m.counterLabels[name], labels)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) AddHistogramMeasurement(ctx context.Context, name string, value float64, labels map[string]attribute.Value) error {
|
||
|
m.mu.Lock()
|
||
|
defer m.mu.Unlock()
|
||
|
m.histogramValues[name] = append(m.histogramValues[name], value)
|
||
|
m.histogramLabels[name] = append(m.histogramLabels[name], labels)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) RegisterUpDownSumObserver(name, description string, callbackFunc metric.Int64Callback) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) RegisterValueObserver(name, description string, callbackFunc metric.Int64Callback) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) RegisterHistogram(name, description, unit string, buckets []float64) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) GetHistogramValues(name string) []float64 {
|
||
|
m.mu.RLock()
|
||
|
defer m.mu.RUnlock()
|
||
|
return m.histogramValues[name]
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) GetHistogramLabels(name string) []map[string]attribute.Value {
|
||
|
m.mu.RLock()
|
||
|
defer m.mu.RUnlock()
|
||
|
return m.histogramLabels[name]
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) GetCounterValue(name string) int64 {
|
||
|
m.mu.RLock()
|
||
|
defer m.mu.RUnlock()
|
||
|
return m.counterValues[name]
|
||
|
}
|
||
|
|
||
|
func (m *MockMetrics) GetCounterLabels(name string) []map[string]attribute.Value {
|
||
|
m.mu.RLock()
|
||
|
defer m.mu.RUnlock()
|
||
|
return m.counterLabels[name]
|
||
|
}
|