113 lines
2.4 KiB
Go
113 lines
2.4 KiB
Go
|
package batch
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"github.com/influxdata/telegraf"
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
)
|
||
|
|
||
|
const batchTag = "?internal_batch_idx"
|
||
|
|
||
|
func Test_SingleMetricPutInBatch0(t *testing.T) {
|
||
|
b := &Batch{
|
||
|
BatchTag: batchTag,
|
||
|
NumBatches: 1,
|
||
|
}
|
||
|
m := testutil.MockMetricsWithValue(1)
|
||
|
expectedM := testutil.MockMetricsWithValue(1)
|
||
|
expectedM[0].AddTag(batchTag, "0")
|
||
|
|
||
|
res := b.Apply(m...)
|
||
|
testutil.RequireMetricsEqual(t, expectedM, res)
|
||
|
}
|
||
|
|
||
|
func Test_MetricsSmallerThanBatchSizeAreInDifferentBatches(t *testing.T) {
|
||
|
b := &Batch{
|
||
|
BatchTag: batchTag,
|
||
|
NumBatches: 3,
|
||
|
}
|
||
|
|
||
|
ms := make([]telegraf.Metric, 0, 2)
|
||
|
for range cap(ms) {
|
||
|
ms = append(ms, testutil.MockMetrics()...)
|
||
|
}
|
||
|
|
||
|
res := b.Apply(ms...)
|
||
|
|
||
|
batchTagValue, ok := res[0].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "0", batchTagValue)
|
||
|
|
||
|
batchTagValue, ok = res[1].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "1", batchTagValue)
|
||
|
}
|
||
|
|
||
|
func Test_MetricsEqualToBatchSizeInDifferentBatches(t *testing.T) {
|
||
|
b := &Batch{
|
||
|
BatchTag: batchTag,
|
||
|
NumBatches: 3,
|
||
|
}
|
||
|
|
||
|
ms := make([]telegraf.Metric, 0, 3)
|
||
|
for range cap(ms) {
|
||
|
ms = append(ms, testutil.MockMetrics()...)
|
||
|
}
|
||
|
|
||
|
res := b.Apply(ms...)
|
||
|
batchTagValue, ok := res[0].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "0", batchTagValue)
|
||
|
|
||
|
batchTagValue, ok = res[1].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "1", batchTagValue)
|
||
|
|
||
|
batchTagValue, ok = res[2].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "2", batchTagValue)
|
||
|
}
|
||
|
|
||
|
func Test_MetricsMoreThanBatchSizeInSameBatch(t *testing.T) {
|
||
|
b := &Batch{
|
||
|
BatchTag: batchTag,
|
||
|
NumBatches: 2,
|
||
|
}
|
||
|
|
||
|
ms := make([]telegraf.Metric, 0, 3)
|
||
|
for range cap(ms) {
|
||
|
ms = append(ms, testutil.MockMetrics()...)
|
||
|
}
|
||
|
|
||
|
res := b.Apply(ms...)
|
||
|
batchTagValue, ok := res[0].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "0", batchTagValue)
|
||
|
|
||
|
batchTagValue, ok = res[1].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "1", batchTagValue)
|
||
|
|
||
|
batchTagValue, ok = res[2].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "0", batchTagValue)
|
||
|
}
|
||
|
|
||
|
func Test_MetricWithExistingTagNotChanged(t *testing.T) {
|
||
|
b := &Batch{
|
||
|
BatchTag: batchTag,
|
||
|
NumBatches: 2,
|
||
|
SkipExisting: true,
|
||
|
}
|
||
|
|
||
|
m := testutil.MockMetricsWithValue(1)
|
||
|
m[0].AddTag(batchTag, "4")
|
||
|
res := b.Apply(m...)
|
||
|
tv, ok := res[0].GetTag(batchTag)
|
||
|
require.True(t, ok)
|
||
|
require.Equal(t, "4", tv)
|
||
|
}
|