chore: cleanup peer disco and fix tests

This commit is contained in:
Jacob Heun
2019-10-18 14:23:50 +02:00
parent 32f863be86
commit f9f0b0902e
11 changed files with 8 additions and 159 deletions

View File

@@ -0,0 +1,17 @@
/* eslint-env mocha */
'use strict'
const tests = require('../../src/peer-discovery/tests')
const MockDiscovery = require('./mock-discovery')
describe('compliance tests', () => {
tests({
async setup () {
await new Promise(resolve => setTimeout(resolve, 10))
return new MockDiscovery()
},
async teardown () {
await new Promise(resolve => setTimeout(resolve, 10))
}
})
})

View File

@@ -0,0 +1,48 @@
'use strict'
const { EventEmitter } = require('events')
const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
/**
* Emits 'peer' events on discovery.
*/
class MockDiscovery extends EventEmitter {
/**
* Constructs a new Bootstrap.
*
* @param {Object} options
* @param {number} options.discoveryDelay - the delay to find a peer (in milli-seconds)
*/
constructor (options = {}) {
super()
this.options = options
this._isRunning = false
this._timer = null
}
start () {
this._isRunning = true
this._discoverPeer()
}
stop () {
clearTimeout(this._timer)
this._isRunning = false
}
async _discoverPeer () {
if (!this._isRunning) return
const peerId = await PeerId.create({ bits: 512 })
const peerInfo = new PeerInfo(peerId)
this._timer = setTimeout(() => {
this.emit('peer', peerInfo)
}, this.options.discoveryDelay || 1000)
}
}
module.exports = MockDiscovery