ooni-probe-cli/internal/engine/experiment/dnsping/testkeys.go
DecFox 5501b2201a
feat: dnsping using step-by-step (#831)
Reference issue for this pull request: https://github.com/ooni/probe/issues/2159

This diff refactors the `dnsping` experiment to use the [step-by-step measurement style](https://github.com/ooni/probe-cli/blob/master/docs/design/dd-003-step-by-step.md).

Co-authored-by: decfox <decfox@github.com>
Co-authored-by: Simone Basso <bassosimone@gmail.com>
2022-07-08 19:42:24 +02:00

36 lines
700 B
Go

package dnsping
import (
"sync"
"github.com/ooni/probe-cli/v3/internal/model"
)
// TestKeys contains the experiment results.
type TestKeys struct {
Pings []*SinglePing `json:"pings"`
// mu provides mutual exclusion
mu sync.Mutex
}
// SinglePing contains the results of a single ping.
type SinglePing struct {
Query *model.ArchivalDNSLookupResult `json:"query"`
}
// NewTestKeys creates new dnsping TestKeys
func NewTestKeys() *TestKeys {
return &TestKeys{
Pings: []*SinglePing{},
mu: sync.Mutex{},
}
}
// addSinglePing adds []*SinglePing to the test keys
func (tk *TestKeys) addPings(pings []*SinglePing) {
tk.mu.Lock()
tk.Pings = append(tk.Pings, pings...)
tk.mu.Unlock()
}