Skip to content

[Task] Browser simulations #2217

@weboko

Description

@weboko

Description

Provide tools for DST team to perform simulations using js-waku.

Requirement (from FURPS)

In an established network with 1 bootstrap node, 100 service nodes and 500 browser nodes (all nodes have a limit of 100 connections and support WebSocket), a new browser node can start sending and receiving messages within 10 seconds

User Story

  • As DST engineer, I am capable to integrate js-waku into simulations flow, so that I can make it connect to set nwaku node OR fleet.
  • As DST engineer, I can extract useful data from js-waku node after concluding simulation, so that I can analyze it.
  • As DST engineer, I can capture connectivity issues, so that they can be measured and reported.
  • As DST engineer, I can identify missed messages on Filter, so that they can be measured and reported.
  • As DST engineer, I can identify failed LightPush requests, so that they can be measured and reported.
  • As DST engineer, I can identify missed messages on Store, so that they can be measured and reported.
  • As DST engineer, I can capture libp2p information, so that it can be integrated in overall report.
  • As Waku engineer, I can get access to data and derive useful information, so that I can drive improvements.

Proposed Solution

Provide dockerized web based application capable to be run in headless browser.
Example that can be used: https://github.com/waku-org/js-waku/tree/master/packages/browser-tests

In dockerize application we must expose way for measuring successes / failures in engineering AND logical sense in respect to the item:

  • Connectivity;
  • Stream / Peer management;
  • Store protocol;
  • Filter protocol;
  • LightPush protocol;
  • Discovery (?);

We MUST ensure that dockerized application is configurable by environment for particular fleet / nwaku node or any other needed configuration for simulations.

We MAY need to integrate following packages to provide easy way for libp2p metrics exposure:

We also MAY need to provide a way to capture js-waku specific information such as discovery(if it is part of simulations), peer management, etc.

Sub-issues

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions