internal/testhelper/promtest/gauge.go (40 lines of code) (raw):
package promtest
import (
"sync"
)
// MockGauge is a mock gauge that adheres to prometheus.Gauge for use in unit tests
type MockGauge struct {
m sync.RWMutex
Value float64
incs, decs int
}
// IncsCalled gives the number of times Inc() was been called
func (m *MockGauge) IncsCalled() int {
m.m.RLock()
defer m.m.RUnlock()
return m.incs
}
// DecsCalled gives the number of times Inc() was been called
func (m *MockGauge) DecsCalled() int {
m.m.RLock()
defer m.m.RUnlock()
return m.decs
}
// Inc increments the gauge value
func (m *MockGauge) Inc() {
m.m.Lock()
defer m.m.Unlock()
m.Value++
m.incs++
}
// Dec decrements the gauge value
func (m *MockGauge) Dec() {
m.m.Lock()
defer m.m.Unlock()
m.Value--
m.decs++
}
// MockStorageGauge wraps a MockGauge
type MockStorageGauge struct {
*MockGauge
}
// Inc will track total calls to this method while ignoring params
func (m *MockStorageGauge) Inc(_, _ string) {
m.MockGauge.Inc()
}
// Dec will track total calls to this method while ignoring params
func (m *MockStorageGauge) Dec(_, _ string) {
m.MockGauge.Dec()
}