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

76 lines
1.6 KiB
JavaScript

'use strict'
const Benchmark = require('benchmark')
const pull = require('pull-stream')
const pair = require('pull-pair/duplex')
const PeerId = require('peer-id')
const crypto = require('libp2p-crypto')
const secio = require('../src')
function createSession (insecure, cb) {
crypto.keys.generateKeyPair('RSA', 2048, (err, key) => {
if (err) { return cb(err) }
PeerId.createFromPrivKey(key.bytes, (err, id) => {
if (err) { return cb(err) }
cb(null, secio.encrypt(id, key, insecure))
})
})
}
const suite = new Benchmark.Suite('secio')
const ids = []
suite.add('createKey', (d) => {
crypto.keys.generateKeyPair('RSA', 2048, (err, key) => {
if (err) { throw err }
PeerId.createFromPrivKey(key.bytes, (err, id) => {
if (err) { throw err }
ids.push(id)
d.resolve()
})
})
}, { defer: true })
suite.add('send', (deferred) => {
const p = pair()
createSession(p[0], (err, local) => {
if (err) { throw err }
createSession(p[1], (err, remote) => {
if (err) { throw err }
sendMessages(local, remote)
})
})
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 })