2018-01-07 16:24:43 +00:00

57 lines
1.3 KiB
JavaScript

'use strict'
const Benchmark = require('benchmark')
const pull = require('pull-stream')
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')
suite.add('establish an encrypted channel', (deferred) => {
const p = pair()
parallel([
(cb) => PeerId.createFromJSON(require('./peer-a'), cb),
(cb) => PeerId.createFromJSON(require('./peer-b'), cb)
], (err, peers) => {
if (err) { throw err }
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),
pull.map((val) => Buffer.from(val.toString())),
local
)
pull(
remote,
pull.take(100),
pull.collect((err, chunks) => {
if (err) { throw err }
if (chunks.length !== 100) { throw new Error('Did not receive enough chunks') }
deferred.resolve()
})
)
}
}, { defer: true })
suite.on('cycle', (event) => {
console.log(String(event.target))
})
// run async
suite.run({ async: true })