fix: start kad dht random walk (#251)

* fix: start kad dht random walk

* chore: added tests and stop random walk

* chore: allows to disable discovery for dht

* chore: upgrade kad-dht version
This commit is contained in:
Vasco Santos 2018-10-04 13:40:32 +01:00 committed by Jacob Heun
parent cef3c8b5cc
commit dd934b9690
7 changed files with 16 additions and 5 deletions

View File

@ -162,7 +162,8 @@ class Node extends libp2p {
} }
}, },
dht: { dht: {
kBucketSize: 20 kBucketSize: 20,
enabledDiscovery: true // Allows to disable discovery (enabled by default)
}, },
// Enable/Disable Experimental features // Enable/Disable Experimental features
EXPERIMENTAL: { // Experimental features ("behind a flag") EXPERIMENTAL: { // Experimental features ("behind a flag")

View File

@ -59,7 +59,7 @@
"dirty-chai": "^2.0.1", "dirty-chai": "^2.0.1",
"electron-webrtc": "~0.3.0", "electron-webrtc": "~0.3.0",
"libp2p-circuit": "~0.2.1", "libp2p-circuit": "~0.2.1",
"libp2p-kad-dht": "~0.10.3", "libp2p-kad-dht": "~0.10.5",
"libp2p-mdns": "~0.12.0", "libp2p-mdns": "~0.12.0",
"libp2p-mplex": "~0.8.2", "libp2p-mplex": "~0.8.2",
"libp2p-bootstrap": "~0.9.3", "libp2p-bootstrap": "~0.9.3",

View File

@ -29,7 +29,8 @@ const OptionsSchema = Joi.object({
}) })
}).default(), }).default(),
dht: Joi.object().keys({ dht: Joi.object().keys({
kBucketSize: Joi.number().allow(null) kBucketSize: Joi.number().allow(null),
enabledDiscovery: Joi.boolean().default(true)
}), }),
EXPERIMENTAL: Joi.object().keys({ EXPERIMENTAL: Joi.object().keys({
dht: Joi.boolean().default(false), dht: Joi.boolean().default(false),

View File

@ -85,8 +85,11 @@ class Node extends EventEmitter {
// dht provided components (peerRouting, contentRouting, dht) // dht provided components (peerRouting, contentRouting, dht)
if (this._config.EXPERIMENTAL.dht) { if (this._config.EXPERIMENTAL.dht) {
const DHT = this._modules.dht const DHT = this._modules.dht
const enabledDiscovery = this._config.dht.enabledDiscovery !== false
this._dht = new DHT(this._switch, { this._dht = new DHT(this._switch, {
kBucketSize: this._config.dht.kBucketSize || 20, kBucketSize: this._config.dht.kBucketSize || 20,
enabledDiscovery,
// TODO make datastore an option of libp2p itself so // TODO make datastore an option of libp2p itself so
// that other things can use it as well // that other things can use it as well
datastore: dht.datastore datastore: dht.datastore

View File

@ -28,10 +28,12 @@ describe('libp2p creation', () => {
sinon.spy(sw, 'start') sinon.spy(sw, 'start')
sinon.spy(cm, 'start') sinon.spy(cm, 'start')
sinon.spy(dht, 'start') sinon.spy(dht, 'start')
sinon.spy(dht.randomWalk, 'start')
sinon.spy(pub, 'start') sinon.spy(pub, 'start')
sinon.spy(sw, 'stop') sinon.spy(sw, 'stop')
sinon.spy(cm, 'stop') sinon.spy(cm, 'stop')
sinon.spy(dht, 'stop') sinon.spy(dht, 'stop')
sinon.spy(dht.randomWalk, 'stop')
sinon.spy(pub, 'stop') sinon.spy(pub, 'stop')
sinon.spy(node, 'emit') sinon.spy(node, 'emit')
@ -41,6 +43,7 @@ describe('libp2p creation', () => {
expect(sw.start.calledOnce).to.equal(true) expect(sw.start.calledOnce).to.equal(true)
expect(cm.start.calledOnce).to.equal(true) expect(cm.start.calledOnce).to.equal(true)
expect(dht.start.calledOnce).to.equal(true) expect(dht.start.calledOnce).to.equal(true)
expect(dht.randomWalk.start.calledOnce).to.equal(true)
expect(pub.start.calledOnce).to.equal(true) expect(pub.start.calledOnce).to.equal(true)
expect(node.emit.calledWith('start')).to.equal(true) expect(node.emit.calledWith('start')).to.equal(true)
@ -53,6 +56,7 @@ describe('libp2p creation', () => {
expect(sw.stop.calledOnce).to.equal(true) expect(sw.stop.calledOnce).to.equal(true)
expect(cm.stop.calledOnce).to.equal(true) expect(cm.stop.calledOnce).to.equal(true)
expect(dht.stop.calledOnce).to.equal(true) expect(dht.stop.calledOnce).to.equal(true)
expect(dht.randomWalk.stop.called).to.equal(true)
expect(pub.stop.calledOnce).to.equal(true) expect(pub.stop.calledOnce).to.equal(true)
expect(node.emit.calledWith('stop')).to.equal(true) expect(node.emit.calledWith('stop')).to.equal(true)

View File

@ -79,7 +79,8 @@ class Node extends libp2p {
} }
}, },
dht: { dht: {
kBucketSize: 20 kBucketSize: 20,
enabledDiscovery: true
}, },
EXPERIMENTAL: { EXPERIMENTAL: {
dht: false, dht: false,

View File

@ -72,7 +72,8 @@ class Node extends libp2p {
} }
}, },
dht: { dht: {
kBucketSize: 20 kBucketSize: 20,
enabledDiscovery: true
}, },
EXPERIMENTAL: { EXPERIMENTAL: {
dht: false, dht: false,