@@ -6,76 +6,63 @@ import { DISCONNECT_REASON } from '../../src/types.js'
66import * as util from './util.js'
77
88describe ( 'RLPx simulator tests' , ( ) => {
9- it ( 'RLPX: add working node' , ( ) => {
9+ it ( 'RLPX: add working node' , async ( ) => {
1010 const basePort = 40404
11- const rlpxs = util . initTwoPeerRLPXSetup ( undefined , undefined , undefined , basePort )
12-
13- rlpxs [ 0 ] . events . on ( 'peer:added' , async ( peer ) => {
14- assert . equal (
15- peer [ '_port' ] ,
16- basePort + 1 ,
17- 'should have added peer on peer:added after successful handshake' ,
18- )
19- assert . equal ( rlpxs [ 0 ] . getPeers ( ) . length , 1 , 'peer list length should be 1' )
20- assert . equal ( rlpxs [ 0 ] . _getOpenSlots ( ) , 9 , 'should have maxPeers - 1 open slots left' )
21- await util . delay ( 500 )
22- util . destroyRLPXs ( rlpxs )
11+ const { rlpxs, peer } = util . initTwoPeerRLPXSetup ( undefined , undefined , undefined , basePort + 1 )
12+ rlpxs [ 0 ] [ '_dpt' ] ! . addPeer ( peer ) . catch ( ( ) => {
13+ throw new Error ( 'Peering failed' )
2314 } )
24- } )
25-
26- it ( 'RLPX: ban node with missing tcp port' , ( ) => {
27- const rlpxs = util . initTwoPeerRLPXSetup ( undefined , undefined , undefined , 40444 )
28-
29- rlpxs [ 0 ] . events . on ( 'peer:added' , async ( ) => {
30- const peer = {
31- id : hexToBytes ( '0xabcd' ) ,
32- address : '127.0.0.1' ,
33- udpPort : 30308 ,
34- tcpPort : null ,
35- }
36- assert . notOk (
37- rlpxs [ 0 ] [ '_dpt' ] ! [ '_banlist' ] . has ( peer ) ,
38- 'should not be in ban list before bad peer discovered' ,
39- )
40- rlpxs [ 0 ] [ '_dpt' ] ! . events . emit ( 'peer:new' , peer )
41- assert . ok (
42- rlpxs [ 0 ] [ '_dpt' ] ! [ '_banlist' ] . has ( peer ) ,
43- 'should be in ban list after bad peer discovered' ,
44- )
45- await util . delay ( 500 )
46- util . destroyRLPXs ( rlpxs )
15+ await new Promise ( ( resolve ) => {
16+ rlpxs [ 0 ] . events . on ( 'peer:added' , async ( peer ) => {
17+ assert . equal (
18+ peer [ '_port' ] ,
19+ basePort + 1 ,
20+ 'should have added peer on peer:added after successful handshake' ,
21+ )
22+ assert . equal ( rlpxs [ 0 ] . getPeers ( ) . length , 1 , 'peer list length should be 1' )
23+ assert . equal ( rlpxs [ 0 ] . _getOpenSlots ( ) , 9 , 'should have maxPeers - 1 open slots left' )
24+ await util . delay ( 500 )
25+ util . destroyRLPXs ( rlpxs )
26+ resolve ( undefined )
27+ } )
4728 } )
4829 } )
49-
50- it ( 'RLPX: remove node' , ( ) => {
51- const rlpxs = util . initTwoPeerRLPXSetup ( undefined , undefined , undefined , 40504 )
52-
53- try {
54- rlpxs [ 0 ] . events . once ( 'peer:added' , ( peer ) => {
55- rlpxs [ 0 ] . disconnect ( peer [ '_remoteId' ] )
56- } )
57- rlpxs [ 0 ] . events . once ( 'peer:removed' , async ( _ , reason : any ) => {
58- assert . equal (
59- reason ,
60- DISCONNECT_REASON . CLIENT_QUITTING ,
61- 'should close with CLIENT_QUITTING disconnect reason' ,
30+ it ( 'RLPX: ban node with missing tcp port' , async ( ) => {
31+ const { rlpxs, peer } = util . initTwoPeerRLPXSetup ( undefined , undefined , undefined , 40444 )
32+ rlpxs [ 0 ] [ '_dpt' ] ! . addPeer ( peer ) . catch ( ( ) => {
33+ throw new Error ( 'Peering failed' )
34+ } )
35+ await new Promise ( ( resolve ) => {
36+ rlpxs [ 0 ] . events . on ( 'peer:added' , async ( ) => {
37+ const peer = {
38+ id : hexToBytes ( '0xabcd' ) ,
39+ address : '127.0.0.1' ,
40+ udpPort : 30308 ,
41+ tcpPort : null ,
42+ }
43+ assert . notOk (
44+ rlpxs [ 0 ] [ '_dpt' ] ! [ '_banlist' ] . has ( peer ) ,
45+ 'should not be in ban list before bad peer discovered' ,
46+ )
47+ rlpxs [ 0 ] [ '_dpt' ] ! . events . emit ( 'peer:new' , peer )
48+ assert . ok (
49+ rlpxs [ 0 ] [ '_dpt' ] ! [ '_banlist' ] . has ( peer ) ,
50+ 'should be in ban list after bad peer discovered' ,
6251 )
63- assert . equal ( rlpxs [ 0 ] . _getOpenSlots ( ) , 10 , 'should have maxPeers open slots left' )
6452 await util . delay ( 500 )
6553 util . destroyRLPXs ( rlpxs )
54+ resolve ( undefined )
6655 } )
67- } catch ( err ) {
68- assert . fail ( `An unexpected error occurred: ${ err } ` )
69- }
56+ } )
7057 } )
71-
72- it ( 'RLPX: test peer queue / refill connections' , ( ) => {
58+ it ( 'RLPX: test peer queue / refill connections' , async ( ) => {
7359 const basePort = 60661
7460 const rlpxs = util . getTestRLPXs ( 3 , 1 , basePort )
7561 const peer = { address : util . localhost , udpPort : basePort + 1 , tcpPort : basePort + 1 }
7662 rlpxs [ 0 ] [ '_dpt' ] ! . addPeer ( peer )
77- try {
63+ await new Promise ( ( resolve ) => {
7864 rlpxs [ 0 ] . events . on ( 'peer:added' , async ( peer ) => {
65+ //@ts -ignore
7966 if ( ( peer [ '_socket' ] as any ) . _peername . port === basePort + 1 ) {
8067 assert . equal ( rlpxs [ 0 ] [ '_peersQueue' ] . length , 0 , 'peers queue should contain no peers' )
8168 const peer2 = {
@@ -90,10 +77,33 @@ describe('RLPx simulator tests', () => {
9077 if ( ( peer [ '_socket' ] as any ) . _peername . port === basePort + 2 ) {
9178 assert . equal ( rlpxs [ 0 ] [ '_peersQueue' ] . length , 0 , 'peers queue should contain no peers' )
9279 util . destroyRLPXs ( rlpxs )
80+ resolve ( undefined )
9381 }
9482 } )
95- } catch ( err ) {
96- assert . fail ( `An unexpected error occurred: ${ err } ` )
97- }
83+ } )
84+ } , 30000 )
85+ it ( 'RLPX: remove node' , async ( ) => {
86+ const { rlpxs, peer } = util . initTwoPeerRLPXSetup ( undefined , undefined , undefined , 40504 )
87+ rlpxs [ 0 ]
88+ [ '_dpt' ] ! . addPeer ( peer )
89+ . then ( ( peer1 ) => {
90+ rlpxs [ 0 ] . disconnect ( peer1 [ 'id' ] ! )
91+ } )
92+ . catch ( ( e ) => {
93+ throw new Error ( `Peering failed: ${ e } : ${ e . stack } ` )
94+ } )
95+ await new Promise ( ( resolve ) => {
96+ rlpxs [ 0 ] . events . once ( 'peer:removed' , async ( _ , reason : any ) => {
97+ assert . equal (
98+ reason ,
99+ DISCONNECT_REASON . CLIENT_QUITTING ,
100+ 'should close with CLIENT_QUITTING disconnect reason' ,
101+ )
102+ assert . equal ( rlpxs [ 0 ] . _getOpenSlots ( ) , 10 , 'should have maxPeers open slots left' )
103+ await util . delay ( 500 )
104+ util . destroyRLPXs ( rlpxs )
105+ } )
106+ resolve ( undefined )
107+ } )
98108 } )
99109} )
0 commit comments