Skip to content
This repository has been archived by the owner on Mar 11, 2020. It is now read-only.

callbacks -> async / await #44

Merged
merged 7 commits into from
Apr 17, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@
},
"dependencies": {
"chai": "^4.2.0",
"it-goodbye": "^1.0.0",
"it-pipe": "^1.0.0",
"multiaddr": "^5.0.2",
"pull-goodbye": "~0.0.2",
"pull-serializer": "~0.3.2",
"pull-stream": "^3.6.9"
"streaming-iterables": "^4.0.2"
},
"contributors": [
"David Dias <daviddias.p@gmail.com>",
Expand Down
74 changes: 27 additions & 47 deletions src/dial-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,69 +5,49 @@ const chai = require('chai')
const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)
const pull = require('pull-stream')
const goodbye = require('pull-goodbye')
const serializer = require('pull-serializer')

const goodbye = require('it-goodbye')
const { collect } = require('streaming-iterables')
const pipe = require('it-pipe')

module.exports = (common) => {
describe('dial', () => {
let addrs
let transport
let listener

before((done) => {
common.setup((err, _transport, _addrs) => {
if (err) return done(err)
transport = _transport
addrs = _addrs
done()
})
before(async () => {
({ transport, addrs } = await common.setup())
})

after((done) => {
common.teardown(done)
})
after(() => common.teardown && common.teardown())

beforeEach((done) => {
listener = transport.createListener((conn) => {
pull(conn, conn)
})
listener.listen(addrs[0], done)
beforeEach(() => {
listener = transport.createListener((conn) => pipe(conn, conn))
return listener.listen(addrs[0])
})

afterEach((done) => {
listener.close(done)
})
afterEach(() => listener.close())

it('simple', async () => {
const conn = await transport.dial(addrs[0])

const s = goodbye({ source: ['hey'], sink: collect })

it('simple', (done) => {
const s = serializer(goodbye({
source: pull.values(['hey']),
sink: pull.collect((err, values) => {
expect(err).to.not.exist()
expect(
values
).to.be.eql(
['hey']
)
done()
})
}))
const result = await pipe(s, conn, s)

pull(
s,
transport.dial(addrs[0]),
s
)
expect(result.length).to.equal(1)
expect(result[0].toString()).to.equal('hey')
})

it('to non existent listener', (done) => {
pull(
transport.dial(addrs[1]),
pull.onEnd((err) => {
expect(err).to.exist()
done()
})
)
it('to non existent listener', async () => {
try {
await transport.dial(addrs[1])
} catch (_) {
// Success: expected an error to be throw
return
}
expect.fail('Did not throw error')
})
})
}
124 changes: 52 additions & 72 deletions src/listen-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,118 +7,98 @@ const dirtyChai = require('dirty-chai')
const expect = chai.expect
chai.use(dirtyChai)

const pull = require('pull-stream')
const pipe = require('it-pipe')

module.exports = (common) => {
describe('listen', () => {
let addrs
let transport

before((done) => {
common.setup((err, _transport, _addrs) => {
if (err) return done(err)
transport = _transport
addrs = _addrs
done()
})
before(async () => {
({ transport, addrs } = await common.setup())
})

after((done) => {
common.teardown(done)
})
after(() => common.teardown && common.teardown())

it('simple', (done) => {
it('simple', async () => {
const listener = transport.createListener((conn) => {})
listener.listen(addrs[0], () => {
listener.close(done)
})
await listener.listen(addrs[0])
await listener.close()
})

it('close listener with connections, through timeout', (done) => {
const finish = plan(3, done)
const listener = transport.createListener((conn) => {
pull(conn, conn)
it('close listener with connections, through timeout', async () => {
let finish
let done = new Promise((resolve) => {
finish = resolve
})

listener.listen(addrs[0], () => {
const socket1 = transport.dial(addrs[0], () => {
listener.close(finish)
})
const listener = transport.createListener((conn) => pipe(conn, conn))

pull(
transport.dial(addrs[0]),
pull.onEnd(() => {
finish()
})
)

pull(
pull.values([Buffer.from('Some data that is never handled')]),
socket1,
pull.onEnd(() => {
finish()
})
)
// Listen
await listener.listen(addrs[0])

// Create two connections to the listener
const socket1 = await transport.dial(addrs[0])
await transport.dial(addrs[0])

pipe(
[Buffer.from('Some data that is never handled')],
socket1
).then(() => {
finish()
})

// Closer the listener (will take a couple of seconds to time out)
await listener.close()

// Pipe should have completed
await done
})

describe('events', () => {
// eslint-disable-next-line
// TODO: figure out why it fails in the full test suite
it.skip('connection', (done) => {
const finish = plan(2, done)

it('connection', (done) => {
const listener = transport.createListener()

listener.on('connection', (conn) => {
listener.on('connection', async (conn) => {
expect(conn).to.exist()
finish()
})

listener.listen(addrs[0], () => {
transport.dial(addrs[0], () => {
listener.close(finish)
})
})
listener.close()
dirkmc marked this conversation as resolved.
Show resolved Hide resolved
done()
});

(async () => {
await listener.listen(addrs[0])
await transport.dial(addrs[0])
})()
})

it('listening', (done) => {
const listener = transport.createListener()
listener.on('listening', () => {
listener.close(done)
listener.on('listening', async () => {
await listener.close()
done()
})
listener.listen(addrs[0])
})

// eslint-disable-next-line
// TODO: how to get the listener to emit an error?
it.skip('error', (done) => {
it('error', (done) => {
const listener = transport.createListener()
listener.on('error', (err) => {
expect(err).to.exist()
listener.close(done)
listener.close()
dirkmc marked this conversation as resolved.
Show resolved Hide resolved
done()
})
listener.emit('error', new Error('my err'))
})

it('close', (done) => {
const finish = plan(2, done)
const listener = transport.createListener()
listener.on('close', finish)
listener.on('close', done);
dirkmc marked this conversation as resolved.
Show resolved Hide resolved

listener.listen(addrs[0], () => {
listener.close(finish)
})
(async () => {
await listener.listen(addrs[0])
await listener.close()
})()
})
})
})
}

function plan (n, done) {
let i = 0
return (err) => {
if (err) return done(err)
i++

if (i === n) done()
}
}