Streamlining the Network: Automated Integration Testing for the Nano node

Integration testing is an essential step in the development of any decentralised network. It verifies that the nodes in the network can communicate, and interact with each other as expected.
However, conducting these tests manually can be very time-consuming.

Nano-node-ci is a tool that streamlines the process of testing the nano node, ensuring its reliability and stability in a local network.
By automatically testing each new commit and pull request made to the nano-node repository, nano-node-ci helps identify any potential issues early on, so they can be corrected before deployment.

How nano-node-ci works

Nano-node-ci is triggered on each new commit and on each pull request made to the nano-node repository.

  • The nano-node is then built using nano-node-builder (see blog post for more details)
  • If a new build is detected, a test suite of 23 tests is executed.
    The results of these tests are then published to nano-node-ci, providing a comprehensive overview in a PASS/FAIL manner as shown in the screenshot below:

continuous_testing_nano-node-ci

Each testrun generates 3 links :

  • results : a simple text file with test results,
  • telemetry : a dashboard with detailed node telemetry data for additional debugging information in case of any test case failure.
  • graphs : a dashboard with a performance overview per test case

The following shows an example of the performance dashboard.
5 out of 23 tests are shown :
continuous_testing_kibana-example

The Benefits of Automated Integration Testing

Examples of things that need to be tested during integration testing of the nano node include:

  • Communication with other nodes in the network
  • Synchronization of the nodes with the network
  • Consensus participation (voting on transactions)
  • Verification of transactions (signature validation)

The goal of nano-node-ci is to validate that new versions of the nano-node meet all the requirements above.

  • It helps to identify any potential issue with new nano-node versions before they are deployed.
  • This ensures that bugs can be corrected early in the process, improving the overall quality of the code.
  • Additionally, by providing test results for each build, the nano-node performance can be tracked over time and regression can be identified quickly.

In conclusion, nano-node-ci provides integration testing to the nano node, ensuring its reliability and stability. Improved network reliability and increased development speed are key goals of nano-node-ci.

With reliable automated testing, potential issues can be identified and corrected early in the development process, leading to improved code quality, faster bug detection, better collaboration, and increased development speed.