57 lines
1.3 KiB
JavaScript
Raw Normal View History

'use strict'
const Benchmark = require('benchmark')
const pull = require('pull-stream')
2018-01-07 10:54:59 +00:00
const parallel = require('async/parallel')
const pair = require('pull-pair/duplex')
const PeerId = require('peer-id')
const secio = require('../src')
const suite = new Benchmark.Suite('secio')
2017-07-22 15:44:43 -07:00
2018-01-07 10:54:59 +00:00
suite.add('establish an encrypted channel', (deferred) => {
const p = pair()
2018-01-07 10:54:59 +00:00
parallel([
(cb) => PeerId.createFromJSON(require('./peer-a'), cb),
(cb) => PeerId.createFromJSON(require('./peer-b'), cb)
], (err, peers) => {
2017-07-22 15:44:43 -07:00
if (err) { throw err }
2018-01-07 10:54:59 +00:00
const peerA = peers[0]
const peerB = peers[1]
const aToB = secio.encrypt(peerB, peerA.privKey, p[0], (err) => { throw err })
const bToA = secio.encrypt(peerA, peerB.privKey, p[1], (err) => { throw err })
sendMessages(aToB, bToA)
})
function sendMessages (local, remote) {
pull(
pull.infinite(),
pull.take(100),
2017-07-22 15:44:43 -07:00
pull.map((val) => Buffer.from(val.toString())),
local
)
pull(
remote,
pull.take(100),
pull.collect((err, chunks) => {
2018-01-07 10:31:38 +00:00
if (err) { throw err }
if (chunks.length !== 100) { throw new Error('Did not receive enough chunks') }
deferred.resolve()
})
)
}
2018-01-07 10:31:38 +00:00
}, { defer: true })
suite.on('cycle', (event) => {
console.log(String(event.target))
})
2017-07-22 15:44:43 -07:00
2018-01-07 10:31:38 +00:00
// run async
suite.run({ async: true })