mirror of
https://github.com/fluencelabs/js-libp2p-interfaces
synced 2025-06-13 01:31:37 +00:00
chore: add basic discovery module for compliance spec
This commit is contained in:
13
test/compliance.spec.js
Normal file
13
test/compliance.spec.js
Normal file
@ -0,0 +1,13 @@
|
||||
/* eslint-env mocha */
|
||||
'use strict'
|
||||
|
||||
const tests = require('../src')
|
||||
const MockDiscovery = require('./mock-discovery')
|
||||
|
||||
describe('compliance tests', () => {
|
||||
tests({
|
||||
setup () {
|
||||
return new MockDiscovery()
|
||||
}
|
||||
})
|
||||
})
|
48
test/mock-discovery.js
Normal file
48
test/mock-discovery.js
Normal 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
|
@ -1 +0,0 @@
|
||||
'use strict'
|
Reference in New Issue
Block a user