123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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)
- }
|