@@ -7,10 +7,12 @@ const dirtyChai = require('dirty-chai')
7
7
const expect = chai . expect
8
8
chai . use ( dirtyChai )
9
9
const multiaddr = require ( 'multiaddr' )
10
+ const series = require ( 'async/series' )
10
11
11
12
module . exports = ( create ) => {
12
13
describe ( 'peer discovery' , ( ) => {
13
14
let ws1
15
+ let ws1Listener
14
16
const base = ( id ) => {
15
17
return `/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star/ipfs/${ id } `
16
18
}
@@ -19,26 +21,102 @@ module.exports = (create) => {
19
21
let ws2
20
22
const ma2 = multiaddr ( base ( 'QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo3B' ) )
21
23
22
- it ( 'listen on the first' , ( done ) => {
23
- ws1 = create ( )
24
+ let ws3
25
+ const ma3 = multiaddr ( base ( 'QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo3C' ) )
26
+
27
+ let ws4
28
+ const ma4 = multiaddr ( base ( 'QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo3D' ) )
24
29
25
- const listener = ws1 . createListener ( ( conn ) => { } )
26
- listener . listen ( ma1 , ( err ) => {
30
+ it ( 'listen on the first' , ( done ) => {
31
+ series ( [
32
+ ( cb ) => {
33
+ ws1 = create ( )
34
+ ws1Listener = ws1 . createListener ( ( conn ) => { } )
35
+ ws1 . discovery . start ( cb )
36
+ } ,
37
+ ( cb ) => {
38
+ ws1Listener . listen ( ma1 , cb )
39
+ }
40
+ ] , ( err ) => {
27
41
expect ( err ) . to . not . exist ( )
28
42
done ( )
29
43
} )
30
44
} )
31
45
32
46
it ( 'listen on the second, discover the first' , ( done ) => {
33
- ws2 = create ( )
47
+ let listener
34
48
35
49
ws1 . discovery . once ( 'peer' , ( peerInfo ) => {
36
50
expect ( peerInfo . multiaddrs . has ( ma2 ) ) . to . equal ( true )
37
51
done ( )
38
52
} )
39
53
40
- const listener = ws2 . createListener ( ( conn ) => { } )
41
- listener . listen ( ma2 , ( err ) => {
54
+ series ( [
55
+ ( cb ) => {
56
+ ws2 = create ( )
57
+ listener = ws2 . createListener ( ( conn ) => { } )
58
+ ws2 . discovery . start ( cb )
59
+ } ,
60
+ ( cb ) => {
61
+ listener . listen ( ma2 , cb )
62
+ }
63
+ ] , ( err ) => {
64
+ expect ( err ) . to . not . exist ( )
65
+ } )
66
+ } )
67
+
68
+ // this test is mostly validating the non-discovery test mechanism works
69
+ it ( 'listen on the third, verify ws-peer is discovered' , ( done ) => {
70
+ let listener
71
+ let discoveredPeer = false
72
+ // resolve on peer discovered
73
+ ws1 . discovery . once ( 'peer' , ( peerInfo ) => {
74
+ discoveredPeer = true
75
+ } )
76
+ ws1Listener . io . once ( 'ws-peer' , ( maStr ) => {
77
+ expect ( discoveredPeer ) . to . equal ( true )
78
+ done ( )
79
+ } )
80
+
81
+ series ( [
82
+ ( cb ) => {
83
+ ws3 = create ( )
84
+ listener = ws3 . createListener ( ( conn ) => { } )
85
+ ws3 . discovery . start ( cb )
86
+ } ,
87
+ ( cb ) => {
88
+ listener . listen ( ma3 , cb )
89
+ }
90
+ ] , ( err ) => {
91
+ expect ( err ) . to . not . exist ( )
92
+ } )
93
+ } )
94
+
95
+ it ( 'listen on the fourth, ws-peer is not discovered' , ( done ) => {
96
+ let listener
97
+ let discoveredPeer = false
98
+ // resolve on peer discovered
99
+ ws1 . discovery . once ( 'peer' , ( peerInfo ) => {
100
+ discoveredPeer = true
101
+ } )
102
+ ws1Listener . io . once ( 'ws-peer' , ( maStr ) => {
103
+ expect ( discoveredPeer ) . to . equal ( false )
104
+ done ( )
105
+ } )
106
+
107
+ series ( [
108
+ ( cb ) => {
109
+ ws1 . discovery . stop ( cb )
110
+ } ,
111
+ ( cb ) => {
112
+ ws4 = create ( )
113
+ listener = ws4 . createListener ( ( conn ) => { } )
114
+ ws4 . discovery . start ( cb )
115
+ } ,
116
+ ( cb ) => {
117
+ listener . listen ( ma4 , cb )
118
+ }
119
+ ] , ( err ) => {
42
120
expect ( err ) . to . not . exist ( )
43
121
} )
44
122
} )
0 commit comments