63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| package internal
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/influxdata/telegraf/selfstat"
 | |
| 	"github.com/influxdata/telegraf/testutil"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestSelfPlugin(t *testing.T) {
 | |
| 	s := NewSelf()
 | |
| 	acc := &testutil.Accumulator{}
 | |
| 
 | |
| 	s.Gather(acc)
 | |
| 	assert.True(t, acc.HasMeasurement("internal_memstats"))
 | |
| 
 | |
| 	// test that a registered stat is incremented
 | |
| 	stat := selfstat.Register("mytest", "test", map[string]string{"test": "foo"})
 | |
| 	stat.Incr(1)
 | |
| 	stat.Incr(2)
 | |
| 	s.Gather(acc)
 | |
| 	acc.AssertContainsTaggedFields(t, "internal_mytest",
 | |
| 		map[string]interface{}{
 | |
| 			"test": int64(3),
 | |
| 		},
 | |
| 		map[string]string{
 | |
| 			"test": "foo",
 | |
| 		},
 | |
| 	)
 | |
| 	acc.ClearMetrics()
 | |
| 
 | |
| 	// test that a registered stat is set properly
 | |
| 	stat.Set(101)
 | |
| 	s.Gather(acc)
 | |
| 	acc.AssertContainsTaggedFields(t, "internal_mytest",
 | |
| 		map[string]interface{}{
 | |
| 			"test": int64(101),
 | |
| 		},
 | |
| 		map[string]string{
 | |
| 			"test": "foo",
 | |
| 		},
 | |
| 	)
 | |
| 	acc.ClearMetrics()
 | |
| 
 | |
| 	// test that regular and timing stats can share the same measurement, and
 | |
| 	// that timings are set properly.
 | |
| 	timing := selfstat.RegisterTiming("mytest", "test_ns", map[string]string{"test": "foo"})
 | |
| 	timing.Incr(100)
 | |
| 	timing.Incr(200)
 | |
| 	s.Gather(acc)
 | |
| 	acc.AssertContainsTaggedFields(t, "internal_mytest",
 | |
| 		map[string]interface{}{
 | |
| 			"test":    int64(101),
 | |
| 			"test_ns": int64(150),
 | |
| 		},
 | |
| 		map[string]string{
 | |
| 			"test": "foo",
 | |
| 		},
 | |
| 	)
 | |
| }
 |