mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-25 02:31:46 +00:00
test peer
This commit is contained in:
@ -3,7 +3,6 @@ package p2p
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
golog "log"
|
||||
"net"
|
||||
"sync"
|
||||
"testing"
|
||||
@ -12,7 +11,6 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
. "github.com/tendermint/go-common"
|
||||
cmn "github.com/tendermint/go-common"
|
||||
cfg "github.com/tendermint/go-config"
|
||||
crypto "github.com/tendermint/go-crypto"
|
||||
wire "github.com/tendermint/go-wire"
|
||||
@ -239,14 +237,12 @@ func TestSwitchStopsNonPersistentPeerOnError(t *testing.T) {
|
||||
sw.Start()
|
||||
defer sw.Stop()
|
||||
|
||||
sw2 := makeSwitch(2, "testing", "123.123.123", initSwitchFunc)
|
||||
defer sw2.Stop()
|
||||
l, serverAddr := listenTCP()
|
||||
done := make(chan struct{})
|
||||
go accept(l, done, sw2)
|
||||
defer close(done)
|
||||
// simulate remote peer
|
||||
rp := &remotePeer{PrivKey: crypto.GenPrivKeyEd25519()}
|
||||
rp.Start()
|
||||
defer rp.Stop()
|
||||
|
||||
peer, err := newPeer(NewNetAddress(serverAddr), sw.reactorsByCh, sw.chDescs, sw.StopPeerForError, sw.config, sw.nodePrivKey)
|
||||
peer, err := newPeer(rp.RemoteAddr(), sw.reactorsByCh, sw.chDescs, sw.StopPeerForError, sw.nodePrivKey)
|
||||
require.Nil(err)
|
||||
err = sw.AddPeer(peer)
|
||||
require.Nil(err)
|
||||
@ -267,14 +263,12 @@ func TestSwitchReconnectsToPersistentPeer(t *testing.T) {
|
||||
sw.Start()
|
||||
defer sw.Stop()
|
||||
|
||||
sw2 := makeSwitch(2, "testing", "123.123.123", initSwitchFunc)
|
||||
defer sw2.Stop()
|
||||
l, serverAddr := listenTCP()
|
||||
done := make(chan struct{})
|
||||
go accept(l, done, sw2)
|
||||
defer close(done)
|
||||
// simulate remote peer
|
||||
rp := &remotePeer{PrivKey: crypto.GenPrivKeyEd25519()}
|
||||
rp.Start()
|
||||
defer rp.Stop()
|
||||
|
||||
peer, err := newPeer(NewNetAddress(serverAddr), sw.reactorsByCh, sw.chDescs, sw.StopPeerForError, sw.config, sw.nodePrivKey)
|
||||
peer, err := newPeer(rp.RemoteAddr(), sw.reactorsByCh, sw.chDescs, sw.StopPeerForError, sw.nodePrivKey)
|
||||
peer.makePersistent()
|
||||
require.Nil(err)
|
||||
err = sw.AddPeer(peer)
|
||||
@ -334,48 +328,3 @@ func BenchmarkSwitches(b *testing.B) {
|
||||
time.Sleep(1000 * time.Millisecond)
|
||||
|
||||
}
|
||||
|
||||
func listenTCP() (net.Listener, net.Addr) {
|
||||
l, e := net.Listen("tcp", "127.0.0.1:0") // any available address
|
||||
if e != nil {
|
||||
golog.Fatalf("net.Listen tcp :0: %+v", e)
|
||||
}
|
||||
return l, l.Addr()
|
||||
}
|
||||
|
||||
// simulate remote peer
|
||||
func accept(l net.Listener, done <-chan struct{}, sw *Switch) {
|
||||
for {
|
||||
conn, err := l.Accept()
|
||||
if err != nil {
|
||||
golog.Fatalf("Failed to accept conn: %+v", err)
|
||||
}
|
||||
conn, err = MakeSecretConnection(conn, sw.nodePrivKey)
|
||||
if err != nil {
|
||||
golog.Fatalf("Failed to make secret conn: %+v", err)
|
||||
}
|
||||
var err1, err2 error
|
||||
nodeInfo := new(NodeInfo)
|
||||
cmn.Parallel(
|
||||
func() {
|
||||
var n int
|
||||
wire.WriteBinary(sw.nodeInfo, conn, &n, &err1)
|
||||
},
|
||||
func() {
|
||||
var n int
|
||||
wire.ReadBinary(nodeInfo, conn, maxNodeInfoSize, &n, &err2)
|
||||
})
|
||||
if err1 != nil {
|
||||
golog.Fatalf("Failed to do handshake: %+v", err1)
|
||||
}
|
||||
if err2 != nil {
|
||||
golog.Fatalf("Failed to do handshake: %+v", err2)
|
||||
}
|
||||
select {
|
||||
case <-done:
|
||||
conn.Close()
|
||||
return
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user