@ -34,6 +34,7 @@ import (
"github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/p2p/enr"
"github.com/ethereum/go-ethereum/rlp"
"github.com/stretchr/testify/require"
)
// Real sockets, real crypto: this test checks end-to-end connectivity for UDPv5.
@ -519,6 +520,42 @@ func TestUDPv5_talkRequest(t *testing.T) {
}
}
// This test checks that lookupDistances works.
func TestUDPv5_lookupDistances ( t * testing . T ) {
test := newUDPV5Test ( t )
lnID := test . table . self ( ) . ID ( )
t . Run ( "target distance of 1" , func ( t * testing . T ) {
node := nodeAtDistance ( lnID , 1 , intIP ( 0 ) )
dists := lookupDistances ( lnID , node . ID ( ) )
require . Equal ( t , [ ] uint { 1 , 2 , 3 } , dists )
} )
t . Run ( "target distance of 2" , func ( t * testing . T ) {
node := nodeAtDistance ( lnID , 2 , intIP ( 0 ) )
dists := lookupDistances ( lnID , node . ID ( ) )
require . Equal ( t , [ ] uint { 2 , 3 , 1 } , dists )
} )
t . Run ( "target distance of 128" , func ( t * testing . T ) {
node := nodeAtDistance ( lnID , 128 , intIP ( 0 ) )
dists := lookupDistances ( lnID , node . ID ( ) )
require . Equal ( t , [ ] uint { 128 , 129 , 127 } , dists )
} )
t . Run ( "target distance of 255" , func ( t * testing . T ) {
node := nodeAtDistance ( lnID , 255 , intIP ( 0 ) )
dists := lookupDistances ( lnID , node . ID ( ) )
require . Equal ( t , [ ] uint { 255 , 256 , 254 } , dists )
} )
t . Run ( "target distance of 256" , func ( t * testing . T ) {
node := nodeAtDistance ( lnID , 256 , intIP ( 0 ) )
dists := lookupDistances ( lnID , node . ID ( ) )
require . Equal ( t , [ ] uint { 256 , 255 , 254 } , dists )
} )
}
// This test checks that lookup works.
func TestUDPv5_lookup ( t * testing . T ) {
t . Parallel ( )