github.com/hdt3213/godis@v1.2.9/redis/server/server_test.go (about) 1 package server 2 3 import ( 4 "bufio" 5 "github.com/hdt3213/godis/tcp" 6 "net" 7 "testing" 8 "time" 9 ) 10 11 func TestListenAndServe(t *testing.T) { 12 var err error 13 closeChan := make(chan struct{}) 14 listener, err := net.Listen("tcp", ":0") 15 if err != nil { 16 t.Error(err) 17 return 18 } 19 addr := listener.Addr().String() 20 go tcp.ListenAndServe(listener, MakeHandler(), closeChan) 21 22 conn, err := net.Dial("tcp", addr) 23 if err != nil { 24 t.Error(err) 25 return 26 } 27 _, err = conn.Write([]byte("PING\r\n")) 28 if err != nil { 29 t.Error(err) 30 return 31 } 32 bufReader := bufio.NewReader(conn) 33 line, _, err := bufReader.ReadLine() 34 if err != nil { 35 t.Error(err) 36 return 37 } 38 if string(line) != "+PONG" { 39 t.Error("get wrong response") 40 return 41 } 42 closeChan <- struct{}{} 43 time.Sleep(time.Second) 44 }