* metrics/prometheus: define type once for histograms * metrics/prometheus: test collector
		
			
				
	
	
		
			111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package prometheus
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/ethereum/go-ethereum/metrics"
 | 
						|
)
 | 
						|
 | 
						|
func TestMain(m *testing.M) {
 | 
						|
	metrics.Enabled = true
 | 
						|
	os.Exit(m.Run())
 | 
						|
}
 | 
						|
 | 
						|
func TestCollector(t *testing.T) {
 | 
						|
	c := newCollector()
 | 
						|
 | 
						|
	counter := metrics.NewCounter()
 | 
						|
	counter.Inc(12345)
 | 
						|
	c.addCounter("test/counter", counter)
 | 
						|
 | 
						|
	gauge := metrics.NewGauge()
 | 
						|
	gauge.Update(23456)
 | 
						|
	c.addGauge("test/gauge", gauge)
 | 
						|
 | 
						|
	gaugeFloat64 := metrics.NewGaugeFloat64()
 | 
						|
	gaugeFloat64.Update(34567.89)
 | 
						|
	c.addGaugeFloat64("test/gauge_float64", gaugeFloat64)
 | 
						|
 | 
						|
	histogram := metrics.NewHistogram(&metrics.NilSample{})
 | 
						|
	c.addHistogram("test/histogram", histogram)
 | 
						|
 | 
						|
	meter := metrics.NewMeter()
 | 
						|
	defer meter.Stop()
 | 
						|
	meter.Mark(9999999)
 | 
						|
	c.addMeter("test/meter", meter)
 | 
						|
 | 
						|
	timer := metrics.NewTimer()
 | 
						|
	defer timer.Stop()
 | 
						|
	timer.Update(20 * time.Millisecond)
 | 
						|
	timer.Update(21 * time.Millisecond)
 | 
						|
	timer.Update(22 * time.Millisecond)
 | 
						|
	timer.Update(120 * time.Millisecond)
 | 
						|
	timer.Update(23 * time.Millisecond)
 | 
						|
	timer.Update(24 * time.Millisecond)
 | 
						|
	c.addTimer("test/timer", timer)
 | 
						|
 | 
						|
	resettingTimer := metrics.NewResettingTimer()
 | 
						|
	resettingTimer.Update(10 * time.Millisecond)
 | 
						|
	resettingTimer.Update(11 * time.Millisecond)
 | 
						|
	resettingTimer.Update(12 * time.Millisecond)
 | 
						|
	resettingTimer.Update(120 * time.Millisecond)
 | 
						|
	resettingTimer.Update(13 * time.Millisecond)
 | 
						|
	resettingTimer.Update(14 * time.Millisecond)
 | 
						|
	c.addResettingTimer("test/resetting_timer", resettingTimer.Snapshot())
 | 
						|
 | 
						|
	emptyResettingTimer := metrics.NewResettingTimer().Snapshot()
 | 
						|
	c.addResettingTimer("test/empty_resetting_timer", emptyResettingTimer)
 | 
						|
 | 
						|
	const expectedOutput = `# TYPE test_counter gauge
 | 
						|
test_counter 12345
 | 
						|
 | 
						|
# TYPE test_gauge gauge
 | 
						|
test_gauge 23456
 | 
						|
 | 
						|
# TYPE test_gauge_float64 gauge
 | 
						|
test_gauge_float64 34567.89
 | 
						|
 | 
						|
# TYPE test_histogram_count counter
 | 
						|
test_histogram_count 0
 | 
						|
 | 
						|
# TYPE test_histogram summary
 | 
						|
test_histogram {quantile="0.5"} 0
 | 
						|
test_histogram {quantile="0.75"} 0
 | 
						|
test_histogram {quantile="0.95"} 0
 | 
						|
test_histogram {quantile="0.99"} 0
 | 
						|
test_histogram {quantile="0.999"} 0
 | 
						|
test_histogram {quantile="0.9999"} 0
 | 
						|
 | 
						|
# TYPE test_meter gauge
 | 
						|
test_meter 9999999
 | 
						|
 | 
						|
# TYPE test_timer_count counter
 | 
						|
test_timer_count 6
 | 
						|
 | 
						|
# TYPE test_timer summary
 | 
						|
test_timer {quantile="0.5"} 2.25e+07
 | 
						|
test_timer {quantile="0.75"} 4.8e+07
 | 
						|
test_timer {quantile="0.95"} 1.2e+08
 | 
						|
test_timer {quantile="0.99"} 1.2e+08
 | 
						|
test_timer {quantile="0.999"} 1.2e+08
 | 
						|
test_timer {quantile="0.9999"} 1.2e+08
 | 
						|
 | 
						|
# TYPE test_resetting_timer_count counter
 | 
						|
test_resetting_timer_count 6
 | 
						|
 | 
						|
# TYPE test_resetting_timer summary
 | 
						|
test_resetting_timer {quantile="0.50"} 12000000
 | 
						|
test_resetting_timer {quantile="0.95"} 120000000
 | 
						|
test_resetting_timer {quantile="0.99"} 120000000
 | 
						|
 | 
						|
`
 | 
						|
	exp := c.buff.String()
 | 
						|
	if exp != expectedOutput {
 | 
						|
		t.Log("Expected Output:\n", expectedOutput)
 | 
						|
		t.Log("Actual Output:\n", exp)
 | 
						|
		t.Fatal("unexpected collector output")
 | 
						|
	}
 | 
						|
}
 |