poa-test-setup/README.md

5.6 KiB

POA Network test setup

How it works:

  • gets content of master branch of poa-network-consensus-contracts repo
  • compiles all POA Network contracts
  • gets binary code of POA Network Consensus contract
  • gets spec.json from sokol branch of chain-spec repo
  • generates custom private, public key and password of MoC and save them to ./keys/moc folder
  • updates spec.json with new MoC and binary code of POA Network Consensus contracts
  • starts MoC Parity node
  • deploys secondary POA Network contracts
  • gets content of master branch of poa-scripts-moc repo
  • generates one initial key with password and copies it to ./keys/initial_keys folder
  • gets content of core branch of poa-dapps-keys-generation repo
  • launches Ceremony DApp locally built from the repo
  • runs e2e tests on Ceremony DApp
  • saves generated production keys with Ceremony DApp to ./keys folder
  • runs validator node
  • gets content of core branch of poa-dapps-validators repo
  • launches Validators DApp locally built from the repo
  • runs e2e tests on Validators DApp
  • gets content of core branch of poa-dapps-voting repo
  • launches Voting DApp locally built from the repo
  • runs e2e tests on Governance DApp

Requirements

  1. Linux, Mac OS
  2. NodeJS@10
  3. Parity 2.6.5+
  4. Google Chrome

Basic scenarios

There are some options to start POA Network test setup depending on your needs:

Start MoC node

  1. npm i
  2. npm run start-moc-setup

At the successful end of POA test setup start you'll see this message: ### POA test setup is configured ###

Expected results:

  • RPC of Parity node with unlocked MoC account will be on http://localhost:8545
  • Spec of the network is generated to ./spec folder
  • MoC keystore file, password, private key are generated to ./keys/moc folder
  • Parity config of MoC node is generated to ./nodes/parity-moc/moc.toml file
  • Addresses of governance smart contracts are generated to ./submodules/poa-network-consensus-contracts/contracts.json
  • ABI of smart contracts are generated to ./submodules/poa-network-consensus-contracts/build/contracts

Launch DApps

Note: can be started after the previous step is completed

npm run launch-dapps

For Ubuntu users: if you encounter any errors during DApps launching, try to increase max_user_watches limit and repeat steps:

$ npm run stop-test-setup
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
$ npm run start-moc-setup
$ npm run launch-dapps

Expected results:

  • Ceremony DApp is started on http://localhost:3000
  • Validators DApp is started on http://localhost:3001
  • Governance DApp is started on http://localhost:3002

Check Emission Funds balance

Note: can be started after the previous step is completed

npm run check-emission-funds-balance

Expected results:

  • no errors returned

Launch Ceremony

Note: can be started after the "Launch DApps" step is completed

For Ubuntu users: you should first install and use X virtual framebuffer if you want to move all graphical operations to the virtual memory without showing any screen output.

sudo apt-get -y install xvfb
export DISPLAY=:99.0
sudo start-stop-daemon --start --quiet --pidfile /var/run/xvfb.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset

npm run launch-ceremony-light

Expected results:

  • one initial key is generated
  • initial key password, private key are generated to .keys/initial_keys folder
  • e2e test of Ceremony DApp is executed
  • mining address, password, and private key are copied to ./keys/mining_keys folder
  • payout address, password, and private key are copied to ./keys/payout_keys folder
  • voting address, password, and private key are copied to ./keys/voting_keys folder
  • initial key is removed
  • most ETH from initial key is transferred to voting keys
  • validator node is started at RPC port 8550

Set Validator's personal data

Note: can be started after the previous step is completed

npm run set-validators-data-light

Expected results:

  • one validator filled the form with mock personal data in Validator DApp

Add validator from Governance

Note: can be started after the previous step is completed

npm run add-validator

Expected results:

  • New validator is added to validators' set through Governance DApp

Launch added validator node

Note: can be started after the previous step is completed

npm run start-new-validator-node

Expected results:

  • New validator node is started at RPC port 8553

Finish test POA setup

npm run stop-test-setup

For Ubuntu users: you should also stop virtual framebuffer if you started it before.
sudo start-stop-daemon --stop --quiet --pidfile /var/run/xvfb.pid --remove-pidfile