nps/core/rule/rule_test.go
2022-01-23 17:30:38 +08:00

46 lines
1.1 KiB
Go

package rule
import (
"ehang.io/nps/core/action"
"ehang.io/nps/core/handler"
"ehang.io/nps/core/limiter"
"ehang.io/nps/core/process"
"ehang.io/nps/core/server"
"github.com/stretchr/testify/assert"
"net"
"testing"
)
func TestRule(t *testing.T) {
ln, err := net.Listen("tcp", "127.0.0.1:0")
assert.NoError(t, err)
r := &Rule{
Server: &server.TcpServer{ServerAddr: "127.0.0.1:0"},
Handler: &handler.DefaultHandler{},
Process: &process.DefaultProcess{},
Action: &action.LocalAction{TargetAddr: []string{ln.Addr().String()}},
Limiters: make([]limiter.Limiter, 0),
}
err = r.Init()
assert.NoError(t, err)
data := []byte("test")
go func() {
conn, err := ln.Accept()
assert.NoError(t, err)
b := make([]byte, 1024)
n, err := conn.Read(b)
assert.NoError(t, err)
assert.Equal(t, data, b[:n])
_, err = conn.Write(b[:n])
assert.NoError(t, err)
}()
conn, err := net.Dial(r.Server.GetName(), r.Server.GetServerAddr())
assert.NoError(t, err)
_, err = conn.Write(data)
assert.NoError(t, err)
b := make([]byte, 1024)
n, err := conn.Read(b)
assert.NoError(t, err)
assert.Equal(t, b[:n], data)
}