mirror of
https://github.com/fluencelabs/js-libp2p-secio
synced 2025-03-15 18:00:52 +00:00
57 lines
1.3 KiB
JavaScript
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 })
|