|
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/leaves.torrent') |
7 | 9 | var parsedTorrent = parseTorrent(torrent) |
8 | 10 |
|
9 | | -// remove all tracker servers except a single UDP one, for now |
10 | | -var announceUrl = 'udp://tracker.publicbt.com:80' |
11 | | -parsedTorrent.announce = [ announceUrl ] |
12 | | - |
13 | 11 | var peerId = new Buffer('01234567890123456789') |
14 | 12 | var port = 6881 |
15 | 13 |
|
16 | 14 | test('udp: client.start/update/stop()', function (t) { |
17 | | - t.plan(10) |
| 15 | + t.plan(12) |
18 | 16 |
|
19 | | - var client = new Client(peerId, port, parsedTorrent) |
| 17 | + var server = new Server({ udp: false }) |
20 | 18 |
|
21 | | - client.on('error', function (err) { |
22 | | - t.error(err) |
| 19 | + server.on('error', function (err) { |
| 20 | + t.fail(err.message) |
23 | 21 | }) |
24 | 22 |
|
25 | | - client.once('update', function (data) { |
26 | | - t.equal(data.announce, announceUrl) |
27 | | - t.equal(typeof data.complete, 'number') |
28 | | - t.equal(typeof data.incomplete, 'number') |
| 23 | + server.on('warning', function (err) { |
| 24 | + t.fail(err.message) |
29 | 25 | }) |
30 | 26 |
|
31 | | - client.once('peer', function (addr) { |
32 | | - t.pass('there is at least one peer') // TODO: this shouldn't rely on an external server! |
| 27 | + var announceUrl |
| 28 | + portfinder.getPort(function (err, port) { |
| 29 | + t.error(err, 'found free port') |
| 30 | + |
| 31 | + // remove all tracker servers except a single UDP one, for now |
| 32 | + announceUrl = 'http://127.0.0.1:' + port + '/announce' |
| 33 | + parsedTorrent.announce = [ announceUrl ] |
| 34 | + |
| 35 | + server.listen(port) |
| 36 | + |
| 37 | + var client = new Client(peerId, port, parsedTorrent) |
| 38 | + |
| 39 | + client.on('error', function (err) { |
| 40 | + t.error(err) |
| 41 | + }) |
33 | 42 |
|
34 | 43 | client.once('update', function (data) { |
35 | | - // receive one final update after calling stop |
36 | 44 | t.equal(data.announce, announceUrl) |
37 | 45 | t.equal(typeof data.complete, 'number') |
38 | 46 | t.equal(typeof data.incomplete, 'number') |
| 47 | + }) |
| 48 | + |
| 49 | + client.once('peer', function (addr) { |
| 50 | + t.pass('there is at least one peer') // TODO: this shouldn't rely on an external server! |
39 | 51 |
|
40 | 52 | client.once('update', function (data) { |
41 | | - // received an update! |
| 53 | + // receive one final update after calling stop |
42 | 54 | t.equal(data.announce, announceUrl) |
43 | 55 | t.equal(typeof data.complete, 'number') |
44 | 56 | t.equal(typeof data.incomplete, 'number') |
| 57 | + |
| 58 | + client.once('update', function (data) { |
| 59 | + // received an update! |
| 60 | + t.equal(data.announce, announceUrl) |
| 61 | + t.equal(typeof data.complete, 'number') |
| 62 | + t.equal(typeof data.incomplete, 'number') |
| 63 | + |
| 64 | + server.close(function () { |
| 65 | + t.pass('server close') |
| 66 | + }) |
| 67 | + }) |
| 68 | + |
| 69 | + client.stop() |
45 | 70 | }) |
46 | 71 |
|
47 | | - client.stop() |
| 72 | + client.update() |
48 | 73 | }) |
49 | 74 |
|
50 | | - client.update() |
| 75 | + client.start() |
51 | 76 | }) |
52 | | - |
53 | | - client.start() |
54 | 77 | }) |
0 commit comments