84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
|
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)
|
||
|
|
||
|
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 TestNewMetricStringNoTime(t *testing.T) {
|
||
|
tags := map[string]string{
|
||
|
"host": "localhost",
|
||
|
}
|
||
|
fields := map[string]interface{}{
|
||
|
"usage_idle": float64(99),
|
||
|
}
|
||
|
m, err := NewMetric("cpu", tags, fields)
|
||
|
assert.NoError(t, err)
|
||
|
|
||
|
lineProto := fmt.Sprintf("cpu,host=localhost usage_idle=99")
|
||
|
assert.Equal(t, lineProto, m.String())
|
||
|
|
||
|
lineProtoPrecision := fmt.Sprintf("cpu,host=localhost usage_idle=99")
|
||
|
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)
|
||
|
}
|