dns

DNS client and server implementations using the Go project's dnsmessage package
Log | Files | Refs | README | LICENSE

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 }