* remove public pubsub field and redundant util * add hangUp and improve dial operations, improve keepAliveManager and remove unused method, move utils and add tests * improve public dial method to start keep alive checks * move dial method * implement discovery dialer * implement discovery dialer with queue with tests * add discovery dialer e2e tests, change local discovery log tag, update other tests * remove comment * add issue link, remove only * implement shard reader component * create evetns module, remove unused connection manager events and related tests * implement network indicator * implement connection limiter, change public API of connection manager, implement recovery strategy * decouple keep alive maanger * add connection manager js-doc * refactor keep alive manager, cover with tests * add tests for connection manager main facade * add tests for connection limiter * add e2e tests for connection manager modules pass js-waku config during test node init remove dns discovery for js-waku * restructure dialing tests * address last e2e tests * address review * add logging for main methods * decouple pure dialer class, update network monitor with specific metrics * remove console.log * remove usage of protocols * update sdk package tests * add connect await promise * add debug for e2e tests * enable only packages tests * use only one file * revert debugging * up interface for netwrok manager * add logs * add more logs * add more logs * add another logs * remove .only * remove log statements * skip the test with follow up
Description
This package contains tests for the js-waku library.
Pre-requisites
Some of the tests from this package require a running nwaku node.
These nodes are setup to be run in a docker container.
Therefore, you need to have docker installed on your machine to run the tests.
Running interop tests
-
The tests by default run against an
nwakunode with the image name specified innwaku.tsandpackages/tests/package.json. The tests can be run against a different image by setting the environment variableWAKUNODE_IMAGEto the desired image. -
Whatever
WAKUNODE_IMAGEis set to, the tests will run against that image. If the image is not available locally, the tests will pull the image from the docker hub. You can run the tests by running the following command:WAKUNODE_IMAGE=explicit-image-name npm run test:nodeOr against the default docker image by running:
npm run test:node -
You can also run the tests against a local
nwakuby setting the environment variableWAKUNODE_IMAGEto the name of the image. The tests will then run against the local image.-
For example, to run the tests against a local checkout of
nwaku, build the image first manually. You can build the image by running the following command:docker build path-to-dockerfile -t image-nameThen, you can run the tests by running the following command:
WAKUNODE_IMAGE=image-name npm run test:node
-
-
Locally, tests are executed serially, allowing the use of .only for focused testing. If you wish to run all tests locally and expedite the process, you can enable parallel execution in the Mocha configuration.
-
Logs from
nwakunodes can be found inpackages/tests/logsfolder from latest execution.
Running tests in the CI
- Tests are being run on standard Ubuntu GitHub Actions instances.
- To speed up execution, we run tests in parallel. After numerous attempts, we determined that using 6 threads strikes the best balance between execution speed and test reliability. Using more than this doesn't significantly decrease execution time and might even slow it down.
- To address occasional test flakiness, primarily due to Docker containers starting and stopping for each test and the concurrent execution of tests, we utilize the Mocha retry mechanism.