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

Loading…
Cancel
Save