github.com/vipernet-xyz/tm@v0.34.24/test/e2e/tests/net_test.go (about)

     1  package e2e_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	e2e "github.com/vipernet-xyz/tm/test/e2e/pkg"
     9  )
    10  
    11  // Tests that all nodes have peered with each other, regardless of discovery method.
    12  func TestNet_Peers(t *testing.T) {
    13  	// FIXME Skip test since nodes aren't always able to fully mesh
    14  	t.SkipNow()
    15  
    16  	testNode(t, func(t *testing.T, node e2e.Node) {
    17  		// Seed nodes shouldn't necessarily mesh with the entire network.
    18  		if node.Mode == e2e.ModeSeed {
    19  			return
    20  		}
    21  
    22  		client, err := node.Client()
    23  		require.NoError(t, err)
    24  		netInfo, err := client.NetInfo(ctx)
    25  		require.NoError(t, err)
    26  
    27  		require.Equal(t, len(node.Testnet.Nodes)-1, netInfo.NPeers,
    28  			"node is not fully meshed with peers")
    29  
    30  		seen := map[string]bool{}
    31  		for _, n := range node.Testnet.Nodes {
    32  			seen[n.Name] = (n.Name == node.Name) // we've clearly seen ourself
    33  		}
    34  		for _, peerInfo := range netInfo.Peers {
    35  			peer := node.Testnet.LookupNode(peerInfo.NodeInfo.Moniker)
    36  			require.NotNil(t, peer, "unknown node %v", peerInfo.NodeInfo.Moniker)
    37  			require.Equal(t, peer.IP.String(), peerInfo.RemoteIP,
    38  				"unexpected IP address for peer %v", peer.Name)
    39  			seen[peerInfo.NodeInfo.Moniker] = true
    40  		}
    41  
    42  		for name := range seen {
    43  			require.True(t, seen[name], "node %v not peered with %v", node.Name, name)
    44  		}
    45  	})
    46  }