Skip to content
This repository was archived by the owner on Nov 5, 2021. It is now read-only.

Commit d60aac9

Browse files
committed
Ping probe: Update results map even for the targets that don't resolve.
Earlier we were skipping updating any target specific data structure if target fails to resolve. We should update the results map regardless of wether target resolves or not. See #264 for more details. PiperOrigin-RevId: 259473838
1 parent ab329ec commit d60aac9

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

probes/ping/ping.go

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ func (p *Probe) initInternal() error {
144144
p.ipVer = p.opts.IPVersion
145145
}
146146

147-
p.targets = p.opts.Targets.List()
148147
p.results = make(map[string]*result)
149148
p.ip2target = make(map[[16]byte]string)
150149
p.target2addr = make(map[string]net.Addr)
@@ -154,6 +153,9 @@ func (p *Probe) initInternal() error {
154153
p.source = p.opts.SourceIP.String()
155154
}
156155

156+
// Update targets run peiodically as well.
157+
p.updateTargets()
158+
157159
return nil
158160
}
159161

@@ -197,8 +199,13 @@ func (p *Probe) listen() error {
197199
return err
198200
}
199201

200-
func (p *Probe) resolveTargets() {
202+
func (p *Probe) updateTargets() {
203+
p.targets = p.opts.Targets.List()
204+
201205
for _, t := range p.targets {
206+
// Update results map:
207+
p.updateResultForTarget(t)
208+
202209
ip, err := p.opts.Targets.Resolve(t, p.ipVer)
203210
if err != nil {
204211
p.l.Warning("Bad target: ", t, ". Err: ", err.Error())
@@ -213,21 +220,24 @@ func (p *Probe) resolveTargets() {
213220
}
214221
p.target2addr[t] = a
215222
p.ip2target[ipToKey(ip)] = t
223+
}
224+
}
216225

217-
// Update results map:
218-
if _, ok := p.results[t]; ok {
219-
continue
220-
}
221-
var latencyValue metrics.Value
222-
if p.opts.LatencyDist != nil {
223-
latencyValue = p.opts.LatencyDist.Clone()
224-
} else {
225-
latencyValue = metrics.NewFloat(0)
226-
}
227-
p.results[t] = &result{
228-
latency: latencyValue,
229-
validationFailure: validators.ValidationFailureMap(p.opts.Validators),
230-
}
226+
func (p *Probe) updateResultForTarget(t string) {
227+
if _, ok := p.results[t]; ok {
228+
return
229+
}
230+
231+
var latencyValue metrics.Value
232+
if p.opts.LatencyDist != nil {
233+
latencyValue = p.opts.LatencyDist.Clone()
234+
} else {
235+
latencyValue = metrics.NewFloat(0)
236+
}
237+
238+
p.results[t] = &result{
239+
latency: latencyValue,
240+
validationFailure: validators.ValidationFailureMap(p.opts.Validators),
231241
}
232242
}
233243

@@ -420,8 +430,7 @@ func (p *Probe) newRunID() uint16 {
420430
func (p *Probe) runProbe() {
421431
// Resolve targets if target resolve interval has elapsed.
422432
if (p.runCnt % uint64(p.c.GetResolveTargetsInterval())) == 0 {
423-
p.targets = p.opts.Targets.List()
424-
p.resolveTargets()
433+
p.updateTargets()
425434
}
426435
p.runCnt++
427436
runID := p.newRunID()

probes/ping/ping_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ func sendAndCheckPackets(p *Probe, t *testing.T) {
153153
tic := newTestICMPConn(p.c, p.targets)
154154
p.conn = tic
155155
trackerChan := make(chan bool, int(p.c.GetPacketsPerProbe())*len(p.targets))
156-
p.resolveTargets()
157156
runID := p.newRunID()
158157
p.sendPackets(runID, trackerChan)
159158

@@ -247,7 +246,6 @@ func TestSendPacketsIPv6ToIPv4Hosts(t *testing.T) {
247246
tic := newTestICMPConn(c, p.targets)
248247
p.conn = tic
249248
trackerChan := make(chan bool, int(c.GetPacketsPerProbe())*len(p.targets))
250-
p.resolveTargets()
251249
p.sendPackets(p.newRunID(), trackerChan)
252250
for _, target := range p.targets {
253251
if len(tic.sentPackets[target]) != 0 {

0 commit comments

Comments
 (0)