Skip to content

Commit 98a1a91

Browse files
committed
test: add listen tests
1 parent e6e6e54 commit 98a1a91

File tree

5 files changed

+180
-27
lines changed

5 files changed

+180
-27
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"release-minor": "aegir release --type minor -t node --no-build",
1111
"release-major": "aegir release --type major -t node --no-build",
1212
"coverage": "aegir coverage",
13-
"coverage-publish": "aegir coverage publish"
13+
"coverage-publish": "aegir coverage publish --providers coveralls"
1414
},
1515
"pre-push": [
1616
"lint",

src/create-listener.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ module.exports = (handler) => {
2525
socket.on('error', noop)
2626

2727
const addr = getMultiaddr(socket)
28-
log('new connection', addr.toString())
2928

3029
const s = toPull.duplex(socket)
3130

@@ -80,7 +79,7 @@ module.exports = (handler) => {
8079

8180
const lOpts = listeningAddr.toOptions()
8281
log('Listening on %s %s', lOpts.port, lOpts.host)
83-
return server.listen(lOpts.port, lOpts.host, callback)
82+
server.listen(lOpts.port, lOpts.host, callback)
8483
}
8584

8685
listener.getAddrs = (callback) => {

src/get-multiaddr.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
'use strict'
22

3-
const multiaddr = require('multiaddr')
4-
const Address6 = require('ip-address').Address6
3+
// const multiaddr = require('multiaddr')
4+
// const Address6 = require('ip-address').Address6
55

66
module.exports = (socket) => {
7+
// utp-native does not pack the remoteAddress
8+
// TODO check if it is possible
9+
return null
10+
/*
711
let ma
812
913
if (socket.remoteFamily === 'IPv6') {
@@ -25,4 +29,5 @@ module.exports = (socket) => {
2529
}
2630
2731
return ma
32+
*/
2833
}

test/listen-dial.js

-22
This file was deleted.

test/listen-dial.spec.js

+171
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
/* eslint-env mocha */
2+
'use strict'
3+
4+
const chai = require('chai')
5+
const dirtyChai = require('dirty-chai')
6+
const expect = chai.expect
7+
chai.use(dirtyChai)
8+
const nativeUTP = require('utp-native')
9+
const pull = require('pull-stream')
10+
const multiaddr = require('multiaddr')
11+
12+
const UTP = require('../src')
13+
const isCI = process.env.CI
14+
15+
describe('listen', () => {
16+
let utp
17+
18+
function ma (port) {
19+
const base = '/ip4/127.0.0.1/udp/'
20+
return multiaddr(`${base}${port}/utp`)
21+
}
22+
23+
beforeEach(() => {
24+
utp = new UTP()
25+
})
26+
27+
it('close listener with connections, through timeout', function (done) {
28+
this.timeout(20 * 1000)
29+
30+
const listener = utp.createListener((conn) => {
31+
pull(conn, conn)
32+
})
33+
34+
listener.on('connection', () => {
35+
// Testing
36+
console.log('incomming connection')
37+
})
38+
39+
const addr = ma(12000)
40+
const connectOptions = addr.toOptions()
41+
42+
listener.listen(addr, () => {
43+
const socket1 = nativeUTP.connect(connectOptions.port, connectOptions.host)
44+
const socket2 = nativeUTP.connect(connectOptions.port, connectOptions.host)
45+
46+
socket1.write('Some data that is never handled')
47+
socket1.end()
48+
49+
// TODO Unfortunately utp has no notion of gracious socket closing
50+
// This feature needs to be shimmed on top to make it a proper libp2p
51+
// transport
52+
socket1.on('error', (err) => {
53+
expect(err).to.not.exist()
54+
})
55+
socket2.on('error', (err) => {
56+
expect(err).to.not.exist()
57+
})
58+
socket1.on('connect', () => {
59+
listener.close(done)
60+
})
61+
})
62+
})
63+
64+
it.skip('listen on port 0', (done) => {
65+
const listener = utp.createListener((conn) => {})
66+
67+
listener.listen(ma(0), () => {
68+
listener.close(done)
69+
})
70+
})
71+
72+
it.skip('listen on IPv6 addr', function (done) {
73+
if (isCI) { return this.skip() }
74+
75+
const ma = multiaddr('/ip6/::/udp/12000/utp')
76+
77+
const listener = utp.createListener((conn) => {})
78+
listener.listen(ma, () => {
79+
listener.close(done)
80+
})
81+
})
82+
83+
it.skip('listen on any Interface', (done) => {
84+
const ma = multiaddr('/ip4/0.0.0.0/udp/12000/utp')
85+
86+
const listener = utp.createListener((conn) => {})
87+
88+
listener.listen(ma, () => {
89+
listener.close(done)
90+
})
91+
})
92+
93+
it.skip('getAddrs', (done) => {
94+
const listener = utp.createListener((conn) => {})
95+
const addr = ma(12000)
96+
97+
listener.listen(addr, () => {
98+
listener.getAddrs((err, multiaddrs) => {
99+
expect(err).to.not.exist()
100+
expect(multiaddrs.length).to.equal(1)
101+
expect(multiaddrs[0]).to.eql(addr)
102+
listener.close(done)
103+
})
104+
})
105+
})
106+
107+
it.skip('getAddrs on port 0 listen', (done) => {
108+
const addr = ma(0)
109+
110+
const listener = utp.createListener((conn) => {})
111+
listener.listen(addr, () => {
112+
listener.getAddrs((err, multiaddrs) => {
113+
expect(err).to.not.exist()
114+
expect(multiaddrs.length).to.equal(1)
115+
listener.close(done)
116+
})
117+
})
118+
})
119+
120+
it.skip('getAddrs from listening on 0.0.0.0', (done) => {
121+
const addr = multiaddr('/ip4/0.0.0.0/udp/12000/utp')
122+
123+
const listener = utp.createListener((conn) => {})
124+
125+
listener.listen(addr, () => {
126+
listener.getAddrs((err, multiaddrs) => {
127+
expect(err).to.not.exist()
128+
expect(multiaddrs.length > 0).to.equal(true)
129+
expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1)
130+
listener.close(done)
131+
})
132+
})
133+
})
134+
135+
it.skip('getAddrs from listening on 0.0.0.0 and port 0', (done) => {
136+
const addr = multiaddr('/ip4/0.0.0.0/udp/0/utp')
137+
const listener = utp.createListener((conn) => {})
138+
139+
listener.listen(addr, () => {
140+
listener.getAddrs((err, multiaddrs) => {
141+
expect(err).to.not.exist()
142+
expect(multiaddrs.length > 0).to.equal(true)
143+
expect(multiaddrs[0].toString().indexOf('0.0.0.0')).to.equal(-1)
144+
listener.close(done)
145+
})
146+
})
147+
})
148+
149+
it.skip('getAddrs preserves IPFS Id', (done) => {
150+
const ipfsId = '/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw'
151+
const addr = ma(9090).encapsulate(ipfsId)
152+
153+
const listener = utp.createListener((conn) => {})
154+
155+
listener.listen(addr, () => {
156+
listener.getAddrs((err, multiaddrs) => {
157+
expect(err).to.not.exist()
158+
expect(multiaddrs.length).to.equal(1)
159+
expect(multiaddrs[0]).to.eql(ma)
160+
listener.close(done)
161+
})
162+
})
163+
})
164+
})
165+
166+
describe('dial', () => {
167+
it.skip('create an instance', () => {
168+
const utp = new UTP()
169+
expect(utp).to.exist()
170+
})
171+
})

0 commit comments

Comments
 (0)