Skip to content

Commit aa6dc79

Browse files
authored
Sort and timeout is deadline (#8839)
1 parent ba66d4f commit aa6dc79

2 files changed

Lines changed: 8 additions & 8 deletions

File tree

plugins/inputs/ping/ping.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"net"
88
"os/exec"
99
"runtime"
10+
"sort"
1011
"strings"
1112
"sync"
1213
"time"
@@ -176,14 +177,9 @@ func (p *Ping) nativePing(destination string) (*pingStats, error) {
176177

177178
pinger.Source = p.sourceAddress
178179
pinger.Interval = p.calcInterval
179-
pinger.Timeout = p.calcTimeout
180180

181181
if p.Deadline > 0 {
182-
// If deadline is set ping exits regardless of how many packets have been sent or received
183-
timer := time.AfterFunc(time.Duration(p.Deadline)*time.Second, func() {
184-
pinger.Stop()
185-
})
186-
defer timer.Stop()
182+
pinger.Timeout = time.Duration(p.Deadline) * time.Second
187183
}
188184

189185
// Get Time to live (TTL) of first response, matching original implementation
@@ -240,6 +236,7 @@ func (p *Ping) pingToURLNative(destination string, acc telegraf.Accumulator) {
240236
return
241237
}
242238

239+
sort.Sort(durationSlice(stats.Rtts))
243240
for _, perc := range p.Percentiles {
244241
var value = percentile(durationSlice(stats.Rtts), perc)
245242
var field = fmt.Sprintf("percentile%v_ms", perc)

plugins/inputs/ping/ping_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -432,11 +432,11 @@ func TestPingGatherNative(t *testing.T) {
432432
PacketsSent: 5,
433433
PacketsRecv: 5,
434434
Rtts: []time.Duration{
435-
1 * time.Millisecond,
436-
2 * time.Millisecond,
437435
3 * time.Millisecond,
438436
4 * time.Millisecond,
437+
1 * time.Millisecond,
439438
5 * time.Millisecond,
439+
2 * time.Millisecond,
440440
},
441441
},
442442
ttl: 1,
@@ -475,8 +475,11 @@ func TestPingGatherNative(t *testing.T) {
475475
assert.True(t, acc.HasPoint("ping", map[string]string{"url": "localhost"}, "packets_transmitted", 5))
476476
assert.True(t, acc.HasPoint("ping", map[string]string{"url": "localhost"}, "packets_received", 5))
477477
assert.True(t, acc.HasField("ping", "percentile50_ms"))
478+
assert.Equal(t, float64(3), acc.Metrics[0].Fields["percentile50_ms"])
478479
assert.True(t, acc.HasField("ping", "percentile95_ms"))
480+
assert.Equal(t, float64(4.799999), acc.Metrics[0].Fields["percentile95_ms"])
479481
assert.True(t, acc.HasField("ping", "percentile99_ms"))
482+
assert.Equal(t, float64(4.96), acc.Metrics[0].Fields["percentile99_ms"])
480483
assert.True(t, acc.HasField("ping", "percent_packet_loss"))
481484
assert.True(t, acc.HasField("ping", "minimum_response_ms"))
482485
assert.True(t, acc.HasField("ping", "average_response_ms"))

0 commit comments

Comments
 (0)