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