/ethereum-poa-loadtest

WIP. Ethereum AuRa Consensus Loadtest

Primary LanguageJavaScript

Ethereum AuRa (POA) Chain Load Test

Workflow

Installation

npm install
pip install -r requirements.txt
sudo pip install ansible

Configure cloud provider

Google Cloud Engine

Setup credentials

Setup 3 following variable in .env (see .env.example):

  • GCE_SERVICE_ACCOUNT - your service account name from IAM & AdminService Accounts section

  • GCE_KEY_PATH - path to your service account keys

  • GCE_PROJECT_ID - project number from Home section

Setup SSH key
  • Generate a new ssh key pair

  • Rename user (before @ sign) in .pub file to ubuntu. For ex., if your key in .pub file ends with Vitalik@Vitaliks-MacBook-Pro.local, replace it with ubuntu@Vitaliks-MacBook-Pro.local.

  • Go to Compute EngineMetadataSSH keys and paste your .pub key there.

Setup Firewall rules
  • Go to VPC NetworkFirewall rules

  • Add a rule with:

    • Name: peer

    • Target tags: peer-node

    • Protocols/ports: tcp:8080,8545,8546,30303; udp:30301

  • Add another rule:

    • Name: validator

    • Target tags: validator-node

    • Protocols/ports: tcp:8545,8546,30303; udp:30301

Fill required values in group_vars/all

  • provider - [gcloud, aws, do]

  • map - chain map name from ./maps folder (without .yml extension)

  • username - ubuntu username

  • home - home folder for validator user

  • genesis_network_name - the same name as in chain specification file spec.json

  • timestamp - timestamp for a generated config (do not set manually, generated by make generate command)

  • agent secret - secret word to protect access to publicly exposed agent http interface

Bootstrap a network

  • make generate node generator.js ← generates keys an chain map

  • make create python providers/create.py ← launches instances in a cloud

  • make fetch python providers/fetch.py ← fetches metadata from created instances

  • make chain ansible-playbook -i hosts.txt chain.yml ← provises cloud instances with software and configs

Now you should have your chain launched and sealing blocks.

Test

Use agent client.js to schedule agent jobs.

TODO

Results Collection

TODO