server_test.go (1488B)
1 package dns 2 3 import ( 4 "crypto/rand" 5 "io" 6 "net" 7 "testing" 8 "time" 9 ) 10 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 } 22 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 } 34 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 } 52 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 }