|
1 | 1 | var Client = require('../').Client |
2 | 2 | var fs = require('fs') |
3 | 3 | var parseTorrent = require('parse-torrent') |
| 4 | +var portfinder = require('portfinder') |
| 5 | +var Server = require('../').Server |
4 | 6 | var test = require('tape') |
5 | 7 |
|
6 | 8 | var torrent = fs.readFileSync(__dirname + '/torrents/sintel-5gb.torrent') |
7 | 9 | var parsedTorrent = parseTorrent(torrent) |
8 | 10 | var peerId = new Buffer('01234567890123456789') |
9 | 11 | var port = 6881 |
10 | 12 |
|
11 | | -// remove all tracker servers except a single UDP one, for now |
12 | | -parsedTorrent.announce = [ 'udp://tracker.publicbt.com:80/announce' ] |
13 | | - |
14 | 13 | test('large torrent: client.start()', function (t) { |
15 | | - t.plan(4) |
| 14 | + t.plan(5) |
16 | 15 |
|
17 | | - var client = new Client(peerId, port, parsedTorrent) |
| 16 | + var server = new Server({ http: false }) |
18 | 17 |
|
19 | | - client.on('error', function (err) { |
20 | | - t.error(err) |
| 18 | + server.on('error', function (err) { |
| 19 | + t.fail(err.message) |
21 | 20 | }) |
22 | 21 |
|
23 | | - client.once('update', function (data) { |
24 | | - t.equal(data.announce, 'udp://tracker.publicbt.com:80/announce') |
25 | | - t.equal(typeof data.complete, 'number') |
26 | | - t.equal(typeof data.incomplete, 'number') |
| 22 | + server.on('warning', function (err) { |
| 23 | + t.fail(err.message) |
27 | 24 | }) |
28 | 25 |
|
29 | | - client.once('peer', function (addr) { |
30 | | - t.pass('there is at least one peer') // TODO: this shouldn't rely on an external server! |
31 | | - client.stop() |
32 | | - }) |
| 26 | + portfinder.getPort(function (err, port) { |
| 27 | + t.error(err, 'found free port') |
| 28 | + server.listen(port) |
| 29 | + |
| 30 | + // remove all tracker servers except a single UDP one, for now |
| 31 | + parsedTorrent.announce = [ 'udp://127.0.0.1:' + port + '/announce' ] |
| 32 | + |
| 33 | + var client = new Client(peerId, port, parsedTorrent) |
33 | 34 |
|
34 | | - client.start() |
| 35 | + client.on('error', function (err) { |
| 36 | + t.error(err) |
| 37 | + }) |
| 38 | + |
| 39 | + client.once('update', function (data) { |
| 40 | + t.equal(data.announce, 'udp://127.0.0.1:' + port + '/announce') |
| 41 | + t.equal(typeof data.complete, 'number') |
| 42 | + t.equal(typeof data.incomplete, 'number') |
| 43 | + }) |
| 44 | + |
| 45 | + client.once('peer', function (addr) { |
| 46 | + t.pass('there is at least one peer') // TODO: this shouldn't rely on an external server! |
| 47 | + client.stop() |
| 48 | + server.close() |
| 49 | + }) |
| 50 | + |
| 51 | + client.start() |
| 52 | + }) |
35 | 53 | }) |
0 commit comments