github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/metrics/prometheus/collector_test.go (about) 1 package prometheus 2 3 import ( 4 "os" 5 "testing" 6 "time" 7 8 "github.com/ethereum/go-ethereum/metrics" 9 ) 10 11 func TestMain(m *testing.M) { 12 metrics.Enabled = true 13 os.Exit(m.Run()) 14 } 15 16 func TestCollector(t *testing.T) { 17 c := newCollector() 18 19 counter := metrics.NewCounter() 20 counter.Inc(12345) 21 c.addCounter("test/counter", counter) 22 23 gauge := metrics.NewGauge() 24 gauge.Update(23456) 25 c.addGauge("test/gauge", gauge) 26 27 gaugeFloat64 := metrics.NewGaugeFloat64() 28 gaugeFloat64.Update(34567.89) 29 c.addGaugeFloat64("test/gauge_float64", gaugeFloat64) 30 31 histogram := metrics.NewHistogram(&metrics.NilSample{}) 32 c.addHistogram("test/histogram", histogram) 33 34 meter := metrics.NewMeter() 35 defer meter.Stop() 36 meter.Mark(9999999) 37 c.addMeter("test/meter", meter) 38 39 timer := metrics.NewTimer() 40 defer timer.Stop() 41 timer.Update(20 * time.Millisecond) 42 timer.Update(21 * time.Millisecond) 43 timer.Update(22 * time.Millisecond) 44 timer.Update(120 * time.Millisecond) 45 timer.Update(23 * time.Millisecond) 46 timer.Update(24 * time.Millisecond) 47 c.addTimer("test/timer", timer) 48 49 resettingTimer := metrics.NewResettingTimer() 50 resettingTimer.Update(10 * time.Millisecond) 51 resettingTimer.Update(11 * time.Millisecond) 52 resettingTimer.Update(12 * time.Millisecond) 53 resettingTimer.Update(120 * time.Millisecond) 54 resettingTimer.Update(13 * time.Millisecond) 55 resettingTimer.Update(14 * time.Millisecond) 56 c.addResettingTimer("test/resetting_timer", resettingTimer.Snapshot()) 57 58 emptyResettingTimer := metrics.NewResettingTimer().Snapshot() 59 c.addResettingTimer("test/empty_resetting_timer", emptyResettingTimer) 60 61 const expectedOutput = `# TYPE test_counter gauge 62 test_counter 12345 63 64 # TYPE test_gauge gauge 65 test_gauge 23456 66 67 # TYPE test_gauge_float64 gauge 68 test_gauge_float64 34567.89 69 70 # TYPE test_histogram summary 71 test_histogram {quantile="0.5"} 0 72 test_histogram {quantile="0.75"} 0 73 test_histogram {quantile="0.95"} 0 74 test_histogram {quantile="0.99"} 0 75 test_histogram {quantile="0.999"} 0 76 test_histogram {quantile="0.9999"} 0 77 test_histogram_sum 0.000000 78 test_histogram_count 6 79 80 # TYPE test_meter gauge 81 test_meter 9999999 82 83 # TYPE test_timer_count counter 84 test_timer_count 6 85 86 # TYPE test_timer summary 87 test_timer {quantile="0.5"} 2.25e+07 88 test_timer {quantile="0.75"} 4.8e+07 89 test_timer {quantile="0.95"} 1.2e+08 90 test_timer {quantile="0.99"} 1.2e+08 91 test_timer {quantile="0.999"} 1.2e+08 92 test_timer {quantile="0.9999"} 1.2e+08 93 94 # TYPE test_resetting_timer summary 95 test_resetting_timer {quantile="0.50"} 12000000 96 test_resetting_timer {quantile="0.95"} 120000000 97 test_resetting_timer {quantile="0.99"} 120000000 98 test_resetting_timer_sum 180000000 99 test_resetting_timer_count 6 100 101 ` 102 103 c.addResettingTimer("test/empty_resetting_timer", emptyResettingTimer) 104 105 exp := c.buff.String() 106 if exp != expectedOutput { 107 t.Log("Expected Output:\n", expectedOutput) 108 t.Log("Actual Output:\n", exp) 109 t.Fatal("unexpected collector output") 110 } 111 }