github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/p2p/utils_test.go (about)

     1  package p2p
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/ethereum/go-ethereum/crypto"
     8  	"github.com/ethereum/go-ethereum/p2p/enode"
     9  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
    10  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
    11  	logTest "github.com/sirupsen/logrus/hooks/test"
    12  )
    13  
    14  // Test `verifyConnectivity` function by trying to connect to google.com (successfully)
    15  // and then by connecting to an unreachable IP and ensuring that a log is emitted
    16  func TestVerifyConnectivity(t *testing.T) {
    17  	hook := logTest.NewGlobal()
    18  	cases := []struct {
    19  		address              string
    20  		port                 uint
    21  		expectedConnectivity bool
    22  		name                 string
    23  	}{
    24  		{"142.250.68.46", 80, true, "Dialing a reachable IP: 142.250.68.46:80"}, // google.com
    25  		{"123.123.123.123", 19000, false, "Dialing an unreachable IP: 123.123.123.123:19000"},
    26  	}
    27  	for _, tc := range cases {
    28  		t.Run(fmt.Sprintf(tc.name),
    29  			func(t *testing.T) {
    30  				verifyConnectivity(tc.address, tc.port, "tcp")
    31  				logMessage := "IP address is not accessible"
    32  				if tc.expectedConnectivity {
    33  					require.LogsDoNotContain(t, hook, logMessage)
    34  				} else {
    35  					require.LogsContain(t, hook, logMessage)
    36  				}
    37  			})
    38  	}
    39  }
    40  
    41  func TestSerializeENR(t *testing.T) {
    42  	t.Run("Ok", func(t *testing.T) {
    43  		key, err := crypto.GenerateKey()
    44  		require.NoError(t, err)
    45  		db, err := enode.OpenDB("")
    46  		require.NoError(t, err)
    47  		lNode := enode.NewLocalNode(db, key)
    48  		record := lNode.Node().Record()
    49  		s, err := SerializeENR(record)
    50  		require.NoError(t, err)
    51  		assert.NotEqual(t, "", s)
    52  	})
    53  
    54  	t.Run("Nil record", func(t *testing.T) {
    55  		_, err := SerializeENR(nil)
    56  		require.NotNil(t, err)
    57  		assert.ErrorContains(t, "could not serialize nil record", err)
    58  	})
    59  }