aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/server_test.go
diff options
context:
space:
mode:
authorLewis Marshall <lewis@lmars.net>2017-12-01 19:49:04 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-12-01 19:49:04 +0800
commit54aeb8e4c0bb9f0e7a6c67258af67df3b266af3d (patch)
tree07bd996822874272ef163bedb56a2ade537cf658 /p2p/server_test.go
parent73067fd24f39cb7d2cdf63a99f6fdac661f7a8bf (diff)
downloaddexon-54aeb8e4c0bb9f0e7a6c67258af67df3b266af3d.tar.gz
dexon-54aeb8e4c0bb9f0e7a6c67258af67df3b266af3d.tar.zst
dexon-54aeb8e4c0bb9f0e7a6c67258af67df3b266af3d.zip
p2p/simulations: various stability fixes (#15198)
p2p/simulations: introduce dialBan - Refactor simulations/network connection getters to support avoiding simultaneous dials between two peers If two peers dial simultaneously, the connection will be dropped to help avoid that, we essentially lock the connection object with a timestamp which serves as a ban on dialing for a period of time (dialBanTimeout). - The connection getter InitConn can be wrapped and passed to the nodes via adapters.NodeConfig#Reachable field and then used by the respective services when they initiate connections. This massively stablise the emerging connectivity when running with hundreds of nodes bootstrapping a network. p2p: add Inbound public method to p2p.Peer p2p/simulations: Add server id to logs to support debugging in-memory network simulations when multiple peers are logging. p2p: SetupConn now returns error. The dialer checks the error and only calls resolve if the actual TCP dial fails.
Diffstat (limited to 'p2p/server_test.go')
-rw-r--r--p2p/server_test.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/p2p/server_test.go b/p2p/server_test.go
index 11dd83e5d..10c36528e 100644
--- a/p2p/server_test.go
+++ b/p2p/server_test.go
@@ -27,6 +27,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/sha3"
+ "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/p2p/discover"
)
@@ -206,6 +207,7 @@ func TestServerTaskScheduling(t *testing.T) {
quit: make(chan struct{}),
ntab: fakeTable{},
running: true,
+ log: log.New(),
}
srv.loopWG.Add(1)
go func() {
@@ -246,7 +248,12 @@ func TestServerManyTasks(t *testing.T) {
}
var (
- srv = &Server{quit: make(chan struct{}), ntab: fakeTable{}, running: true}
+ srv = &Server{
+ quit: make(chan struct{}),
+ ntab: fakeTable{},
+ running: true,
+ log: log.New(),
+ }
done = make(chan *testTask)
start, end = 0, 0
)
@@ -428,6 +435,7 @@ func TestServerSetupConn(t *testing.T) {
Protocols: []Protocol{discard},
},
newTransport: func(fd net.Conn) transport { return test.tt },
+ log: log.New(),
}
if !test.dontstart {
if err := srv.Start(); err != nil {