1
+ /* eslint max-nested-callbacks: ["error", 8] */
1
2
/* eslint-env mocha */
2
3
'use strict'
3
4
4
5
const expect = require ( 'chai' ) . expect
5
6
const multiaddr = require ( 'multiaddr' )
6
7
const PeerInfo = require ( 'peer-info' )
7
8
const PeerId = require ( 'peer-id' )
9
+ const pull = require ( 'pull-stream' )
10
+ const goodbye = require ( 'pull-goodbye' )
11
+ const serializer = require ( 'pull-serializer' )
8
12
9
13
const libp2p = require ( '../src' )
10
14
const rawPeer = require ( './peer.json' )
11
15
const id = PeerId . createFromPrivKey ( rawPeer . privKey )
12
- const bl = require ( 'bl' )
13
16
14
17
describe ( 'libp2p-ipfs-browser (websockets only)' , function ( ) {
15
- this . timeout ( 20 * 1000 )
16
-
17
18
let peerB
18
19
let nodeA
19
20
@@ -24,6 +25,10 @@ describe('libp2p-ipfs-browser (websockets only)', function () {
24
25
done ( )
25
26
} )
26
27
28
+ after ( ( done ) => {
29
+ nodeA . stop ( done )
30
+ } )
31
+
27
32
it ( 'create libp2pNode' , ( ) => {
28
33
nodeA = new libp2p . Node ( )
29
34
} )
@@ -56,13 +61,16 @@ describe('libp2p-ipfs-browser (websockets only)', function () {
56
61
const peers = nodeA . peerBook . getAll ( )
57
62
expect ( err ) . to . not . exist
58
63
expect ( Object . keys ( peers ) ) . to . have . length ( 1 )
59
- conn . pipe ( bl ( ( err , data ) => {
60
- expect ( err ) . to . not . exist
61
- expect ( data . toString ( ) ) . to . equal ( 'hey' )
62
- done ( )
63
- } ) )
64
- conn . write ( 'hey' )
65
- conn . end ( )
64
+
65
+ pull (
66
+ pull . values ( [ Buffer ( 'hey' ) ] ) ,
67
+ conn ,
68
+ pull . collect ( ( err , data ) => {
69
+ expect ( err ) . to . not . exist
70
+ expect ( data ) . to . be . eql ( [ Buffer ( 'hey' ) ] )
71
+ done ( )
72
+ } )
73
+ )
66
74
} )
67
75
} )
68
76
@@ -103,13 +111,16 @@ describe('libp2p-ipfs-browser (websockets only)', function () {
103
111
const peers = nodeA . peerBook . getAll ( )
104
112
expect ( err ) . to . not . exist
105
113
expect ( Object . keys ( peers ) ) . to . have . length ( 1 )
106
- conn . pipe ( bl ( ( err , data ) => {
107
- expect ( err ) . to . not . exist
108
- expect ( data . toString ( ) ) . to . equal ( 'hey' )
109
- done ( )
110
- } ) )
111
- conn . write ( 'hey' )
112
- conn . end ( )
114
+
115
+ pull (
116
+ pull . values ( [ Buffer ( 'hey' ) ] ) ,
117
+ conn ,
118
+ pull . collect ( ( err , data ) => {
119
+ expect ( err ) . to . not . exist
120
+ expect ( data ) . to . be . eql ( [ Buffer ( 'hey' ) ] )
121
+ done ( )
122
+ } )
123
+ )
113
124
} )
114
125
} )
115
126
@@ -134,70 +145,44 @@ describe('libp2p-ipfs-browser (websockets only)', function () {
134
145
it . skip ( 'libp2p.dialById on Protocol nodeA to nodeB' , ( done ) => { } )
135
146
it . skip ( 'libp2p.hangupById nodeA to nodeB' , ( done ) => { } )
136
147
137
- it ( 'stress test: one big write' , ( done ) => {
138
- const message = new Buffer ( 1000000 ) . fill ( 'a' ) . toString ( 'hex' )
139
-
140
- nodeA . dialByPeerInfo ( peerB , '/echo/1.0.0' , ( err , conn ) => {
141
- expect ( err ) . to . not . exist
142
-
143
- conn . write ( message )
144
- conn . write ( 'STOP' )
145
-
146
- let result = ''
147
-
148
- conn . on ( 'data' , ( data ) => {
149
- if ( data . toString ( ) === 'STOP' ) {
150
- conn . end ( )
151
- return
152
- }
153
- result += data . toString ( )
154
- } )
155
-
156
- conn . on ( 'end' , ( ) => {
157
- expect ( result ) . to . equal ( message )
158
- done ( )
148
+ describe ( 'stress' , ( ) => {
149
+ it ( 'one big write' , ( done ) => {
150
+ nodeA . dialByPeerInfo ( peerB , '/echo/1.0.0' , ( err , conn ) => {
151
+ expect ( err ) . to . not . exist
152
+ const rawMessage = new Buffer ( 1000000 ) . fill ( 'a' )
153
+
154
+ const s = serializer ( goodbye ( {
155
+ source : pull . values ( [ rawMessage ] ) ,
156
+ sink : pull . collect ( ( err , results ) => {
157
+ expect ( err ) . to . not . exist
158
+ expect ( results ) . to . have . length ( 1 )
159
+ expect ( Buffer ( results [ 0 ] ) ) . to . have . length ( rawMessage . length )
160
+ done ( )
161
+ } )
162
+ } ) )
163
+ pull ( s , conn , s )
159
164
} )
160
165
} )
161
- } )
162
-
163
- it ( 'stress test: many writes in 2 batches' , ( done ) => {
164
- let expected = ''
165
- let counter = 0
166
-
167
- nodeA . dialByPeerInfo ( peerB , '/echo/1.0.0' , ( err , conn ) => {
168
- expect ( err ) . to . not . exist
169
-
170
- while ( ++ counter < 10000 ) {
171
- conn . write ( `${ counter } ` )
172
- expected += `${ counter } `
173
- }
174
166
175
- while ( ++ counter < 20000 ) {
176
- conn . write ( `${ counter } ` )
177
- expected += `${ counter } `
178
- }
179
-
180
- setTimeout ( ( ) => {
181
- conn . write ( 'STOP' )
182
- } , 2000 )
183
-
184
- let result = ''
185
- conn . on ( 'data' , ( data ) => {
186
- if ( data . toString ( ) === 'STOP' ) {
187
- conn . end ( )
188
- return
189
- }
190
- result += data . toString ( )
191
- } )
167
+ it ( 'many writes' , ( done ) => {
168
+ nodeA . dialByPeerInfo ( peerB , '/echo/1.0.0' , ( err , conn ) => {
169
+ expect ( err ) . to . not . exist
192
170
193
- conn . on ( 'end' , ( ) => {
194
- expect ( result ) . to . equal ( expected )
195
- done ( )
171
+ const s = serializer ( goodbye ( {
172
+ source : pull (
173
+ pull . infinite ( ) ,
174
+ pull . take ( 1000 ) ,
175
+ pull . map ( ( val ) => Buffer ( val . toString ( ) ) )
176
+ ) ,
177
+ sink : pull . collect ( ( err , result ) => {
178
+ expect ( err ) . to . not . exist
179
+ expect ( result ) . to . have . length ( 1000 )
180
+ done ( )
181
+ } )
182
+ } ) )
183
+
184
+ pull ( s , conn , s )
196
185
} )
197
186
} )
198
187
} )
199
-
200
- it ( 'stop the libp2pnode' , ( done ) => {
201
- nodeA . stop ( done )
202
- } )
203
188
} )
0 commit comments