feat(wip): test reworks for app

This commit is contained in:
Toby
2023-07-27 13:13:07 -07:00
parent ddc7fa8456
commit fb7e6ed915
10 changed files with 177 additions and 251 deletions

View File

@@ -1,49 +1,39 @@
package forwarding
import (
"bytes"
"crypto/rand"
"net"
"testing"
"github.com/stretchr/testify/assert"
"github.com/apernet/hysteria/app/internal/utils_test"
)
func TestUDPTunnel(t *testing.T) {
// Start the tunnel
l, err := net.ListenPacket("udp", "127.0.0.1:34567")
assert.NoError(t, err)
defer l.Close()
tunnel := &UDPTunnel{
HyClient: &utils_test.MockEchoHyClient{},
Remote: "whatever",
}
l, err := net.ListenPacket("udp", "127.0.0.1:34567")
if err != nil {
t.Fatal(err)
}
defer l.Close()
go tunnel.Serve(l)
for i := 0; i < 10; i++ {
conn, err := net.Dial("udp", "127.0.0.1:34567")
if err != nil {
t.Fatal(err)
}
assert.NoError(t, err)
data := make([]byte, 1024)
_, _ = rand.Read(data)
_, err = conn.Write(data)
if err != nil {
t.Fatal(err)
}
assert.NoError(t, err)
recv := make([]byte, 1024)
_, err = conn.Read(recv)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(data, recv) {
t.Fatalf("connection %d: data mismatch", i)
}
assert.NoError(t, err)
assert.Equal(t, data, recv)
_ = conn.Close()
}
}