Skip to content

FireFly Performance Testing Guide

Alex Shorsher edited this page Jan 20, 2023 · 14 revisions

Setup

Hardware

Minimum recommended instance specs:

  • 4 vCPU
  • 8 GiB memory

Environment configuration

Make sure the following are installed:

In the same directory, clone the FireFly Performance CLI and FireFly Core.

Running tests

The FireFly Performance CLI is the program we use to benchmark FireFly. It can be configured, through a file named instances.yml, to test various parts of the FireFly system at high throughput over an extended period of time. For more information about configuring the CLI, please see the project's GitHub.

Here is the default instances.yml typically used for testing FireFly:

stackJSONPath: <path to FF CLI stack json>

wsConfig:
  wsPath: /ws
  readBufferSize: 16000
  writeBufferSize: 16000
  initialDelay: 250ms
  maximumDelay: 30s
  initialConnectAttempts: 5
  heartbeatInterval: 5s

instances:
  - name: long-run
    tests: [{"name": "msg_broadcast", "workers":50},{"name": "msg_private", "workers":50},{"name": "blob_broadcast", "workers":30},{"name": "blob_private", "workers":30},{"name": "custom_ethereum_contract", "workers":20},{"name": "token_mint", "workers":10}]
    length: 500h
    sender: 0
    recipient: 1
    messageOptions:
      longMessage: false
    tokenOptions:
      tokenType: fungible
    contractOptions: {"address": "<custom contract address>"}

Next, use the included prep.sh script to configure and start your firefly stack for testing.

$ ./prep.sh -h
Must provide exactly three arguments:
1. Old stack name to remove
2. New stack name to create
3. Stack's blockchain type (ex. geth, besu, fabric, corda)
ex: ./prep.sh old_stack new_stack geth

An example command would be:
$ ./prep.sh oldstack newstack geth

Clone this wiki locally