2016-01-29 21:58:38 +00:00
|
|
|
package telegraf
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"math"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestNewMetric(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"host": "localhost",
|
|
|
|
"datacenter": "us-east-1",
|
|
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
|
|
"usage_idle": float64(99),
|
|
|
|
"usage_busy": float64(1),
|
|
|
|
}
|
|
|
|
m, err := NewMetric("cpu", tags, fields, now)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2016-08-30 17:09:48 +00:00
|
|
|
assert.Equal(t, Untyped, m.Type())
|
|
|
|
assert.Equal(t, tags, m.Tags())
|
|
|
|
assert.Equal(t, fields, m.Fields())
|
|
|
|
assert.Equal(t, "cpu", m.Name())
|
|
|
|
assert.Equal(t, now, m.Time())
|
|
|
|
assert.Equal(t, now.UnixNano(), m.UnixNano())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewGaugeMetric(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"host": "localhost",
|
|
|
|
"datacenter": "us-east-1",
|
|
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
|
|
"usage_idle": float64(99),
|
|
|
|
"usage_busy": float64(1),
|
|
|
|
}
|
|
|
|
m, err := NewGaugeMetric("cpu", tags, fields, now)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
assert.Equal(t, Gauge, m.Type())
|
|
|
|
assert.Equal(t, tags, m.Tags())
|
|
|
|
assert.Equal(t, fields, m.Fields())
|
|
|
|
assert.Equal(t, "cpu", m.Name())
|
|
|
|
assert.Equal(t, now, m.Time())
|
|
|
|
assert.Equal(t, now.UnixNano(), m.UnixNano())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewCounterMetric(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"host": "localhost",
|
|
|
|
"datacenter": "us-east-1",
|
|
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
|
|
"usage_idle": float64(99),
|
|
|
|
"usage_busy": float64(1),
|
|
|
|
}
|
|
|
|
m, err := NewCounterMetric("cpu", tags, fields, now)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
assert.Equal(t, Counter, m.Type())
|
2016-01-29 21:58:38 +00:00
|
|
|
assert.Equal(t, tags, m.Tags())
|
|
|
|
assert.Equal(t, fields, m.Fields())
|
|
|
|
assert.Equal(t, "cpu", m.Name())
|
|
|
|
assert.Equal(t, now, m.Time())
|
|
|
|
assert.Equal(t, now.UnixNano(), m.UnixNano())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewMetricString(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"host": "localhost",
|
|
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
|
|
"usage_idle": float64(99),
|
|
|
|
}
|
|
|
|
m, err := NewMetric("cpu", tags, fields, now)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
lineProto := fmt.Sprintf("cpu,host=localhost usage_idle=99 %d",
|
|
|
|
now.UnixNano())
|
|
|
|
assert.Equal(t, lineProto, m.String())
|
|
|
|
|
|
|
|
lineProtoPrecision := fmt.Sprintf("cpu,host=localhost usage_idle=99 %d",
|
|
|
|
now.Unix())
|
|
|
|
assert.Equal(t, lineProtoPrecision, m.PrecisionString("s"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewMetricFailNaN(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"host": "localhost",
|
|
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
|
|
"usage_idle": math.NaN(),
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err := NewMetric("cpu", tags, fields, now)
|
|
|
|
assert.Error(t, err)
|
|
|
|
}
|