Files
telegraf/plugins/processors/threshold/threshold_test.go
2018-08-24 10:13:59 -07:00

67 lines
1.7 KiB
Go

package threshold
import (
"log"
"testing"
"time"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/metric"
"github.com/stretchr/testify/require"
)
intArray := []int{1,2,3,4,5,6,7,8,8,9,10,100,50}
func MakeInputMetrics(num []int) []telegraf.Metric {
allOfEm := make([]telegraf.Metric, 0)
for i := range num {
m, _ := metric.New("test", map[string]string{}, map[string]interface{}{"sample": i}, time.Now())
allOfEm = append(allOfEm, m)
}
return allOfEm
}
func MakeOutputMetric(num int, dev float64, variance float64, mean float64) telegraf.Metric {
m, _ := metric.New("test", map[string]string{}, map[string]interface{}{"sample": num,
"sample_deviation": dev,
"sample_variance": variance,
"sample_mean": mean}, time.Now())
return m
}
func TestStats(t *testing.T) {
tests := []struct {
StatsField string
WindowSize int
name string
input []telegraf.Metric
want []telegraf.Metric
now func() time.Time
wantErr bool
}{
{
name: "Test deviation, mean, and variant fields are added",
now: func() time.Time { return time.Unix(0, 0) },
input: MakeInputMetrics(16),
want: MakeAllOutputMetrics(16)},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
s := Stats{
WindowSize: 4,
StatsField: "sample",
}
got := s.Apply(tt.input...)
for i, m := range got {
std := m.Fields()["sample_deviation"]
variance := m.Fields()["sample_variance"]
mean := m.Fields()["sample_mean"]
log.Printf("m[%v]: std: %v, var: %v, mean: %v", i, std, variance, mean)
}
for i, m := range tt.want {
require.Equal(t, m.Fields(), got[i].Fields())
}
})
}
}