mirror of
https://github.com/tendermint/tendermint.git
synced 2026-10-01 04:05:45 +00:00
test: add E2E test for node peering (#5465)
This was a missing test case from the old P2P tests removed in #5453, which makes sure that all nodes are able to peer with each other regardless of how they discover peers. Fixes #2795, since the default CI testnet uses a combination of (partially meshed) persistent peers and PEX-based seed nodes.
This commit is contained in:
committed by
Erik Grinaker
parent
4462e2697c
commit
3a4a6ae9ac
@@ -0,0 +1,42 @@
|
||||
package e2e_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
e2e "github.com/tendermint/tendermint/test/e2e/pkg"
|
||||
)
|
||||
|
||||
// Tests that all nodes have peered with each other, regardless of discovery method.
|
||||
func TestNet_Peers(t *testing.T) {
|
||||
testNode(t, func(t *testing.T, node e2e.Node) {
|
||||
// Seed nodes shouldn't necessarily mesh with the entire network.
|
||||
if node.Mode == e2e.ModeSeed {
|
||||
return
|
||||
}
|
||||
|
||||
client, err := node.Client()
|
||||
require.NoError(t, err)
|
||||
netInfo, err := client.NetInfo(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, len(node.Testnet.Nodes)-1, netInfo.NPeers,
|
||||
"node is not fully meshed with peers")
|
||||
|
||||
seen := map[string]bool{}
|
||||
for _, n := range node.Testnet.Nodes {
|
||||
seen[n.Name] = (n.Name == node.Name) // we've clearly seen ourself
|
||||
}
|
||||
for _, peerInfo := range netInfo.Peers {
|
||||
peer := node.Testnet.LookupNode(peerInfo.NodeInfo.Moniker)
|
||||
require.NotNil(t, peer, "unknown node %v", peerInfo.NodeInfo.Moniker)
|
||||
require.Equal(t, peer.IP.String(), peerInfo.RemoteIP,
|
||||
"unexpected IP address for peer %v", peer.Name)
|
||||
seen[peerInfo.NodeInfo.Moniker] = true
|
||||
}
|
||||
|
||||
for name := range seen {
|
||||
require.True(t, seen[name], "node %v not peered with %v", node.Name, name)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user