Compare commits

...

3 Commits

Author SHA1 Message Date
99f237bba1 chore: fix lint
License: MIT
Signed-off-by: Jacob Heun <jacobheun@gmail.com>
2019-09-06 11:30:46 +02:00
6f04526083 test: add upgrader to remaining tests
License: MIT
Signed-off-by: Jacob Heun <jacobheun@gmail.com>
2019-09-06 11:30:15 +02:00
d65f3ce228 fix: update compliance tests for latest interface-transport
License: MIT
Signed-off-by: Jacob Heun <jacobheun@gmail.com>
2019-09-06 11:22:44 +02:00
14 changed files with 41 additions and 19 deletions

View File

@ -47,7 +47,7 @@
"debug": "^4.1.1",
"err-code": "^1.1.2",
"interface-connection": "~0.3.3",
"interface-transport": "~0.5.2",
"interface-transport": "~0.6.0",
"ip-address": "^6.1.0",
"it-pipe": "^1.0.1",
"lodash.includes": "^4.3.0",

View File

@ -6,8 +6,8 @@ const TCP = require('.')
// Legacy adapter to old transport & connection interface
class TcpAdapter extends Adapter {
constructor () {
super(new TCP())
constructor (options) {
super(new TCP(options))
}
}

View File

@ -8,6 +8,7 @@ const isFunction = require('lodash.isfunction')
const errcode = require('err-code')
const debug = require('debug')
const log = debug('libp2p:tcp:dial')
const assert = require('assert')
const Libp2pSocket = require('./socket')
const createListener = require('./listener')
@ -16,12 +17,17 @@ const { AbortError } = require('interface-transport')
function noop () {}
class TCP {
constructor (options) {
assert(options && options.upgrader, 'An Upgrader must be provided')
this.upgrader = options.upgrader
}
async dial (ma, options) {
const cOpts = ma.toOptions()
log('Dialing %s:%s', cOpts.host, cOpts.port)
const rawSocket = await this._connect(cOpts, options)
return new Libp2pSocket(rawSocket, ma, options)
return this.upgrader.upgradeOutbound(new Libp2pSocket(rawSocket, ma, options))
}
_connect (cOpts, options = {}) {
@ -80,7 +86,7 @@ class TCP {
}
handler = handler || noop
return createListener(handler)
return createListener(handler, this.upgrader)
}
filter (multiaddrs) {

View File

@ -13,7 +13,7 @@ const Libp2pSocket = require('./socket')
const getMultiaddr = require('./get-multiaddr')
const c = require('./constants')
module.exports = (handler) => {
module.exports = (handler, upgrader) => {
const listener = new EventEmitter()
const server = net.createServer((socket) => {
@ -37,8 +37,9 @@ module.exports = (handler) => {
const s = new Libp2pSocket(socket, addr)
trackSocket(server, socket)
handler && handler(s)
listener.emit('connection', s)
const conn = upgrader.upgradeInbound(s)
handler && handler(conn)
listener.emit('connection', conn)
})
server.on('listening', () => listener.emit('listening'))

View File

@ -10,6 +10,8 @@ class Libp2pSocket {
constructor (rawSocket, ma, opts = {}) {
this._rawSocket = rawSocket
this._ma = ma
this.remoteAddr = ma
this.conn = rawSocket
this.sink = this._sink(opts)
this.source = opts.signal ? abortable(rawSocket, opts.signal) : rawSocket

View File

@ -9,6 +9,7 @@ chai.use(dirtyChai)
const TCP = require('../../src/adapter')
const multiaddr = require('multiaddr')
const Connection = require('interface-connection').Connection
const upgrader = require('../utils/upgrader')
describe('Connection Wrap', () => {
let tcp
@ -16,7 +17,7 @@ describe('Connection Wrap', () => {
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090')
beforeEach((done) => {
tcp = new TCP()
tcp = new TCP({ upgrader })
listener = tcp.createListener((conn) => {
pull(conn, conn)
})

View File

@ -8,12 +8,13 @@ const expect = chai.expect
chai.use(dirtyChai)
const TCP = require('../../src/adapter')
const multiaddr = require('multiaddr')
const upgrader = require('../utils/upgrader')
describe('valid Connection', () => {
let tcp
beforeEach(() => {
tcp = new TCP()
tcp = new TCP({ upgrader })
})
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090')

View File

@ -9,13 +9,14 @@ chai.use(dirtyChai)
const TCP = require('../../src/adapter')
const net = require('net')
const multiaddr = require('multiaddr')
const upgrader = require('../utils/upgrader')
const isCI = process.env.CI
describe('listen', () => {
let tcp
beforeEach(() => {
tcp = new TCP()
tcp = new TCP({ upgrader })
})
it('close listener with connections, through timeout', (done) => {
@ -134,7 +135,7 @@ describe('dial', () => {
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090')
beforeEach((done) => {
tcp = new TCP()
tcp = new TCP({ upgrader })
listener = tcp.createListener((conn) => {
pull(
conn,

View File

@ -9,8 +9,8 @@ const TCP = require('../src')
describe('interface-transport compliance', () => {
tests({
setup () {
const tcp = new TCP()
setup (options) {
const tcp = new TCP(options)
const addrs = [
multiaddr('/ip4/127.0.0.1/tcp/9091'),
multiaddr('/ip4/127.0.0.1/tcp/9092'),

View File

@ -7,12 +7,13 @@ const expect = chai.expect
chai.use(dirtyChai)
const TCP = require('../src')
const multiaddr = require('multiaddr')
const upgrader = require('./utils/upgrader')
describe('valid Connection', () => {
let tcp
beforeEach(() => {
tcp = new TCP()
tcp = new TCP({ upgrader })
})
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090')

View File

@ -6,10 +6,11 @@ const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const TCP = require('../src')
const upgrader = require('./utils/upgrader')
describe('Constructor', () => {
it('create an instance', () => {
const tcp = new TCP()
const tcp = new TCP({ upgrader })
expect(tcp).to.exist()
})
})

View File

@ -7,6 +7,7 @@ const expect = chai.expect
chai.use(dirtyChai)
const TCP = require('../src')
const multiaddr = require('multiaddr')
const upgrader = require('./utils/upgrader')
describe('filter addrs', () => {
const base = '/ip4/127.0.0.1'
@ -15,7 +16,7 @@ describe('filter addrs', () => {
let tcp
before(() => {
tcp = new TCP()
tcp = new TCP({ upgrader })
})
it('filter valid addrs for this transport', () => {

View File

@ -12,12 +12,13 @@ const multiaddr = require('multiaddr')
const pipe = require('it-pipe')
const { collect, map } = require('streaming-iterables')
const isCI = process.env.CI
const upgrader = require('./utils/upgrader')
describe('listen', () => {
let tcp
beforeEach(() => {
tcp = new TCP()
tcp = new TCP({ upgrader })
})
it('close listener with connections, through timeout', async () => {
@ -134,7 +135,7 @@ describe('dial', () => {
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090')
beforeEach(async () => {
tcp = new TCP()
tcp = new TCP({ upgrader })
listener = tcp.createListener((conn) => {
pipe(
conn,

6
test/utils/upgrader.js Normal file
View File

@ -0,0 +1,6 @@
'use strict'
module.exports = {
upgradeOutbound: (conn) => conn,
upgradeInbound: (conn) => conn
}