Git Product home page Git Product logo

pulsarcast-test-harness's Introduction

Pulsarcast Test Harness

A test harness for Pulsarcast to be used with IPFS Testbed and IPFS Testbed Cli

This repository consists of a CLI tool that processes datasets and generates valid output to be used in the IPFS Testbed.

Requirements

  • nodejs >=8 in order to use the cli
  • A dataset supported by our tool, currently we support:

Install

npm install

Or skip the install step entirely and just use npx

npx -p pulsarcast-test-harness pulsar-test <command>

CLI Usage

$> pulsar-test run reddit-comments --help
bin.js run reddit-comments <path>

run the reddit comments dataset

Positionals:
  path  path to the dataset file                             [string] [required]

Options:
  --version         Show version number                                [boolean]
  -h, --help        Show help                                          [boolean]
  --resize          resize the number of users to a specific value      [number]
  --remove-deleted  remove the deleted users (without id)
                                                       [boolean] [default: true]

Using together with ipt:

pulsar-test run reddit-comments <path-to-dataset> --resize 100 > ipt exec pulsarcast load

Results

The test runs executed for the purpose of my M.Sc. Thesis are stored in results. The data extracted from the IPFS Testbed has been processed into a set of spreadsheets which are available here.

Acknowledgements

A very special thank you to Microsoft Azure (and specially @palma21) for supporting our executions.

License

MIT

pulsarcast-test-harness's People

Contributors

dependabot[bot] avatar jgantunes avatar

Stargazers

 avatar

Watchers

 avatar  avatar

pulsarcast-test-harness's Issues

Datasets

The focus should be for us to get close to the real world without it being something binding. Essentially, if you could have a dataset like Reddit for example, where we can have a topic hierarchy and subscriber num we could even infer the number of posts per topic based on the popularity of it.

In the end the goal is to have a zipfian distribution and an uniform one. That way we could see how the system behaves under a well balanced ideal situation and an unbalanced, "real world" one.

We'll need to:

  • Find a dataset that suits our use case
  • Extract and process the information to a relevant format
  • Store that same information somewhere (hopefully git/GitHub will do)
  • Create a scripted automated way of using that information

Values to extract

State

  • Subscriptions topic/node/global
  • Published events per topic/node/global

Resources

  • CPU usage per node/global
  • Memory usage per node/global
  • Network usage per node/global

QoS

  • Total number of events received per topic/global
  • % of events delivered per topic/global
  • Average(?) number of hops per topic/total (? possible to extract?)
  • Average(?) (number of messages per event published / subscriptions) per topic/total (? possible to extract?)

Connection between IPFS daemons

Seems like the connection between containernet hosts is working properly. However I think I'm still unable to connect the IPFS nodes to each other.

After running the initial network bootstrap, doing jsipfs swarm peers lists the multiple peers in the containernet network as being valid connections (although they're all bound to the loopback interface):

Test net running
Running node with id QmTBcwuunUvU3w95L4gCD6k12SRZBarkhUVs4cmoZ86HnF
Running node with id QmVVx6s2QvEnRZwYhxH1j7bzYgwpQZWVpguhPbCsTdR8Bq
Running node with id QmWiiK1wzz1yokSkEo8f5n5KnZUZEbF7qkKW7FXMPwWmhS
Running node with id QmSSZYyLmcvt6bpovKbCiwac9BouXwr8mtnFwdQFNYpdCx
Running node with id QmcEqbBUTJLmrdCFmAEPHLHXPQUCcxTXr4MDCfaFywAccw
Running node with id QmdVxTkbYLdZRbw7KStncWoGbc5M8z45MzT88WXJkqAG7E
Bootstrap finished
root@d1:/usr/src/app# jsipfs swarm peers
(...)
/ip4/127.0.0.1/tcp/4002/ipfs/QmVVx6s2QvEnRZwYhxH1j7bzYgwpQZWVpguhPbCsTdR8Bq
/ip4/127.0.0.1/tcp/4002/ipfs/QmcEqbBUTJLmrdCFmAEPHLHXPQUCcxTXr4MDCfaFywAccw
/ip4/127.0.0.1/tcp/4002/ipfs/QmWiiK1wzz1yokSkEo8f5n5KnZUZEbF7qkKW7FXMPwWmhS
/ip4/127.0.0.1/tcp/4002/ipfs/QmSSZYyLmcvt6bpovKbCiwac9BouXwr8mtnFwdQFNYpdCx
/ip4/127.0.0.1/tcp/4002/ipfs/QmdVxTkbYLdZRbw7KStncWoGbc5M8z45MzT88WXJkqAG7E

How does each IPFS node connect to the others without me doing anything? Any clues? Somehow I think they shouldn't list the other peers as being under the loopback interface ip address.
Is there a way of testing the connection between 2 IPFS nodes? There seems to be a ping command but it is not working in js-ipfs right? Because if I try to use pub-sub it doesn't work (subscribing a peer to a topic and publishing on the other side, nothing happens).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.