feat: cancel dials with AbortController

This commit is contained in:
Dirk McCormick
2019-04-08 22:52:12 -04:00
committed by Jacob Heun
parent bc1aeefd0d
commit e18a3d51a6
4 changed files with 49 additions and 74 deletions

View File

@ -1,8 +1,10 @@
/* eslint-env mocha */
'use strict'
const sinon = require('sinon')
const tests = require('interface-transport')
const multiaddr = require('multiaddr')
const net = require('net')
const TCP = require('../src')
describe('interface-transport compliance', () => {
@ -15,7 +17,27 @@ describe('interface-transport compliance', () => {
multiaddr('/ip4/127.0.0.1/tcp/9093'),
multiaddr('/dns4/ipfs.io')
]
return { transport: tcp, addrs }
// Used by the dial tests to simulate a delayed connect
const connector = {
delay (delayMs) {
const netConnect = net.connect
sinon.replace(net, 'connect', (opts) => {
const socket = netConnect(opts)
const socketEmit = socket.emit.bind(socket)
sinon.replace(socket, 'emit', (...args) => {
const time = args[0] === 'connect' ? delayMs : 0
setTimeout(() => socketEmit(...args), time)
})
return socket
})
},
restore () {
sinon.restore()
}
}
return { transport: tcp, addrs, connector }
}
})
})