github.com/kisexp/xdchain@v0.0.0-20211206025815-490d6b732aa7/metrics/prometheus/collector_test.go (about) 1 package prometheus 2 3 import ( 4 "os" 5 "testing" 6 "time" 7 8 "github.com/kisexp/xdchain/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_count counter 71 test_histogram_count 0 72 73 # TYPE test_histogram summary 74 test_histogram {quantile="0.5"} 0 75 test_histogram {quantile="0.75"} 0 76 test_histogram {quantile="0.95"} 0 77 test_histogram {quantile="0.99"} 0 78 test_histogram {quantile="0.999"} 0 79 test_histogram {quantile="0.9999"} 0 80 81 # TYPE test_meter gauge 82 test_meter 9999999 83 84 # TYPE test_timer_count counter 85 test_timer_count 6 86 87 # TYPE test_timer summary 88 test_timer {quantile="0.5"} 2.25e+07 89 test_timer {quantile="0.75"} 4.8e+07 90 test_timer {quantile="0.95"} 1.2e+08 91 test_timer {quantile="0.99"} 1.2e+08 92 test_timer {quantile="0.999"} 1.2e+08 93 test_timer {quantile="0.9999"} 1.2e+08 94 95 # TYPE test_resetting_timer_count counter 96 test_resetting_timer_count 6 97 98 # TYPE test_resetting_timer summary 99 test_resetting_timer {quantile="0.50"} 12000000 100 test_resetting_timer {quantile="0.95"} 120000000 101 test_resetting_timer {quantile="0.99"} 120000000 102 103 ` 104 exp := c.buff.String() 105 if exp != expectedOutput { 106 t.Log("Expected Output:\n", expectedOutput) 107 t.Log("Actual Output:\n", exp) 108 t.Fatal("unexpected collector output") 109 } 110 }