fix: update utp-go version and modify test case

This commit is contained in:
thinkAfCod 2023-12-25 18:02:35 +08:00
parent cd5a92e383
commit b14abef0cb
3 changed files with 146 additions and 135 deletions

2
go.mod
View file

@ -53,7 +53,7 @@ require (
github.com/mattn/go-sqlite3 v1.14.18 github.com/mattn/go-sqlite3 v1.14.18
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416
github.com/olekukonko/tablewriter v0.0.5 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/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7
github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7 github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7
github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7

2
go.sum
View file

@ -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/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 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-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/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 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM=
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=

View file

@ -2,7 +2,12 @@ package discover
import ( import (
"crypto/rand" "crypto/rand"
"errors"
"fmt" "fmt"
"github.com/optimism-java/utp-go"
"io"
"net"
"sync"
"testing" "testing"
"time" "time"
@ -49,140 +54,144 @@ func setupLocalPortalNode(addr string, bootNodes []*enode.Node) (*PortalProtocol
return portalProtocol, nil return portalProtocol, nil
} }
//func TestPortalWireProtocolUdp(t *testing.T) { func TestPortalWireProtocolUdp(t *testing.T) {
// node1, err := setupLocalPortalNode(":8777", nil) node1, err := setupLocalPortalNode(":8777", nil)
// assert.NoError(t, err) assert.NoError(t, err)
// node1.log = testlog.Logger(t, log.LvlTrace) node1.log = testlog.Logger(t, log.LvlTrace)
// err = node1.Start() err = node1.Start()
// assert.NoError(t, err) assert.NoError(t, err)
//
// node2, err := setupLocalPortalNode(":8778", []*enode.Node{node1.localNode.Node()}) node2, err := setupLocalPortalNode(":8778", []*enode.Node{node1.localNode.Node()})
// assert.NoError(t, err) assert.NoError(t, err)
// node2.log = testlog.Logger(t, log.LvlTrace) node2.log = testlog.Logger(t, log.LvlTrace)
// err = node2.Start() err = node2.Start()
// assert.NoError(t, err) assert.NoError(t, err)
//
// node3, err := setupLocalPortalNode(":8779", []*enode.Node{node1.localNode.Node()}) node3, err := setupLocalPortalNode(":8779", []*enode.Node{node1.localNode.Node()})
// assert.NoError(t, err) assert.NoError(t, err)
// node3.log = testlog.Logger(t, log.LvlTrace) node3.log = testlog.Logger(t, log.LvlTrace)
// err = node3.Start() err = node3.Start()
// assert.NoError(t, err) assert.NoError(t, err)
// time.Sleep(20 * time.Second) time.Sleep(10 * time.Second)
//
// //assert.Equal(t, 2, len(node1.table.Nodes())) node1Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8777")
// //assert.Equal(t, 2, len(node2.table.Nodes())) node2Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8778")
// //assert.Equal(t, 2, len(node3.table.Nodes()))
// cid := uint32(12)
// node1Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8777") cliSendMsgWithCid := "there are connection id : 12!"
// node2Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8778") cliSendMsgWithRandomCid := "there are connection id: random!"
// node3Addr, _ := utp.ResolveUTPAddr("utp", "127.0.0.1:8779")
// serverEchoWithCid := "accept connection sends back msg: echo"
// cid := uint32(12)
// cliSendMsgWithCid := "there are connection id : 12!" largeTestContent := make([]byte, 1199)
// cliSendMsgWithRandomCid := "there are connection id: random!" _, err = rand.Read(largeTestContent)
// // assert.NoError(t, err)
// serverEchoWithCid := "accept connection sends back msg: echo"
// //serverEchoWithRandomCid := "ccept connection with random cid sends msg: echo" var workGroup sync.WaitGroup
// var acceptGroup sync.WaitGroup
// largeTestContent := make([]byte, 1199) workGroup.Add(4)
// _, err = rand.Read(largeTestContent) acceptGroup.Add(1)
// assert.NoError(t, err) go func() {
// var acceptConn *utp.Conn
// var wg sync.WaitGroup defer func() {
// wg.Add(4) workGroup.Done()
// go func() { _ = acceptConn.Close()
// var acceptConn *utp.Conn }()
// defer func() { acceptConn, err := node1.utp.AcceptUTPWithConnId(cid)
// wg.Done() if err != nil {
// _ = acceptConn.Close() panic(err)
// }() }
// acceptConn, err := node3.utp.AcceptUTPWithConnId(cid) acceptGroup.Done()
// if err != nil { buf := make([]byte, 100)
// panic(err) n, err := acceptConn.Read(buf)
// } if err != nil && err != io.EOF {
// buf := make([]byte, 100) panic(err)
// n, err := acceptConn.Read(buf) }
// if err != nil && err != io.EOF { assert.Equal(t, cliSendMsgWithCid, string(buf[:n]))
// panic(err) _, err = acceptConn.Write([]byte(serverEchoWithCid))
// } if err != nil {
// assert.Equal(t, cliSendMsgWithCid, string(buf[:n])) panic(err)
// _, _ = acceptConn.Write([]byte(serverEchoWithCid)) }
// }() }()
// go func() { go func() {
// var randomConnIdConn net.Conn var randomConnIdConn net.Conn
// defer func() { defer func() {
// wg.Done() workGroup.Done()
// _ = randomConnIdConn.Close() _ = randomConnIdConn.Close()
// }() }()
// randomConnIdConn, err := node1.utp.Accept() randomConnIdConn, err := node1.utp.Accept()
// if err != nil { if err != nil {
// panic(err) panic(err)
// } }
// buf := make([]byte, 100) buf := make([]byte, 100)
// n, err := randomConnIdConn.Read(buf) n, err := randomConnIdConn.Read(buf)
// if err != nil && err != io.EOF { if err != nil && err != io.EOF {
// panic(err) panic(err)
// } }
// assert.Equal(t, cliSendMsgWithRandomCid, string(buf[:n])) assert.Equal(t, cliSendMsgWithRandomCid, string(buf[:n]))
//
// _, _ = randomConnIdConn.Write(largeTestContent) _, err = randomConnIdConn.Write(largeTestContent)
// }() if err != nil {
// panic(err)
// go func() { }
// var connWithConnId net.Conn }()
// defer func() {
// wg.Done() go func() {
// if connWithConnId != nil { var connWithConnId net.Conn
// _ = connWithConnId.Close() defer func() {
// } workGroup.Done()
// }() if connWithConnId != nil {
// connWithConnId, err := utp.DialUTPOptions("utp", node2Addr, node3Addr, utp.WithConnId(cid), utp.WithSocketManager(node2.utpSm)) _ = connWithConnId.Close()
// if err != nil { }
// panic(err) }()
// } connWithConnId, err := utp.DialUTPOptions("utp", node2Addr, node1Addr, utp.WithConnId(cid), utp.WithSocketManager(node2.utpSm))
// _, err = connWithConnId.Write([]byte("there are connection id : 12!")) if err != nil {
// if err != nil && err != io.EOF { panic(err)
// panic(err) }
// } _, err = connWithConnId.Write([]byte("there are connection id : 12!"))
// buf := make([]byte, 100) if err != nil && err != io.EOF {
// n, err := connWithConnId.Read(buf) panic(err)
// if err != nil && err != io.EOF { }
// panic(err) buf := make([]byte, 100)
// } n, err := connWithConnId.Read(buf)
// assert.Equal(t, serverEchoWithCid, string(buf[:n])) if err != nil && err != io.EOF {
// }() panic(err)
// go func() { }
// var randomConnIdConn net.Conn assert.Equal(t, serverEchoWithCid, string(buf[:n]))
// defer func() { }()
// wg.Done() go func() {
// //_ = randomConnIdConn.Close() var randomConnIdConn net.Conn
// }() defer func() {
// randomConnIdConn, err := utp.DialUTPOptions("utp", node2Addr, node1Addr, utp.WithSocketManager(node2.utpSm)) workGroup.Done()
// if err != nil && err != io.EOF { if randomConnIdConn != nil {
// panic(err) _ = randomConnIdConn.Close()
// } }
// _, err = randomConnIdConn.Write([]byte(cliSendMsgWithRandomCid)) }()
// if err != nil { randomConnIdConn, err := utp.DialUTPOptions("utp", node2Addr, node1Addr, utp.WithSocketManager(node2.utpSm))
// panic(err) if err != nil && err != io.EOF {
// } panic(err)
// }
// data := make([]byte, 0) _, err = randomConnIdConn.Write([]byte(cliSendMsgWithRandomCid))
// buf := make([]byte, 1024) if err != nil {
// for { panic(err)
// var n int }
// n, err = randomConnIdConn.Read(buf)
// if err != nil { data := make([]byte, 0)
// if errors.Is(err, io.EOF) { buf := make([]byte, 1024)
// break for {
// } var n int
// } n, err = randomConnIdConn.Read(buf)
// data = append(data, buf[:n]...) if err != nil {
// } if errors.Is(err, io.EOF) {
// assert.Equal(t, largeTestContent, data) break
// }() }
// wg.Wait() }
// fmt.Println("done") data = append(data, buf[:n]...)
//} }
assert.Equal(t, largeTestContent, data)
}()
workGroup.Wait()
}
func TestPortalWireProtocol(t *testing.T) { func TestPortalWireProtocol(t *testing.T) {
node1, err := setupLocalPortalNode(":7777", nil) node1, err := setupLocalPortalNode(":7777", nil)