/ test / client-large-torrent.js
client-large-torrent.js
 1  import Client from '../index.js'
 2  import common from './common.js'
 3  import fixtures from 'webtorrent-fixtures'
 4  import test from 'tape'
 5  
 6  const peerId = Buffer.from('01234567890123456789')
 7  
 8  function testLargeTorrent (t, serverType) {
 9    t.plan(9)
10  
11    common.createServer(t, serverType, (server, announceUrl) => {
12      const client = new Client({
13        infoHash: fixtures.sintel.parsedTorrent.infoHash,
14        peerId,
15        port: 6881,
16        announce: announceUrl,
17        wrtc: {}
18      })
19  
20      if (serverType === 'ws') common.mockWebsocketTracker(client)
21      client.on('error', err => { t.error(err) })
22      client.on('warning', err => { t.error(err) })
23  
24      client.once('update', data => {
25        t.equal(data.announce, announceUrl)
26        t.equal(typeof data.complete, 'number')
27        t.equal(typeof data.incomplete, 'number')
28  
29        client.update()
30  
31        client.once('update', data => {
32          t.equal(data.announce, announceUrl)
33          t.equal(typeof data.complete, 'number')
34          t.equal(typeof data.incomplete, 'number')
35  
36          client.stop()
37  
38          client.once('update', data => {
39            t.equal(data.announce, announceUrl)
40            t.equal(typeof data.complete, 'number')
41            t.equal(typeof data.incomplete, 'number')
42  
43            server.close()
44            client.destroy()
45          })
46        })
47      })
48  
49      client.start()
50    })
51  }
52  
53  test('http: large torrent: client.start()', t => {
54    testLargeTorrent(t, 'http')
55  })
56  
57  test('udp: large torrent: client.start()', t => {
58    testLargeTorrent(t, 'udp')
59  })
60  
61  test('ws: large torrent: client.start()', t => {
62    testLargeTorrent(t, 'ws')
63  })