mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-02 04:00:42 +00:00
46 lines
1.1 KiB
Go
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)
|
|
}
|