You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.9 KiB

  1. # Tendermint P2P Tests
  2. These scripts facilitate setting up and testing a local testnet using docker containers.
  3. Setup your own local testnet as follows.
  4. For consistency, we assume all commands are run from the Tendermint repository root.
  5. First, build the docker image:
  6. ```sh
  7. docker build -t tendermint_tester -f ./test/docker/Dockerfile .
  8. ```
  9. Now create the docker network:
  10. ```sh
  11. docker network create --driver bridge --subnet 172.57.0.0/16 my_testnet
  12. ```
  13. This gives us a new network with IP addresses in the rage `172.57.0.0 - 172.57.255.255`.
  14. Peers on the network can have any IP address in this range.
  15. For our four node network, let's pick `172.57.0.101 - 172.57.0.104`.
  16. Since we use Tendermint's default listening port of 26656, our list of seed nodes will look like:
  17. ```sh
  18. 172.57.0.101:26656,172.57.0.102:26656,172.57.0.103:26656,172.57.0.104:26656
  19. ```
  20. Now we can start up the peers. We already have config files setup in `test/p2p/data/`.
  21. Let's use a for-loop to start our peers:
  22. ```sh
  23. for i in $(seq 1 4); do
  24. docker run -d \
  25. --net=my_testnet\
  26. --ip="172.57.0.$((100 + $i))" \
  27. --name local_testnet_$i \
  28. --entrypoint tendermint \
  29. -e TMHOME=/go/src/github.com/tendermint/tendermint/test/p2p/data/mach$((i-1)) \
  30. tendermint_tester node --p2p.persistent_peers 172.57.0.101:26656,172.57.0.102:26656,172.57.0.103:26656,172.57.0.104:26656 --proxy_app=kvstore
  31. done
  32. ```
  33. If you now run `docker ps`, you'll see your containers!
  34. We can confirm they are making blocks by checking the `/status` message using `curl` and `jq` to pretty print the output json:
  35. ```sh
  36. curl 172.57.0.101:26657/status | jq .
  37. ```
  38. ## IPv6 tests
  39. IPv6 tests require a Docker daemon with IPv6 enabled, by setting the following in `daemon.json`:
  40. ```json
  41. {
  42. "ipv6": true,
  43. "fixed-cidr-v6": "2001:db8:1::/64"
  44. }
  45. ```
  46. In Docker for Mac, this is done via Preferences → Docker Engine.
  47. Once set, run IPv6 tests via `make test_p2p_ipv6`.