1
0
mirror of https://github.com/bigchaindb/bigchaindb.git synced 2024-06-28 00:27:45 +02:00

Created templates and util functions for benchmark testing.

This commit is contained in:
Rodolphe Marques 2016-05-09 17:27:16 +02:00
parent 5c26bb439a
commit 1d4eddf635
4 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,26 @@
import sys
import multiprocessing as mp
import uuid
from bigchaindb import Bigchain
from bigchaindb.util import ProcessGroup
def create_write_transaction(tx_left):
b = Bigchain()
while tx_left > 0:
# use uuid to prevent duplicate transactions (transactions with the same hash)
tx = b.create_transaction(b.me, b.me, None, 'CREATE', payload={'msg': str(uuid.uuid4())})
tx_signed = b.sign_transaction(tx, b.me_private)
b.write_transaction(tx_signed)
tx_left -= 1
def add_to_backlog(num_transactions=10000):
tx_left = num_transactions // mp.cpu_count()
workers = ProcessGroup(target=create_write_transaction, args=(tx_left,))
workers.start()
if __name__ == '__main__':
add_to_backlog(int(sys.argv[1]))

39
benchmarking-tests/fabfile.py vendored Normal file
View File

@ -0,0 +1,39 @@
from __future__ import with_statement, unicode_literals
from fabric.api import sudo, env, hosts
from fabric.api import task, parallel
from fabric.contrib.files import sed
from fabric.operations import run, put
from fabric.context_managers import settings
from hostlist import public_dns_names
# Ignore known_hosts
# http://docs.fabfile.org/en/1.10/usage/env.html#disable-known-hosts
env.disable_known_hosts = True
# What remote servers should Fabric connect to? With what usernames?
env.user = 'ubuntu'
env.hosts = public_dns_names
# SSH key files to try when connecting:
# http://docs.fabfile.org/en/1.10/usage/env.html#key-filename
env.key_filename = 'pem/bigchaindb.pem'
@task
@parallel
def prepare_test():
put('benchmark_utils.py')
@task
@parallel
def prepare_backlog(num_transactions=10000):
run('python3 benchmark_utils.py {}'.format(num_transactions))
@task
@parallel
def start_bigchaindb():
run('screen -d -m bigchaindb start &', pty=False)

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
"""A list of the public DNS names of all the nodes in this
BigchainDB cluster/federation.
"""
from __future__ import unicode_literals
public_dns_names = ['ec2-52-58-162-146.eu-central-1.compute.amazonaws.com', 'ec2-52-58-15-239.eu-central-1.compute.amazonaws.com', 'ec2-52-58-160-205.eu-central-1.compute.amazonaws.com']

View File

@ -0,0 +1,11 @@
# Transactions per second
Measure how many blocks per second are created on the _bigchain_ with a pre filled backlog.
1. Deploy an aws cluster http://bigchaindb.readthedocs.io/en/latest/deploy-on-aws.html
2. Copy `deploy-cluster-aws/hostlist.py` to `benchmarking-tests`
```bash
fab prepare_test
fab prepare_backlog:<num txs per node> # wait for process to finish
fab start_bigchaindb