* 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")
 | |
| 	}
 | |
| }
 |