Browse Source

Add test using opts.bootstrap with bootstrapper (#51)

* Add test using opts.bootstrap with bootstrapper

* freePort() with UDX

* using free ports on bootstrap tests to avoid port collision

* remove redundant test
master
Lucas 2 years ago
committed by GitHub
parent
commit
bba7145889
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 52
      test.js

52
test.js

@ -1,38 +1,49 @@
const test = require('brittle') const test = require('brittle')
const dgram = require('dgram') const UDX = require('udx-native')
const DHT = require('./') const DHT = require('./')
test('bootstrapper', async function (t) { test('bootstrapper', async function (t) {
const node = DHT.bootstrapper(49737, '127.0.0.1') const port = await freePort()
const node = DHT.bootstrapper(port, '127.0.0.1')
await node.ready() await node.ready()
t.is(node.address().host, '0.0.0.0') t.is(node.address().host, '0.0.0.0')
t.is(node.address().family, 4) t.is(node.address().family, 4)
t.is(node.address().port, 49737) t.is(node.address().port, port)
await node.destroy() await node.destroy()
}) })
test('bootstrapper - bind host', async function (t) { test('bootstrapper - bind host', async function (t) {
const node = DHT.bootstrapper(49737, '127.0.0.1', { host: '127.0.0.1' }) const port = await freePort()
const node = DHT.bootstrapper(port, '127.0.0.1', { host: '127.0.0.1' })
await node.ready() await node.ready()
t.is(node.address().host, '127.0.0.1') t.is(node.address().host, '127.0.0.1')
t.is(node.address().family, 4) t.is(node.address().family, 4)
t.is(node.address().port, 49737) t.is(node.address().port, port)
await node.destroy() await node.destroy()
}) })
test('bootstrapper - opts', async function (t) { test('bootstrapper - opts.bootstrap', async function (t) {
const node = DHT.bootstrapper(49737, '127.0.0.1', { port: 49738 }) const port1 = await freePort()
const port2 = await freePort()
await node.ready() const node1 = DHT.bootstrapper(port1, '127.0.0.1')
t.is(node.address().host, '0.0.0.0') await node1.ready()
t.is(node.address().family, 4)
t.is(node.address().port, 49738)
await node.destroy() const bootstrap = [{ host: '127.0.0.1', port: node1.address().port }]
const node2 = DHT.bootstrapper(port2, '127.0.0.1', { bootstrap })
await node2.ready()
t.is(node1.bootstrapNodes.length, 0)
t.alike(node2.bootstrapNodes, bootstrap)
await node1.destroy()
await node2.destroy()
}) })
test('bootstrapper - port and host are required', function (t) { test('bootstrapper - port and host are required', function (t) {
@ -385,16 +396,13 @@ test('filter nodes from routing table', async function (t) {
t.absent(node.table.has(b.id), 'should not have b') t.absent(node.table.has(b.id), 'should not have b')
}) })
function freePort () { async function freePort () {
return new Promise(resolve => { const udx = new UDX()
const socket = dgram.createSocket('udp4') const sock = udx.createSocket()
sock.bind(0)
socket.bind(0) const port = sock.address().port
socket.on('listening', function () { await sock.close()
const { port } = socket.address() return port
socket.close(() => resolve(port))
})
})
} }
async function makeSwarm (n, t) { async function makeSwarm (n, t) {

Loading…
Cancel
Save