A test data logger for benchmarking libp2p pubsub implementations.
To install through npm:
> npm i libp2p-pstn-logger --save
libp2p-pstn-logger
is built to work with this early implementation of libp2p pubsub. It simply proxies a Pubsub instance's function calls and adds the new log events necessary for the testnet benchmark tools.
It logs using debug
and its namespace is pstn:logger*
.
const Pubsub = require('libp2p-floodsub')
const libp2p = require('libp2p-ipfs')
const addLogger = require('libp2p-pstn-logger')
const p2p = new libp2p.Node(<somePeerInfo>)
const pubsub = PS(p2p)
// Now just proxy and log the important pubsub events by calling the fn
addLogger(pubsub, p2p.peerInfo.id.toB58String())
// Or if you want to work with a logger instance, simply create one.
// const logger = addLogger(pubsub, p2p.peerInfo.id.toB58String())
// ...
// logger.on('publish', <your handler>)
The proxied pubsub
instance will now dump the following events to any specified log file in this format.
<timestamp> pstn:logger publish <b58_event_source_id> <b64_topic> <b64_msg>
<timestamp> pstn:logger receive <b58_event_source_id> <b64_topic> <b64_msg>
<timestamp> pstn:logger subscribe <b58_event_source_id> <b64_topic> <b64_msg>
<timestamp> pstn:logger unsubscribe <b58_event_source_id> <b64_topic> <b64_msg>
Logger instances will receive these events:
logger.on('publish', <handler>)
logger.on('receive', <handler>)
logger.on('subscribe', <handler>)
logger.on('unsubscribe', <handler>)
Test log events are JSON objects structured as follows:
{
timestamp: <milliseconds>, // time of event capture in the pubsub instance
source: <libp2p_peer_id_base58_string>, // E.g.: libp2pNode.peerInfo.id.toB58String()
type: <string>, // publish, subscribe, unsubscribe, receive
args: <array_args_for_proxied_fn>
}
To run the basic tests:
> npm test
To dump the debug
logs into a file for viewing/parsing:
> npm run test:log
To show the debug
logs:
> npm run test:debug
PRs are welcome!
MIT © Gavin McDermott