2016-11-22 12:51:57 +00:00
|
|
|
package metric
|
2016-01-29 21:58:38 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"math"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
2016-11-28 18:19:35 +00:00
|
|
|
"github.com/influxdata/telegraf"
|
|
|
|
|
2016-01-29 21:58:38 +00:00
|
|
|
"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),
|
|
|
|
}
|
2016-11-22 12:51:57 +00:00
|
|
|
m, err := New("cpu", tags, fields, now)
|
2016-01-29 21:58:38 +00:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2016-11-28 18:19:35 +00:00
|
|
|
assert.Equal(t, telegraf.Untyped, m.Type())
|
2016-08-30 17:09:48 +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 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),
|
|
|
|
}
|
2016-11-28 18:19:35 +00:00
|
|
|
m, err := New("cpu", tags, fields, now, telegraf.Gauge)
|
2016-08-30 17:09:48 +00:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2016-11-28 18:19:35 +00:00
|
|
|
assert.Equal(t, telegraf.Gauge, m.Type())
|
2016-08-30 17:09:48 +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 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),
|
|
|
|
}
|
2016-11-28 18:19:35 +00:00
|
|
|
m, err := New("cpu", tags, fields, now, telegraf.Counter)
|
2016-08-30 17:09:48 +00:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2016-11-28 18:19:35 +00:00
|
|
|
assert.Equal(t, telegraf.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),
|
|
|
|
}
|
2016-11-22 12:51:57 +00:00
|
|
|
m, err := New("cpu", tags, fields, now)
|
2016-01-29 21:58:38 +00:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2016-11-22 12:51:57 +00:00
|
|
|
lineProto := fmt.Sprintf("cpu,host=localhost usage_idle=99 %d\n",
|
2016-01-29 21:58:38 +00:00
|
|
|
now.UnixNano())
|
|
|
|
assert.Equal(t, lineProto, m.String())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewMetricFailNaN(t *testing.T) {
|
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"host": "localhost",
|
|
|
|
}
|
|
|
|
fields := map[string]interface{}{
|
|
|
|
"usage_idle": math.NaN(),
|
|
|
|
}
|
|
|
|
|
2016-11-22 12:51:57 +00:00
|
|
|
_, err := New("cpu", tags, fields, now)
|
|
|
|
assert.NoError(t, err)
|
2016-01-29 21:58:38 +00:00
|
|
|
}
|