nimbus-eth1/fluffy/tools/utp_testing
Kim De Mey 73e93f1f11
Reduce Nim 1.6 compiler warnings & hints
* Reduce Nim 1.6 compiler warnings/hints for Fluffy and Nimbus proxy

Mostly raises Defect removals, TaintedString removal and some
unnecessary imports.

Also updating the copyright years alongside.

* Further reduce Nim 1.6 compiler warnings/hints for Nimbus
2023-01-31 13:38:08 +01:00
..
docker Optimize size of utp-test-app docker file (#955) 2022-02-04 14:49:29 +01:00
README.md Add tooling necessary to improve utp-testing (#931) 2022-01-19 16:06:23 +01:00
utp_rpc_types.nim Reduce Nim 1.6 compiler warnings & hints 2023-01-31 13:38:08 +01:00
utp_test.nim Fix Portal Hive fails by correcting Portal history JSON RPC API (#1365) 2022-12-13 19:22:36 +01:00
utp_test_app.nim Reduce Nim 1.6 compiler warnings & hints 2023-01-31 13:38:08 +01:00
utp_test_client.nim Improve utp test app (#947) 2022-01-31 18:40:00 +01:00
utp_test_rpc_calls.nim Improve utp test app (#947) 2022-01-31 18:40:00 +01:00

README.md

uTP testing infrastructure

Testing infrastructure which enables to test uTP implementation over different network conditions on local machine.

Highly based on tools developed to test quic protocol:

quic-interop-runner

quic-network-simulator

Prerequisities

  • Machine with docker installed

  • nimbus-eth1 set-up to run make utp_test

How it works

Test setup uses docker compose to start 3 docker containers:

  • client - which is instance of uTP test app
  • server - which is instance of uTP test app
  • sim - which is instance with ns3 network simulator with several pre-compiled scenarios

The networking is setup in such way that network traffic is routed from client to server and server to client thorugh sim which decideds what to do with flowing packets

Explanation from quic-network-simulator:

The framework uses two networks on the host machine: `leftnet` (IPv4
193.167.0.0/24, IPv6 fd00:cafe:cafe:0::/64) and `rightnet` (IPv4
193.167.100.0/24, IPv6 fd00:cafe:cafe:100::/64). `leftnet` is connected to the
client docker image, and `rightnet` is connected to the server. The ns-3
simulation sits in the middle and forwards packets between `leftnet` and
`rightnet`

Practicalities

For now process is semi-manual (TODO automate this as much as possible)

To run integration testing scenarios with different network conditions

1. cd nimbus-eth1/
2. docker build -t test-utp --build-arg BRANCH_NAME={branch-name} fluffy/tools/utp_testing/docker
3. SCENARIO="scenario_details" docker-compose -f fluffy/tools/utp_testing/docker/docker-compose.yml up

For example:
SCENARIO="drop-rate --delay=15ms --bandwidth=10Mbps --queue=25 --rate_to_client=0 --rate_to_server=0" docker-compose -f fluffy/tools/utp_testing/docker/docker-compose.yml up
would start `drop-rate` scenario with specified delay, bandwith, and different drop rates
4. make utp-test

All scenarios are specified in: scenarios