1- import async from 'async'
21import test from 'tape'
32import * as util from './util'
43import testdata from '../testdata.json'
54
6- async function delay ( ms : number ) {
7- await new Promise ( ( resolve ) => setTimeout ( resolve , ms ) )
8- }
9-
105test ( 'DPT: new working node' , ( t ) => {
116 const dpts = util . initTwoPeerDPTSetup ( )
127
13- dpts [ 0 ] . on ( 'peer:new' , function ( peer : any ) {
8+ dpts [ 0 ] . on ( 'peer:new' , async ( peer : any ) => {
149 t . equal ( peer . address , '127.0.0.1' , 'should have added peer on peer:new' )
10+ await util . delay ( 500 )
1511 util . destroyDPTs ( dpts )
1612 t . end ( )
1713 } )
@@ -20,8 +16,9 @@ test('DPT: new working node', (t) => {
2016test ( 'DPT: working node added' , ( t ) => {
2117 const dpts = util . initTwoPeerDPTSetup ( )
2218
23- dpts [ 0 ] . on ( 'peer:added' , function ( ) {
19+ dpts [ 0 ] . on ( 'peer:added' , async ( ) => {
2420 t . equal ( dpts [ 0 ] . getPeers ( ) . length , 1 , 'should have added peer to k-bucket on peer:added' )
21+ await util . delay ( 500 )
2522 util . destroyDPTs ( dpts )
2623 t . end ( )
2724 } )
@@ -30,102 +27,74 @@ test('DPT: working node added', (t) => {
3027test ( 'DPT: remove node' , ( t ) => {
3128 const dpts = util . initTwoPeerDPTSetup ( )
3229
33- async . series (
34- [
35- function ( cb ) {
36- dpts [ 0 ] . on ( 'peer:added' , function ( peer ) {
37- dpts [ 0 ] . removePeer ( peer )
38- cb ( null )
39- } )
40- } ,
41- function ( cb ) {
42- dpts [ 0 ] . on ( 'peer:removed' , function ( ) {
43- t . equal (
44- dpts [ 0 ] . getPeers ( ) . length ,
45- 0 ,
46- 'should have removed peer from k-bucket on peer:removed'
47- )
48- cb ( null )
49- } )
50- } ,
51- ] ,
52- function ( err ) {
53- if ( err ) {
54- t . fail ( 'An unexpected error occured.' )
55- }
30+ try {
31+ dpts [ 0 ] . on ( 'peer:added' , async ( peer ) => {
32+ await util . delay ( 400 )
33+ dpts [ 0 ] . removePeer ( peer )
34+ } )
35+ dpts [ 0 ] . on ( 'peer:removed' , async ( ) => {
36+ t . equal (
37+ dpts [ 0 ] . getPeers ( ) . length ,
38+ 0 ,
39+ 'should have removed peer from k-bucket on peer:removed'
40+ )
41+ await util . delay ( 500 )
5642 util . destroyDPTs ( dpts )
5743 t . end ( )
58- }
59- )
44+ } )
45+ } catch ( err ) {
46+ t . fail ( `An unexpected error occurred: ${ err } ` )
47+ }
6048} )
6149
6250test ( 'DPT: ban node' , ( t ) => {
6351 const dpts = util . initTwoPeerDPTSetup ( )
6452
65- async . series (
66- [
67- function ( cb ) {
68- dpts [ 0 ] . on ( 'peer:added' , function ( peer ) {
69- dpts [ 0 ] . banPeer ( peer )
70- cb ( null )
71- } )
72- } ,
73- function ( cb ) {
74- dpts [ 0 ] . on ( 'peer:removed' , function ( peer ) {
75- t . equal ( dpts [ 0 ] . banlist . has ( peer ) , true , 'ban-list should contain peer' )
76- t . equal (
77- dpts [ 0 ] . getPeers ( ) . length ,
78- 0 ,
79- 'should have removed peer from k-bucket on peer:removed'
80- )
81- cb ( null )
82- } )
83- } ,
84- ] ,
85- function ( err ) {
86- if ( err ) {
87- t . fail ( 'An unexpected error occured.' )
88- }
53+ try {
54+ dpts [ 0 ] . once ( 'peer:added' , async ( peer ) => {
55+ await util . delay ( 400 )
56+ dpts [ 0 ] . banPeer ( peer )
57+ } )
58+ dpts [ 0 ] . once ( 'peer:removed' , async ( peer ) => {
59+ t . equal ( dpts [ 0 ] . banlist . has ( peer ) , true , 'ban-list should contain peer' )
60+ t . equal (
61+ dpts [ 0 ] . getPeers ( ) . length ,
62+ 0 ,
63+ 'should have removed peer from k-bucket on peer:removed'
64+ )
65+ await util . delay ( 500 )
8966 util . destroyDPTs ( dpts )
9067 t . end ( )
91- }
92- )
68+ } )
69+ } catch ( err ) {
70+ t . fail ( `An unexpected error occurred: ${ err } ` )
71+ }
9372} )
9473
9574test ( 'DPT: k-bucket ping' , ( t ) => {
9675 const dpts = util . initTwoPeerDPTSetup ( )
9776
98- async . series (
99- [
100- function ( cb ) {
101- dpts [ 0 ] . on ( 'peer:added' , function ( peer : any ) {
102- dpts [ 0 ] . _onKBucketPing ( [ peer ] , peer )
103- setTimeout ( function ( ) {
104- cb ( null )
105- } , 400 )
106- } )
107- } ,
108- function ( cb ) {
109- t . equal ( dpts [ 0 ] . getPeers ( ) . length , 1 , 'should still have one peer in k-bucket' )
110- cb ( null )
111- } ,
112- ] ,
113- function ( err ) {
114- if ( err ) {
115- t . fail ( 'An unexpected error occured.' )
116- }
77+ try {
78+ dpts [ 0 ] . once ( 'peer:added' , async ( peer : any ) => {
79+ dpts [ 0 ] . _onKBucketPing ( [ peer ] , peer )
80+ await util . delay ( 400 )
81+ t . equal ( dpts [ 0 ] . getPeers ( ) . length , 1 , 'should still have one peer in k-bucket' )
82+ await util . delay ( 400 )
11783 util . destroyDPTs ( dpts )
11884 t . end ( )
119- }
120- )
85+ } )
86+ } catch ( err ) {
87+ t . fail ( `An unexpected error occurred: ${ err } ` )
88+ }
12189} )
12290
12391test ( 'DPT: add non-available node' , async ( t ) => {
12492 const dpts = util . getTestDPTs ( 1 )
12593 const peer = { address : util . localhost , udpPort : util . basePort + 1 }
12694
127- await dpts [ 0 ] . addPeer ( peer ) . catch ( ( e : Error ) => {
95+ await dpts [ 0 ] . addPeer ( peer ) . catch ( async ( e : Error ) => {
12896 t . equal ( e . message , 'Timeout error: ping 127.0.0.1:30307' , 'should throw Timeout error' )
97+ await util . delay ( 400 )
12998 util . destroyDPTs ( dpts )
13099 } )
131100} )
@@ -134,9 +103,9 @@ test('DPT: simulate bootstrap', async (t) => {
134103 const numDPTs = 6
135104 const dpts = util . getTestDPTs ( numDPTs )
136105
137- await delay ( 250 )
106+ await util . delay ( 250 )
138107 await dpts [ 0 ] . addPeer ( { address : util . localhost , udpPort : util . basePort + 1 } )
139- await delay ( 100 )
108+ await util . delay ( 100 )
140109
141110 for ( const dpt of dpts . slice ( 2 ) ) {
142111 await dpt . bootstrap ( { address : util . localhost , udpPort : util . basePort + 1 } )
@@ -146,16 +115,16 @@ test('DPT: simulate bootstrap', async (t) => {
146115 for ( let i = 0 ; i < 10 ; i ++ ) {
147116 dpt . refresh ( )
148117 }
149- await delay ( 400 )
118+ await util . delay ( 400 )
150119 }
151120
152- await delay ( 250 )
121+ await util . delay ( 250 )
153122
154123 // dpts.forEach((dpt, i) => console.log(`${i}:${dpt.getPeers().length}`))
155124 for ( const dpt of dpts ) {
156125 t . equal ( dpt . getPeers ( ) . length , numDPTs , 'Peers should be distributed to all DPTs' )
157126 }
158- await delay ( 1000 )
127+ await util . delay ( 1000 )
159128
160129 util . destroyDPTs ( dpts )
161130} )
@@ -171,7 +140,7 @@ test('DPT: simulate acquiring peers via DNS', async () => {
171140
172141 dpts [ 0 ] . dns . __setNativeDNSModuleResolve ( mockDns )
173142 dpts [ 0 ] . refresh ( )
174- await delay ( 400 )
143+ await util . delay ( 400 )
175144
176145 util . destroyDPTs ( dpts )
177146} )
0 commit comments