mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-06-14 01:31:22 +00:00
feat: enable dht by default (#313)
BREAKING CHANGE: dht experimental flag was removed and a dht.enabled property was added to the config
This commit is contained in:
@ -175,12 +175,12 @@ class Node extends libp2p {
|
|||||||
},
|
},
|
||||||
dht: {
|
dht: {
|
||||||
kBucketSize: 20,
|
kBucketSize: 20,
|
||||||
|
enabled: true,
|
||||||
enabledDiscovery: true // Allows to disable discovery (enabled by default)
|
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")
|
||||||
pubsub: false,
|
pubsub: false
|
||||||
dht: false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,12 @@ const OptionsSchema = Joi.object({
|
|||||||
}).default(),
|
}).default(),
|
||||||
dht: Joi.object().keys({
|
dht: Joi.object().keys({
|
||||||
kBucketSize: Joi.number().default(20),
|
kBucketSize: Joi.number().default(20),
|
||||||
|
enabled: Joi.boolean().default(true),
|
||||||
enabledDiscovery: Joi.boolean().default(true),
|
enabledDiscovery: Joi.boolean().default(true),
|
||||||
validators: Joi.object().allow(null),
|
validators: Joi.object().allow(null),
|
||||||
selectors: Joi.object().allow(null)
|
selectors: Joi.object().allow(null)
|
||||||
}).default(),
|
}).default(),
|
||||||
EXPERIMENTAL: Joi.object().keys({
|
EXPERIMENTAL: Joi.object().keys({
|
||||||
dht: Joi.boolean().default(false),
|
|
||||||
pubsub: Joi.boolean().default(false)
|
pubsub: Joi.boolean().default(false)
|
||||||
}).default()
|
}).default()
|
||||||
}).default()
|
}).default()
|
||||||
@ -48,7 +48,7 @@ module.exports.validate = (options) => {
|
|||||||
options = Joi.attempt(options, OptionsSchema)
|
options = Joi.attempt(options, OptionsSchema)
|
||||||
|
|
||||||
// Ensure dht is correct
|
// Ensure dht is correct
|
||||||
if (options.config.EXPERIMENTAL.dht) {
|
if (options.config.dht.enabled) {
|
||||||
Joi.assert(options.modules.dht, ModuleSchema.required())
|
Joi.assert(options.modules.dht, ModuleSchema.required())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ class Node extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// dht provided components (peerRouting, contentRouting, dht)
|
// dht provided components (peerRouting, contentRouting, dht)
|
||||||
if (this._config.EXPERIMENTAL.dht) {
|
if (this._config.dht.enabled) {
|
||||||
const DHT = this._modules.dht
|
const DHT = this._modules.dht
|
||||||
const enabledDiscovery = this._config.dht.enabledDiscovery !== false
|
const enabledDiscovery = this._config.dht.enabledDiscovery !== false
|
||||||
|
|
||||||
|
@ -63,7 +63,8 @@ describe('configuration', () => {
|
|||||||
peerInfo,
|
peerInfo,
|
||||||
modules: {
|
modules: {
|
||||||
transport: [ WS ],
|
transport: [ WS ],
|
||||||
peerDiscovery: [ Bootstrap ]
|
peerDiscovery: [ Bootstrap ],
|
||||||
|
dht: DHT
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
peerDiscovery: {
|
peerDiscovery: {
|
||||||
@ -79,7 +80,8 @@ describe('configuration', () => {
|
|||||||
peerInfo,
|
peerInfo,
|
||||||
modules: {
|
modules: {
|
||||||
transport: [ WS ],
|
transport: [ WS ],
|
||||||
peerDiscovery: [ Bootstrap ]
|
peerDiscovery: [ Bootstrap ],
|
||||||
|
dht: DHT
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
peerDiscovery: {
|
peerDiscovery: {
|
||||||
@ -89,11 +91,11 @@ describe('configuration', () => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
EXPERIMENTAL: {
|
EXPERIMENTAL: {
|
||||||
pubsub: false,
|
pubsub: false
|
||||||
dht: false
|
|
||||||
},
|
},
|
||||||
dht: {
|
dht: {
|
||||||
kBucketSize: 20,
|
kBucketSize: 20,
|
||||||
|
enabled: true,
|
||||||
enabledDiscovery: true
|
enabledDiscovery: true
|
||||||
},
|
},
|
||||||
relay: {
|
relay: {
|
||||||
@ -115,7 +117,8 @@ describe('configuration', () => {
|
|||||||
transport: [ WS ],
|
transport: [ WS ],
|
||||||
peerDiscovery: [ Bootstrap ],
|
peerDiscovery: [ Bootstrap ],
|
||||||
peerRouting: [ peerRouter ],
|
peerRouting: [ peerRouter ],
|
||||||
contentRouting: [ contentRouter ]
|
contentRouting: [ contentRouter ],
|
||||||
|
dht: DHT
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
peerDiscovery: {
|
peerDiscovery: {
|
||||||
@ -160,9 +163,6 @@ describe('configuration', () => {
|
|||||||
dht: DHT
|
dht: DHT
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
},
|
|
||||||
dht: {
|
dht: {
|
||||||
selectors,
|
selectors,
|
||||||
validators
|
validators
|
||||||
@ -177,14 +177,14 @@ describe('configuration', () => {
|
|||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
EXPERIMENTAL: {
|
EXPERIMENTAL: {
|
||||||
pubsub: false,
|
pubsub: false
|
||||||
dht: true
|
|
||||||
},
|
},
|
||||||
relay: {
|
relay: {
|
||||||
enabled: true
|
enabled: true
|
||||||
},
|
},
|
||||||
dht: {
|
dht: {
|
||||||
kBucketSize: 20,
|
kBucketSize: 20,
|
||||||
|
enabled: true,
|
||||||
enabledDiscovery: true,
|
enabledDiscovery: true,
|
||||||
selectors,
|
selectors,
|
||||||
validators
|
validators
|
||||||
|
@ -30,13 +30,7 @@ describe('.contentRouting', () => {
|
|||||||
before(function (done) {
|
before(function (done) {
|
||||||
this.timeout(5 * 1000)
|
this.timeout(5 * 1000)
|
||||||
const tasks = _times(5, () => (cb) => {
|
const tasks = _times(5, () => (cb) => {
|
||||||
createNode('/ip4/0.0.0.0/tcp/0', {
|
createNode('/ip4/0.0.0.0/tcp/0', (err, node) => {
|
||||||
config: {
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, (err, node) => {
|
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
node.start((err) => cb(err, node))
|
node.start((err) => cb(err, node))
|
||||||
})
|
})
|
||||||
@ -159,6 +153,9 @@ describe('.contentRouting', () => {
|
|||||||
contentRouting: [ delegate ]
|
contentRouting: [ delegate ]
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
|
dht: {
|
||||||
|
enabled: false
|
||||||
|
},
|
||||||
relay: {
|
relay: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
hop: {
|
hop: {
|
||||||
@ -320,9 +317,6 @@ describe('.contentRouting', () => {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
active: false
|
active: false
|
||||||
}
|
}
|
||||||
},
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -387,7 +381,13 @@ describe('.contentRouting', () => {
|
|||||||
describe('no routers', () => {
|
describe('no routers', () => {
|
||||||
let nodeA
|
let nodeA
|
||||||
before((done) => {
|
before((done) => {
|
||||||
createNode('/ip4/0.0.0.0/tcp/0', (err, node) => {
|
createNode('/ip4/0.0.0.0/tcp/0', {
|
||||||
|
config: {
|
||||||
|
dht: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
nodeA = node
|
nodeA = node
|
||||||
done()
|
done()
|
||||||
|
@ -13,8 +13,10 @@ describe('libp2p creation', () => {
|
|||||||
createNode([], {
|
createNode([], {
|
||||||
config: {
|
config: {
|
||||||
EXPERIMENTAL: {
|
EXPERIMENTAL: {
|
||||||
dht: true,
|
|
||||||
pubsub: true
|
pubsub: true
|
||||||
|
},
|
||||||
|
dht: {
|
||||||
|
enabled: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
@ -69,13 +71,11 @@ describe('libp2p creation', () => {
|
|||||||
createNode([], {
|
createNode([], {
|
||||||
config: {
|
config: {
|
||||||
EXPERIMENTAL: {
|
EXPERIMENTAL: {
|
||||||
dht: false,
|
|
||||||
pubsub: false
|
pubsub: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
expect(node._dht).to.not.exist()
|
|
||||||
expect(node._floodSub).to.not.exist()
|
expect(node._floodSub).to.not.exist()
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
@ -17,12 +17,7 @@ describe('.dht', () => {
|
|||||||
|
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
createNode('/ip4/0.0.0.0/tcp/0', {
|
createNode('/ip4/0.0.0.0/tcp/0', {
|
||||||
datastore,
|
datastore
|
||||||
config: {
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
nodeA = node
|
nodeA = node
|
||||||
@ -124,8 +119,8 @@ describe('.dht', () => {
|
|||||||
before(function (done) {
|
before(function (done) {
|
||||||
createNode('/ip4/0.0.0.0/tcp/0', {
|
createNode('/ip4/0.0.0.0/tcp/0', {
|
||||||
config: {
|
config: {
|
||||||
EXPERIMENTAL: {
|
dht: {
|
||||||
dht: false
|
enabled: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
|
@ -13,7 +13,13 @@ describe('libp2p state machine (fsm)', () => {
|
|||||||
describe('starting and stopping', () => {
|
describe('starting and stopping', () => {
|
||||||
let node
|
let node
|
||||||
beforeEach((done) => {
|
beforeEach((done) => {
|
||||||
createNode([], (err, _node) => {
|
createNode([], {
|
||||||
|
config: {
|
||||||
|
dht: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, (err, _node) => {
|
||||||
node = _node
|
node = _node
|
||||||
done(err)
|
done(err)
|
||||||
})
|
})
|
||||||
|
@ -24,13 +24,7 @@ describe('.peerRouting', () => {
|
|||||||
|
|
||||||
before('create the outer ring of connections', (done) => {
|
before('create the outer ring of connections', (done) => {
|
||||||
const tasks = _times(5, () => (cb) => {
|
const tasks = _times(5, () => (cb) => {
|
||||||
createNode('/ip4/0.0.0.0/tcp/0', {
|
createNode('/ip4/0.0.0.0/tcp/0', (err, node) => {
|
||||||
config: {
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, (err, node) => {
|
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
node.start((err) => cb(err, node))
|
node.start((err) => cb(err, node))
|
||||||
})
|
})
|
||||||
@ -112,6 +106,11 @@ describe('.peerRouting', () => {
|
|||||||
createNode('/ip4/0.0.0.0/tcp/0', {
|
createNode('/ip4/0.0.0.0/tcp/0', {
|
||||||
modules: {
|
modules: {
|
||||||
peerRouting: [ delegate ]
|
peerRouting: [ delegate ]
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
dht: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
@ -213,11 +212,6 @@ describe('.peerRouting', () => {
|
|||||||
createNode('/ip4/0.0.0.0/tcp/0', {
|
createNode('/ip4/0.0.0.0/tcp/0', {
|
||||||
modules: {
|
modules: {
|
||||||
peerRouting: [ delegate ]
|
peerRouting: [ delegate ]
|
||||||
},
|
|
||||||
config: {
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
@ -270,7 +264,13 @@ describe('.peerRouting', () => {
|
|||||||
describe('no routers', () => {
|
describe('no routers', () => {
|
||||||
let nodeA
|
let nodeA
|
||||||
before((done) => {
|
before((done) => {
|
||||||
createNode('/ip4/0.0.0.0/tcp/0', (err, node) => {
|
createNode('/ip4/0.0.0.0/tcp/0', {
|
||||||
|
config: {
|
||||||
|
dht: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
nodeA = node
|
nodeA = node
|
||||||
done()
|
done()
|
||||||
|
@ -9,6 +9,7 @@ const PeerId = require('peer-id')
|
|||||||
const waterfall = require('async/waterfall')
|
const waterfall = require('async/waterfall')
|
||||||
const WS = require('libp2p-websockets')
|
const WS = require('libp2p-websockets')
|
||||||
const defaultsDeep = require('@nodeutils/defaults-deep')
|
const defaultsDeep = require('@nodeutils/defaults-deep')
|
||||||
|
const DHT = require('libp2p-kad-dht')
|
||||||
|
|
||||||
const Libp2p = require('../src')
|
const Libp2p = require('../src')
|
||||||
|
|
||||||
@ -23,7 +24,8 @@ describe('private network', () => {
|
|||||||
config = {
|
config = {
|
||||||
peerInfo,
|
peerInfo,
|
||||||
modules: {
|
modules: {
|
||||||
transport: [ WS ]
|
transport: [ WS ],
|
||||||
|
dht: DHT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cb()
|
cb()
|
||||||
|
@ -15,9 +15,6 @@ describe('libp2p', () => {
|
|||||||
mdns: {
|
mdns: {
|
||||||
enabled: false
|
enabled: false
|
||||||
}
|
}
|
||||||
},
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
dht: true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, (err, node) => {
|
}, (err, node) => {
|
||||||
|
@ -80,10 +80,10 @@ class Node extends libp2p {
|
|||||||
},
|
},
|
||||||
dht: {
|
dht: {
|
||||||
kBucketSize: 20,
|
kBucketSize: 20,
|
||||||
enabledDiscovery: true
|
enabledDiscovery: true,
|
||||||
|
enabled: false
|
||||||
},
|
},
|
||||||
EXPERIMENTAL: {
|
EXPERIMENTAL: {
|
||||||
dht: false,
|
|
||||||
pubsub: false
|
pubsub: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,10 +73,10 @@ class Node extends libp2p {
|
|||||||
},
|
},
|
||||||
dht: {
|
dht: {
|
||||||
kBucketSize: 20,
|
kBucketSize: 20,
|
||||||
enabledDiscovery: true
|
enabledDiscovery: true,
|
||||||
|
enabled: true
|
||||||
},
|
},
|
||||||
EXPERIMENTAL: {
|
EXPERIMENTAL: {
|
||||||
dht: false,
|
|
||||||
pubsub: false
|
pubsub: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user