mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
wait for a second event when adding a priority node
This commit is contained in:
parent
0bfcc072bd
commit
698c934558
1 changed files with 19 additions and 11 deletions
|
|
@ -28,7 +28,7 @@ func (g *gethrpc) callRPC(result interface{}, method string, args ...interface{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *gethrpc) addPeer(enode string) {
|
func (g *gethrpc) addPeer(enode string, eventsToWait int) {
|
||||||
g.geth.Logf("adding peer to %v: %v", g.name, enode)
|
g.geth.Logf("adding peer to %v: %v", g.name, enode)
|
||||||
peerCh := make(chan *p2p.PeerEvent)
|
peerCh := make(chan *p2p.PeerEvent)
|
||||||
sub, err := g.rpc.Subscribe(context.Background(), "admin", peerCh, "peerEvents")
|
sub, err := g.rpc.Subscribe(context.Background(), "admin", peerCh, "peerEvents")
|
||||||
|
|
@ -37,11 +37,18 @@ func (g *gethrpc) addPeer(enode string) {
|
||||||
}
|
}
|
||||||
defer sub.Unsubscribe()
|
defer sub.Unsubscribe()
|
||||||
g.callRPC(nil, "admin_addPeer", enode)
|
g.callRPC(nil, "admin_addPeer", enode)
|
||||||
select {
|
timeout := time.After(14 * time.Second)
|
||||||
case ev := <-peerCh:
|
for i := 0; i < eventsToWait; i++ {
|
||||||
g.geth.Logf("%v received event: type=%v, peer=%v", g.name, ev.Type, ev.Peer)
|
select {
|
||||||
case err := <-sub.Err():
|
case ev := <-peerCh:
|
||||||
g.geth.Fatalf("%v sub error: %v", g.name, err)
|
g.geth.Logf("%v received event: type=%v, peer=%v", g.name, ev.Type, ev.Peer)
|
||||||
|
case err := <-sub.Err():
|
||||||
|
g.geth.Fatalf("%v sub error: %v", g.name, err)
|
||||||
|
return
|
||||||
|
case <-timeout:
|
||||||
|
g.geth.Error("timeout adding peer")
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,13 +140,13 @@ func TestPriorityClient(t *testing.T) {
|
||||||
nodeInfo := make(map[string]interface{})
|
nodeInfo := make(map[string]interface{})
|
||||||
server.callRPC(&nodeInfo, "admin_nodeInfo")
|
server.callRPC(&nodeInfo, "admin_nodeInfo")
|
||||||
serverEnode := nodeInfo["enode"].(string)
|
serverEnode := nodeInfo["enode"].(string)
|
||||||
miner.addPeer(serverEnode)
|
miner.addPeer(serverEnode, 1)
|
||||||
server.waitSynced()
|
server.waitSynced()
|
||||||
|
|
||||||
// Start client and add server as peer
|
// Start client and add server as peer
|
||||||
client := startClient(t, "client")
|
client := startClient(t, "client")
|
||||||
defer client.killAndWait()
|
defer client.killAndWait()
|
||||||
client.addPeer(serverEnode)
|
client.addPeer(serverEnode, 1)
|
||||||
var peers []interface{}
|
var peers []interface{}
|
||||||
client.callRPC(&peers, "admin_peers")
|
client.callRPC(&peers, "admin_peers")
|
||||||
if len(peers) != 1 {
|
if len(peers) != 1 {
|
||||||
|
|
@ -156,7 +163,8 @@ func TestPriorityClient(t *testing.T) {
|
||||||
// 3_000_000_000 once we move to Go 1.13
|
// 3_000_000_000 once we move to Go 1.13
|
||||||
tokens := 3000000000
|
tokens := 3000000000
|
||||||
server.callRPC(nil, "les_addBalance", prioNodeID, tokens, "foobar")
|
server.callRPC(nil, "les_addBalance", prioNodeID, tokens, "foobar")
|
||||||
prio.addPeer(serverEnode)
|
// We expect two events, adding prio and removing the old client
|
||||||
|
prio.addPeer(serverEnode, 2)
|
||||||
|
|
||||||
// Check if priority client is actually syncing and the regular client got kicked out
|
// Check if priority client is actually syncing and the regular client got kicked out
|
||||||
prio.callRPC(&peers, "admin_peers")
|
prio.callRPC(&peers, "admin_peers")
|
||||||
|
|
@ -167,7 +175,7 @@ func TestPriorityClient(t *testing.T) {
|
||||||
t.Logf("server peers(%v): %v, prioNodeID: %v", len(peers), peers[0], prioNodeID)
|
t.Logf("server peers(%v): %v, prioNodeID: %v", len(peers), peers[0], prioNodeID)
|
||||||
|
|
||||||
client.callRPC(&peers, "admin_peers")
|
client.callRPC(&peers, "admin_peers")
|
||||||
if len(peers) > 0 {
|
if len(peers) != 0 {
|
||||||
t.Errorf("Expected: # of client peers == 0")
|
t.Errorf("Expected: # of client peers == 0, actual: %v", len(peers))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue