| 
									
										
										
										
											2018-02-23 10:56:08 +01:00
										 |  |  | package metrics | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func BenchmarkGuage(b *testing.B) { | 
					
						
							|  |  |  | 	g := NewGauge() | 
					
						
							|  |  |  | 	b.ResetTimer() | 
					
						
							|  |  |  | 	for i := 0; i < b.N; i++ { | 
					
						
							|  |  |  | 		g.Update(int64(i)) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestGauge(t *testing.T) { | 
					
						
							|  |  |  | 	g := NewGauge() | 
					
						
							|  |  |  | 	g.Update(int64(47)) | 
					
						
							| 
									
										
										
										
											2019-11-22 16:04:35 +01:00
										 |  |  | 	if v := g.Value(); v != 47 { | 
					
						
							| 
									
										
										
										
											2018-02-23 10:56:08 +01:00
										 |  |  | 		t.Errorf("g.Value(): 47 != %v\n", v) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestGaugeSnapshot(t *testing.T) { | 
					
						
							|  |  |  | 	g := NewGauge() | 
					
						
							|  |  |  | 	g.Update(int64(47)) | 
					
						
							|  |  |  | 	snapshot := g.Snapshot() | 
					
						
							|  |  |  | 	g.Update(int64(0)) | 
					
						
							| 
									
										
										
										
											2019-11-22 16:04:35 +01:00
										 |  |  | 	if v := snapshot.Value(); v != 47 { | 
					
						
							| 
									
										
										
										
											2018-02-23 10:56:08 +01:00
										 |  |  | 		t.Errorf("g.Value(): 47 != %v\n", v) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestGetOrRegisterGauge(t *testing.T) { | 
					
						
							|  |  |  | 	r := NewRegistry() | 
					
						
							|  |  |  | 	NewRegisteredGauge("foo", r).Update(47) | 
					
						
							| 
									
										
										
										
											2019-11-22 16:04:35 +01:00
										 |  |  | 	if g := GetOrRegisterGauge("foo", r); g.Value() != 47 { | 
					
						
							| 
									
										
										
										
											2018-02-23 10:56:08 +01:00
										 |  |  | 		t.Fatal(g) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestFunctionalGauge(t *testing.T) { | 
					
						
							|  |  |  | 	var counter int64 | 
					
						
							|  |  |  | 	fg := NewFunctionalGauge(func() int64 { | 
					
						
							|  |  |  | 		counter++ | 
					
						
							|  |  |  | 		return counter | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | 	fg.Value() | 
					
						
							|  |  |  | 	fg.Value() | 
					
						
							|  |  |  | 	if counter != 2 { | 
					
						
							|  |  |  | 		t.Error("counter != 2") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestGetOrRegisterFunctionalGauge(t *testing.T) { | 
					
						
							|  |  |  | 	r := NewRegistry() | 
					
						
							|  |  |  | 	NewRegisteredFunctionalGauge("foo", r, func() int64 { return 47 }) | 
					
						
							| 
									
										
										
										
											2019-11-22 16:04:35 +01:00
										 |  |  | 	if g := GetOrRegisterGauge("foo", r); g.Value() != 47 { | 
					
						
							| 
									
										
										
										
											2018-02-23 10:56:08 +01:00
										 |  |  | 		t.Fatal(g) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func ExampleGetOrRegisterGauge() { | 
					
						
							|  |  |  | 	m := "server.bytes_sent" | 
					
						
							|  |  |  | 	g := GetOrRegisterGauge(m, nil) | 
					
						
							|  |  |  | 	g.Update(47) | 
					
						
							|  |  |  | 	fmt.Println(g.Value()) // Output: 47 | 
					
						
							|  |  |  | } |