Files
routedns/request-dedup_test.go
Frank Olbricht b75ffc78cb New request-dedup group (#181)
* New request-dedup group

* Add logging

* Update docs and add example
2021-08-28 15:18:18 -06:00

40 lines
746 B
Go

package rdns
import (
"sync"
"testing"
"time"
"github.com/miekg/dns"
"github.com/stretchr/testify/require"
)
func TestRequestDedup(t *testing.T) {
var ci ClientInfo
r := &TestResolver{
ResolveFunc: func(*dns.Msg, ClientInfo) (*dns.Msg, error) {
time.Sleep(time.Second) // need to slow down to guarantee duplicates
return nil, nil
},
}
g := NewRequestDedup("test-dedup", r)
q := new(dns.Msg)
q.SetQuestion("example.com.", dns.TypeA)
// Send a batch of queries
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func() {
defer wg.Done()
_, err := g.Resolve(q, ci)
require.NoError(t, err)
}()
}
wg.Wait()
// Only one request should have hit the resolver
require.Equal(t, 1, r.HitCount())
}