Blob


1 package dns
3 import (
4 "crypto/rand"
5 "io"
6 "net"
7 "testing"
8 "time"
9 )
11 func TestServer(t *testing.T) {
12 go func() {
13 t.Fatal(ListenAndServe("udp", "127.0.0.1:51111", nil))
14 }()
15 time.Sleep(time.Millisecond)
16 rmsg, err := Ask(testq, "127.0.0.1:51111")
17 if err != nil {
18 t.Errorf("exchange: %v", err)
19 }
20 t.Log("response:", rmsg)
21 }
23 func TestStreamServer(t *testing.T) {
24 go func() {
25 t.Fatal(ListenAndServe("tcp", "127.0.0.1:51112", nil))
26 }()
27 time.Sleep(time.Millisecond)
28 rmsg, err := AskTCP(testq, "127.0.0.1:51112")
29 if err != nil {
30 t.Errorf("exchange: %v", err)
31 }
32 t.Log("response:", rmsg)
33 }
35 func TestJunk(t *testing.T) {
36 addr := "127.0.0.1:5361"
37 go func() {
38 t.Fatal(ListenAndServe("tcp", addr, nil))
39 }()
40 time.Sleep(time.Millisecond)
41 for i := 0; i <= 30; i++ {
42 conn, err := net.Dial("tcp", addr)
43 if err != nil {
44 t.Fatal(err)
45 }
46 defer conn.Close()
47 if _, err := io.CopyN(conn, rand.Reader, 8192); err != nil {
48 t.Fatal(err)
49 }
50 }
51 }
53 func BenchmarkPacketVsStream(b *testing.B) {
54 addr := "127.0.0.1:51113"
55 var networks = []string{"udp", "tcp"}
56 for _, net := range networks {
57 go func() {
58 b.Fatal(ListenAndServe(net, addr, nil))
59 }()
60 b.Run(net, func(b *testing.B) {
61 for i := 0; i <= b.N; i++ {
62 if net == "udp" {
63 if rmsg, err := Ask(testq, addr); err != nil {
64 b.Log(rmsg)
65 b.Fatal(err)
66 }
67 } else {
68 if rmsg, err := AskTCP(testq, addr); err != nil {
69 b.Log(rmsg)
70 b.Fatal(err)
71 }
72 }
73 }
74 })
75 }
76 }