mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-28 23:56:43 +00:00
fix: update utp-go version and modify test case
This commit is contained in:
parent
cd5a92e383
commit
b14abef0cb
3 changed files with 146 additions and 135 deletions
2
go.mod
2
go.mod
|
|
@ -53,7 +53,7 @@ require (
|
|||
github.com/mattn/go-sqlite3 v1.14.18
|
||||
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416
|
||||
github.com/olekukonko/tablewriter v0.0.5
|
||||
github.com/optimism-java/utp-go v0.0.0-20231203033001-5a531e1e11a0
|
||||
github.com/optimism-java/utp-go v0.0.0-20231225095152-5a9690d82b58
|
||||
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7
|
||||
github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7
|
||||
github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -494,6 +494,8 @@ github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsq
|
|||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/optimism-java/utp-go v0.0.0-20231203033001-5a531e1e11a0 h1:fSjUuzS7gI3IXz5mo8opUlK+9UktElRy1MH5EweLg2k=
|
||||
github.com/optimism-java/utp-go v0.0.0-20231203033001-5a531e1e11a0/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ=
|
||||
github.com/optimism-java/utp-go v0.0.0-20231225095152-5a9690d82b58 h1:EZfd3NpJV+CL5vORquJ2O6eAUjkpI7+ge9a9n9HMyYE=
|
||||
github.com/optimism-java/utp-go v0.0.0-20231225095152-5a9690d82b58/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM=
|
||||
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
|
||||
|
|
|
|||
|
|
@ -2,7 +2,12 @@ package discover
|
|||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/optimism-java/utp-go"
|
||||
"io"
|
||||
"net"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
|
@ -49,140 +54,144 @@ func setupLocalPortalNode(addr string, bootNodes []*enode.Node) (*PortalProtocol
|
|||
return portalProtocol, nil
|
||||
}
|
||||
|
||||
//func TestPortalWireProtocolUdp(t *testing.T) {
|
||||
// node1, err := setupLocalPortalNode(":8777", nil)
|
||||
// assert.NoError(t, err)
|
||||
// node1.log = testlog.Logger(t, log.LvlTrace)
|
||||
// err = node1.Start()
|
||||
// assert.NoError(t, err)
|
||||
//
|
||||
// node2, err := setupLocalPortalNode(":8778", []*enode.Node{node1.localNode.Node()})
|
||||
// assert.NoError(t, err)
|
||||
// node2.log = testlog.Logger(t, log.LvlTrace)
|
||||
// err = node2.Start()
|
||||
// assert.NoError(t, err)
|
||||
//
|
||||
// node3, err := setupLocalPortalNode(":8779", []*enode.Node{node1.localNode.Node()})
|
||||
// assert.NoError(t, err)
|
||||
// node3.log = testlog.Logger(t, log.LvlTrace)
|
||||
// err = node3.Start()
|
||||
// assert.NoError(t, err)
|
||||
// time.Sleep(20 * time.Second)
|
||||
//
|
||||
// //assert.Equal(t, 2, len(node1.table.Nodes()))
|
||||
// //assert.Equal(t, 2, len(node2.table.Nodes()))
|
||||
// //assert.Equal(t, 2, len(node3.table.Nodes()))
|
||||
//
|
||||
// node1Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8777")
|
||||
// node2Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8778")
|
||||
// node3Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8779")
|
||||
//
|
||||
// cid := uint32(12)
|
||||
// cliSendMsgWithCid := "there are connection id : 12!"
|
||||
// cliSendMsgWithRandomCid := "there are connection id: random!"
|
||||
// //
|
||||
// serverEchoWithCid := "accept connection sends back msg: echo"
|
||||
// //serverEchoWithRandomCid := "ccept connection with random cid sends msg: echo"
|
||||
//
|
||||
// largeTestContent := make([]byte, 1199)
|
||||
// _, err = rand.Read(largeTestContent)
|
||||
// assert.NoError(t, err)
|
||||
//
|
||||
// var wg sync.WaitGroup
|
||||
// wg.Add(4)
|
||||
// go func() {
|
||||
// var acceptConn *utp.Conn
|
||||
// defer func() {
|
||||
// wg.Done()
|
||||
// _ = acceptConn.Close()
|
||||
// }()
|
||||
// acceptConn, err := node3.utp.AcceptUTPWithConnId(cid)
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// buf := make([]byte, 100)
|
||||
// n, err := acceptConn.Read(buf)
|
||||
// if err != nil && err != io.EOF {
|
||||
// panic(err)
|
||||
// }
|
||||
// assert.Equal(t, cliSendMsgWithCid, string(buf[:n]))
|
||||
// _, _ = acceptConn.Write([]byte(serverEchoWithCid))
|
||||
// }()
|
||||
// go func() {
|
||||
// var randomConnIdConn net.Conn
|
||||
// defer func() {
|
||||
// wg.Done()
|
||||
// _ = randomConnIdConn.Close()
|
||||
// }()
|
||||
// randomConnIdConn, err := node1.utp.Accept()
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// buf := make([]byte, 100)
|
||||
// n, err := randomConnIdConn.Read(buf)
|
||||
// if err != nil && err != io.EOF {
|
||||
// panic(err)
|
||||
// }
|
||||
// assert.Equal(t, cliSendMsgWithRandomCid, string(buf[:n]))
|
||||
//
|
||||
// _, _ = randomConnIdConn.Write(largeTestContent)
|
||||
// }()
|
||||
//
|
||||
// go func() {
|
||||
// var connWithConnId net.Conn
|
||||
// defer func() {
|
||||
// wg.Done()
|
||||
// if connWithConnId != nil {
|
||||
// _ = connWithConnId.Close()
|
||||
// }
|
||||
// }()
|
||||
// connWithConnId, err := utp.DialUTPOptions("utp", node2Addr, node3Addr, utp.WithConnId(cid), utp.WithSocketManager(node2.utpSm))
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// _, err = connWithConnId.Write([]byte("there are connection id : 12!"))
|
||||
// if err != nil && err != io.EOF {
|
||||
// panic(err)
|
||||
// }
|
||||
// buf := make([]byte, 100)
|
||||
// n, err := connWithConnId.Read(buf)
|
||||
// if err != nil && err != io.EOF {
|
||||
// panic(err)
|
||||
// }
|
||||
// assert.Equal(t, serverEchoWithCid, string(buf[:n]))
|
||||
// }()
|
||||
// go func() {
|
||||
// var randomConnIdConn net.Conn
|
||||
// defer func() {
|
||||
// wg.Done()
|
||||
// //_ = randomConnIdConn.Close()
|
||||
// }()
|
||||
// randomConnIdConn, err := utp.DialUTPOptions("utp", node2Addr, node1Addr, utp.WithSocketManager(node2.utpSm))
|
||||
// if err != nil && err != io.EOF {
|
||||
// panic(err)
|
||||
// }
|
||||
// _, err = randomConnIdConn.Write([]byte(cliSendMsgWithRandomCid))
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
//
|
||||
// data := make([]byte, 0)
|
||||
// buf := make([]byte, 1024)
|
||||
// for {
|
||||
// var n int
|
||||
// n, err = randomConnIdConn.Read(buf)
|
||||
// if err != nil {
|
||||
// if errors.Is(err, io.EOF) {
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// data = append(data, buf[:n]...)
|
||||
// }
|
||||
// assert.Equal(t, largeTestContent, data)
|
||||
// }()
|
||||
// wg.Wait()
|
||||
// fmt.Println("done")
|
||||
//}
|
||||
func TestPortalWireProtocolUdp(t *testing.T) {
|
||||
node1, err := setupLocalPortalNode(":8777", nil)
|
||||
assert.NoError(t, err)
|
||||
node1.log = testlog.Logger(t, log.LvlTrace)
|
||||
err = node1.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
node2, err := setupLocalPortalNode(":8778", []*enode.Node{node1.localNode.Node()})
|
||||
assert.NoError(t, err)
|
||||
node2.log = testlog.Logger(t, log.LvlTrace)
|
||||
err = node2.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
node3, err := setupLocalPortalNode(":8779", []*enode.Node{node1.localNode.Node()})
|
||||
assert.NoError(t, err)
|
||||
node3.log = testlog.Logger(t, log.LvlTrace)
|
||||
err = node3.Start()
|
||||
assert.NoError(t, err)
|
||||
time.Sleep(10 * time.Second)
|
||||
|
||||
node1Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8777")
|
||||
node2Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8778")
|
||||
|
||||
cid := uint32(12)
|
||||
cliSendMsgWithCid := "there are connection id : 12!"
|
||||
cliSendMsgWithRandomCid := "there are connection id: random!"
|
||||
|
||||
serverEchoWithCid := "accept connection sends back msg: echo"
|
||||
|
||||
largeTestContent := make([]byte, 1199)
|
||||
_, err = rand.Read(largeTestContent)
|
||||
assert.NoError(t, err)
|
||||
|
||||
var workGroup sync.WaitGroup
|
||||
var acceptGroup sync.WaitGroup
|
||||
workGroup.Add(4)
|
||||
acceptGroup.Add(1)
|
||||
go func() {
|
||||
var acceptConn *utp.Conn
|
||||
defer func() {
|
||||
workGroup.Done()
|
||||
_ = acceptConn.Close()
|
||||
}()
|
||||
acceptConn, err := node1.utp.AcceptUTPWithConnId(cid)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
acceptGroup.Done()
|
||||
buf := make([]byte, 100)
|
||||
n, err := acceptConn.Read(buf)
|
||||
if err != nil && err != io.EOF {
|
||||
panic(err)
|
||||
}
|
||||
assert.Equal(t, cliSendMsgWithCid, string(buf[:n]))
|
||||
_, err = acceptConn.Write([]byte(serverEchoWithCid))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
var randomConnIdConn net.Conn
|
||||
defer func() {
|
||||
workGroup.Done()
|
||||
_ = randomConnIdConn.Close()
|
||||
}()
|
||||
randomConnIdConn, err := node1.utp.Accept()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
buf := make([]byte, 100)
|
||||
n, err := randomConnIdConn.Read(buf)
|
||||
if err != nil && err != io.EOF {
|
||||
panic(err)
|
||||
}
|
||||
assert.Equal(t, cliSendMsgWithRandomCid, string(buf[:n]))
|
||||
|
||||
_, err = randomConnIdConn.Write(largeTestContent)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
var connWithConnId net.Conn
|
||||
defer func() {
|
||||
workGroup.Done()
|
||||
if connWithConnId != nil {
|
||||
_ = connWithConnId.Close()
|
||||
}
|
||||
}()
|
||||
connWithConnId, err := utp.DialUTPOptions("utp", node2Addr, node1Addr, utp.WithConnId(cid), utp.WithSocketManager(node2.utpSm))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
_, err = connWithConnId.Write([]byte("there are connection id : 12!"))
|
||||
if err != nil && err != io.EOF {
|
||||
panic(err)
|
||||
}
|
||||
buf := make([]byte, 100)
|
||||
n, err := connWithConnId.Read(buf)
|
||||
if err != nil && err != io.EOF {
|
||||
panic(err)
|
||||
}
|
||||
assert.Equal(t, serverEchoWithCid, string(buf[:n]))
|
||||
}()
|
||||
go func() {
|
||||
var randomConnIdConn net.Conn
|
||||
defer func() {
|
||||
workGroup.Done()
|
||||
if randomConnIdConn != nil {
|
||||
_ = randomConnIdConn.Close()
|
||||
}
|
||||
}()
|
||||
randomConnIdConn, err := utp.DialUTPOptions("utp", node2Addr, node1Addr, utp.WithSocketManager(node2.utpSm))
|
||||
if err != nil && err != io.EOF {
|
||||
panic(err)
|
||||
}
|
||||
_, err = randomConnIdConn.Write([]byte(cliSendMsgWithRandomCid))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
data := make([]byte, 0)
|
||||
buf := make([]byte, 1024)
|
||||
for {
|
||||
var n int
|
||||
n, err = randomConnIdConn.Read(buf)
|
||||
if err != nil {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
}
|
||||
data = append(data, buf[:n]...)
|
||||
}
|
||||
assert.Equal(t, largeTestContent, data)
|
||||
}()
|
||||
workGroup.Wait()
|
||||
}
|
||||
|
||||
func TestPortalWireProtocol(t *testing.T) {
|
||||
node1, err := setupLocalPortalNode(":7777", nil)
|
||||
|
|
|
|||
Loading…
Reference in a new issue