MCPcopy
hub / github.com/tsenart/vegeta / TestResolver

Function TestResolver

internal/resolver/resolver_test.go:23–112  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

21)
22
23func TestResolver(t *testing.T) {
24 dns.HandleFunc(".", func(w dns.ResponseWriter, r *dns.Msg) {
25 m := &dns.Msg{}
26 m.SetReply(r)
27 localIP := net.ParseIP("127.0.0.1")
28 defer func() {
29 err := w.WriteMsg(m)
30 if err != nil {
31 t.Logf("got error writing dns message: %s", err)
32 }
33 }()
34 if len(r.Question) == 0 {
35 m.RecursionAvailable = true
36 m.SetRcode(r, dns.RcodeRefused)
37 return
38 }
39
40 q := r.Question[0]
41
42 if q.Name == fakeDomain+"." {
43 m.Answer = []dns.RR{&dns.A{
44 Hdr: dns.RR_Header{
45 Name: q.Name,
46 Rrtype: dns.TypeA,
47 Class: dns.ClassINET,
48 Ttl: 1,
49 },
50 A: localIP,
51 }}
52 } else {
53 m.SetRcode(r, dns.RcodeNameError)
54 }
55 })
56 const payload = "there is no cloud, just someone else's computer"
57
58 done := make(chan struct{})
59
60 ds := dns.Server{
61 Addr: "127.0.0.1:0",
62 Net: "udp",
63 UDPSize: dns.MinMsgSize,
64 ReadTimeout: 2 * time.Second,
65 WriteTimeout: 2 * time.Second,
66 NotifyStartedFunc: func() { close(done) },
67 }
68
69 go func() {
70 err := ds.ListenAndServe()
71 if err != nil {
72 t.Logf("got error during dns ListenAndServe: %s", err)
73 }
74 }()
75
76 defer func() {
77 _ = ds.Shutdown()
78 }()
79
80 // wait for notify function to be called, ensuring ds.PacketConn is not nil.

Callers

nothing calls this directly

Calls 4

NewResolverFunction · 0.85
CloseMethod · 0.65
GetMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected