1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | Pump = require('../src/Pump.coffee')
|
9 | Buffer = require('../src/Buffer.coffee')
|
10 |
|
11 | describe 'Pump (performance test)', ->
|
12 | it 'should be able to pump 10 million items from one buffer to another', (done) ->
|
13 | @timeout 200000
|
14 |
|
15 | created = 0
|
16 | pumped = 0
|
17 | limit = 10000000
|
18 |
|
19 | source = new Buffer
|
20 | size: 10000
|
21 |
|
22 | pump = new Pump
|
23 | pump
|
24 | .from source
|
25 | .process (data) ->
|
26 | pumped++
|
27 | if !(pumped % 1000000)
|
28 | console.log 'Pumped ' + (pumped / 1000000) + ' million items'
|
29 | @copy data
|
30 |
|
31 | pump.on 'end', ->
|
32 | if pumped == limit && created == limit
|
33 | do done
|
34 | else
|
35 | throw new Error('Pump failed')
|
36 |
|
37 | write = ->
|
38 | source.write
|
39 | message: 'test data'
|
40 | foo: 'bar'
|
41 | ++created
|
42 |
|
43 | while !source.isFull()
|
44 | do write
|
45 |
|
46 | source.on 'release', ->
|
47 | do write if created < limit
|
48 |
|
49 | source.on 'empty', ->
|
50 | do source.seal
|
51 |
|
52 | pump.buffer().on 'write', ->
|
53 | pump.buffer().read()
|
54 |
|
55 | do pump.start
|