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 }