Skip to content

A test data logger for benchmarking libp2p pubsub implementations.

Notifications You must be signed in to change notification settings

gavinmcdermott/js-libp2p-pstn-logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

js libp2p pstn logger

A test data logger for benchmarking libp2p pubsub implementations.

Install

To install through npm:

> npm i libp2p-pstn-logger --save

Example

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>)

Proxied Pubsub Log Events

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 Instance Events

Logger instances will receive these events:

  • logger.on('publish', <handler>)
  • logger.on('receive', <handler>)
  • logger.on('subscribe', <handler>)
  • logger.on('unsubscribe', <handler>)

Logger Instance Event Structure

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>
}

API

Logger Instance

logger.on('publish', <handler>)

logger.on('receive', <handler>)

logger.on('subscribe', <handler>)

logger.on('unsubscribe', <handler>)

Tests

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

Contribute

PRs are welcome!

License

MIT © Gavin McDermott

About

A test data logger for benchmarking libp2p pubsub implementations.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published