Skip to content

Commit

Permalink
fix: elasticsearch output float handling test (#11120)
Browse files Browse the repository at this point in the history
  • Loading branch information
powersj authored May 17, 2022
1 parent b4b52d1 commit c8796a7
Showing 1 changed file with 52 additions and 24 deletions.
76 changes: 52 additions & 24 deletions plugins/outputs/elasticsearch/elasticsearch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,35 +159,63 @@ func TestConnectAndWriteMetricWithNaNValueReplacement(t *testing.T) {
t.Skip("Skipping integration test in short mode")
}

urls := []string{"http://" + testutil.GetLocalHost() + ":9200"}

e := &Elasticsearch{
URLs: urls,
IndexName: "test-%Y.%m.%d",
Timeout: config.Duration(time.Second * 5),
ManageTemplate: true,
TemplateName: "telegraf",
OverwriteTemplate: false,
HealthCheckInterval: config.Duration(time.Second * 10),
HealthCheckTimeout: config.Duration(time.Second * 1),
FloatHandling: "3.1415",
Log: testutil.Logger{},
tests := []struct {
floatHandle string
floatReplacement float64
expectError bool
}{
{
"none",
0.0,
true,
},
{
"drop",
0.0,
false,
},
{
"replace",
0.0,
false,
},
}

metrics := []telegraf.Metric{
testutil.TestMetric(math.NaN()),
testutil.TestMetric(math.Inf(1)),
testutil.TestMetric(math.Inf(-1)),
}
urls := []string{"http://" + testutil.GetLocalHost() + ":9200"}

// Verify that we can connect to Elasticsearch
err := e.Connect()
require.NoError(t, err)
for _, test := range tests {
e := &Elasticsearch{
URLs: urls,
IndexName: "test-%Y.%m.%d",
Timeout: config.Duration(time.Second * 5),
ManageTemplate: true,
TemplateName: "telegraf",
OverwriteTemplate: false,
HealthCheckInterval: config.Duration(time.Second * 10),
HealthCheckTimeout: config.Duration(time.Second * 1),
FloatHandling: test.floatHandle,
FloatReplacement: test.floatReplacement,
Log: testutil.Logger{},
}

// Verify that we can fail for metric with unhandled NaN/inf/-inf values
for _, m := range metrics {
err = e.Write([]telegraf.Metric{m})
metrics := []telegraf.Metric{
testutil.TestMetric(math.NaN()),
testutil.TestMetric(math.Inf(1)),
testutil.TestMetric(math.Inf(-1)),
}

err := e.Connect()
require.NoError(t, err)

for _, m := range metrics {
err = e.Write([]telegraf.Metric{m})

if test.expectError {
require.Error(t, err)
} else {
require.NoError(t, err)
}
}
}
}

Expand Down

0 comments on commit c8796a7

Please sign in to comment.