feat: support dial only on transport manager to tolerate errors (#643)

* feat: support dial only on transport manager to tolerate errors

* chore: address review

* chore: add jsdoc to transport manager tolerance errors
This commit is contained in:
Vasco Santos
2020-05-25 16:49:04 +02:00
committed by Jacob Heun
parent 7f4662f8d8
commit 698c1df1b4
6 changed files with 109 additions and 3 deletions

View File

@@ -15,6 +15,8 @@ const mockUpgrader = require('../utils/mockUpgrader')
const { MULTIADDRS_WEBSOCKETS } = require('../fixtures/browser')
const { codes: ErrorCodes } = require('../../src/errors')
const Libp2p = require('../../src')
const { FaultTolerance } = require('../../src/transport-manager')
const Peers = require('../fixtures/peers')
const PeerId = require('peer-id')
@@ -165,3 +167,55 @@ describe('libp2p.transportManager', () => {
expect(libp2p.transportManager.close.callCount).to.equal(1)
})
})
describe('libp2p.transportManager (dial only)', () => {
let peerId
let libp2p
before(async () => {
peerId = await PeerId.createFromJSON(Peers[0])
})
afterEach(async () => {
sinon.restore()
libp2p && await libp2p.stop()
})
it('fails to start if multiaddr fails to listen', async () => {
libp2p = new Libp2p({
peerId,
addresses: {
listen: [multiaddr('/ip4/127.0.0.1/tcp/0')]
},
modules: {
transport: [Transport]
}
})
try {
await libp2p.start()
} catch (err) {
expect(err).to.exist()
expect(err.code).to.equal(ErrorCodes.ERR_NO_VALID_ADDRESSES)
return
}
throw new Error('it should fail to start if multiaddr fails to listen')
})
it('does not fail to start if multiaddr fails to listen when supporting dial only mode', async () => {
libp2p = new Libp2p({
peerId,
addresses: {
listen: [multiaddr('/ip4/127.0.0.1/tcp/0')]
},
transportManager: {
faultTolerance: FaultTolerance.NO_FATAL
},
modules: {
transport: [Transport]
}
})
await libp2p.start()
})
})