Improved rcon testing

This commit is contained in:
Tnze
2020-07-14 12:59:11 +08:00
parent 6d526bc7e7
commit e8f6c6fa9b

View File

@ -6,46 +6,45 @@ import (
)
func Test(t *testing.T) {
p := make(chan int, 1)
go server(t, p)
<-p
c := make(chan int, 1)
go server(t, c)
<-c
client(t)
<-c
}
func server(t *testing.T, prepare chan<- int) {
func server(t *testing.T, c chan<- int) {
l, err := ListenRCON("localhost:25575")
if err != nil {
t.Fatal(err)
}
defer l.Close()
prepare <- 1
c <- 1 // prepared
for {
conn, err := l.Accept()
if err != nil {
t.Fatal(err)
}
go func(conn RCONServerConn) {
err := conn.AcceptLogin("RightPassword")
if err != nil {
t.Fatal("password wrong")
}
for {
cmd, err := conn.AcceptCmd()
if err != nil {
t.Log(err)
return
}
resp := handleCommand(cmd)
err = conn.RespCmd(resp)
if err != nil {
t.Fatal(err)
}
}
}(conn)
conn, err := l.Accept()
if err != nil {
t.Fatal(err)
}
err = conn.AcceptLogin("RightPassword")
if err != nil {
t.Fatal("password wrong")
}
cmd, err := conn.AcceptCmd()
if err != nil {
t.Log(err)
return
}
resp := handleCommand(cmd)
err = conn.RespCmd(resp)
if err != nil {
t.Fatal(err)
}
c <- 2 // finished
}
func handleCommand(cmd string) (resp string) {