mirror of
https://github.com/fatedier/frp.git
synced 2026-08-24 09:18:51 +00:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package udp
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/fatedier/frp/pkg/msg"
|
|
)
|
|
|
|
func TestUdpPacket(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
buf := []byte("hello world")
|
|
udpMsg := NewUDPPacket(buf, nil, nil)
|
|
|
|
newBuf, err := GetContent(udpMsg)
|
|
require.NoError(err)
|
|
require.EqualValues(buf, newBuf)
|
|
}
|
|
|
|
func TestForwardUserConnReturnsWhenSendChannelIsClosed(t *testing.T) {
|
|
listener, err := net.ListenUDP("udp4", &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)})
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() { _ = listener.Close() })
|
|
|
|
readCh := make(chan *msg.UDPPacket)
|
|
sendCh := make(chan *msg.UDPPacket)
|
|
close(sendCh)
|
|
t.Cleanup(func() { close(readCh) })
|
|
|
|
done := make(chan struct{})
|
|
go func() {
|
|
ForwardUserConn(listener, readCh, sendCh, 1500)
|
|
close(done)
|
|
}()
|
|
|
|
sender, err := net.DialUDP("udp4", nil, listener.LocalAddr().(*net.UDPAddr))
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() { _ = sender.Close() })
|
|
|
|
_, err = sender.Write([]byte("trigger"))
|
|
require.NoError(t, err)
|
|
|
|
select {
|
|
case <-done:
|
|
case <-time.After(time.Second):
|
|
t.Fatal("ForwardUserConn did not return after sending to a closed channel")
|
|
}
|
|
}
|