Resolve regression, re-add missing function (#8764)

This commit is contained in:
Sebastian Spaink 2021-01-28 09:54:29 -06:00 committed by GitHub
parent d415d9f0fb
commit 03fe914c59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"math"
"os/exec"
"runtime"
"strings"
"sync"
@ -11,6 +12,7 @@ import (
"github.com/go-ping/ping"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/internal"
"github.com/influxdata/telegraf/plugins/inputs"
)
@ -311,9 +313,21 @@ func (p *Ping) Init() error {
return nil
}
func hostPinger(binary string, timeout float64, args ...string) (string, error) {
bin, err := exec.LookPath(binary)
if err != nil {
return "", err
}
c := exec.Command(bin, args...)
out, err := internal.CombinedOutputTimeout(c,
time.Second*time.Duration(timeout+5))
return string(out), err
}
func init() {
inputs.Add("ping", func() telegraf.Input {
p := &Ping{
pingHost: hostPinger,
PingInterval: 1.0,
Count: 1,
Timeout: 1.0,

View File

@ -13,6 +13,7 @@ import (
"time"
"github.com/go-ping/ping"
"github.com/influxdata/telegraf/plugins/inputs"
"github.com/influxdata/telegraf/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@ -261,6 +262,21 @@ func TestPingGather(t *testing.T) {
acc.AssertContainsTaggedFields(t, "ping", fields, tags)
}
func TestPingGatherIntegration(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration test in short mode, retrieves systems ping utility")
}
var acc testutil.Accumulator
p, ok := inputs.Inputs["ping"]().(*Ping)
require.True(t, ok)
p.Urls = []string{"localhost", "influxdata.com"}
err := acc.GatherError(p.Gather)
require.NoError(t, err)
require.Equal(t, 0, acc.Metrics[0].Fields["result_code"])
require.Equal(t, 0, acc.Metrics[1].Fields["result_code"])
}
var lossyPingOutput = `
PING www.google.com (216.58.218.164) 56(84) bytes of data.
64 bytes from host.net (216.58.218.164): icmp_seq=1 ttl=63 time=35.2 ms