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  }