health: add more ci cases and fix bugs

This commit is contained in:
fatedier
2018-12-09 21:56:46 +08:00
parent 08c17c3247
commit aea9f9fbcc
14 changed files with 409 additions and 66 deletions

View File

@ -10,40 +10,48 @@ import (
frpNet "github.com/fatedier/frp/utils/net"
)
func StartTcpEchoServer(port int) {
l, err := frpNet.ListenTcp("127.0.0.1", port)
if err != nil {
fmt.Printf("echo server listen error: %v\n", err)
return
type EchoServer struct {
l frpNet.Listener
port int
repeatedNum int
specifyStr string
}
func NewEchoServer(port int, repeatedNum int, specifyStr string) *EchoServer {
if repeatedNum <= 0 {
repeatedNum = 1
}
for {
c, err := l.Accept()
if err != nil {
fmt.Printf("echo server accept error: %v\n", err)
return
}
go echoWorker(c)
return &EchoServer{
port: port,
repeatedNum: repeatedNum,
specifyStr: specifyStr,
}
}
func StartTcpEchoServer2(port int) {
l, err := frpNet.ListenTcp("127.0.0.1", port)
func (es *EchoServer) Start() error {
l, err := frpNet.ListenTcp("127.0.0.1", es.port)
if err != nil {
fmt.Printf("echo server2 listen error: %v\n", err)
return
fmt.Printf("echo server listen error: %v\n", err)
return err
}
es.l = l
for {
c, err := l.Accept()
if err != nil {
fmt.Printf("echo server2 accept error: %v\n", err)
return
go func() {
for {
c, err := l.Accept()
if err != nil {
return
}
go echoWorker(c, es.repeatedNum, es.specifyStr)
}
}()
return nil
}
go echoWorker2(c)
}
func (es *EchoServer) Stop() {
es.l.Close()
}
func StartUdpEchoServer(port int) {
@ -60,7 +68,7 @@ func StartUdpEchoServer(port int) {
return
}
go echoWorker(c)
go echoWorker(c, 1, "")
}
}
@ -80,11 +88,11 @@ func StartUnixDomainServer(unixPath string) {
return
}
go echoWorker(c)
go echoWorker(c, 1, "")
}
}
func echoWorker(c net.Conn) {
func echoWorker(c net.Conn, repeatedNum int, specifyStr string) {
buf := make([]byte, 2048)
for {
@ -99,28 +107,14 @@ func echoWorker(c net.Conn) {
}
}
c.Write(buf[:n])
}
}
func echoWorker2(c net.Conn) {
buf := make([]byte, 2048)
for {
n, err := c.Read(buf)
if err != nil {
if err == io.EOF {
c.Close()
break
} else {
fmt.Printf("echo server read error: %v\n", err)
return
if specifyStr != "" {
c.Write([]byte(specifyStr))
} else {
var w []byte
for i := 0; i < repeatedNum; i++ {
w = append(w, buf[:n]...)
}
c.Write(w)
}
var w []byte
w = append(w, buf[:n]...)
w = append(w, buf[:n]...)
c.Write(w)
}
}