mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00

* Adjust imports to bigchaindb_common * Adjust get_spent function signature * Adjust block serialization * Fix BigchainApi Test * Fix TestTransactionValidation tests * Fix TestBlockValidation tests * WIP: TestMultipleInputs * Adjust tests to tx-model interface changes - Fix old tests - Fix tests in TestMultipleInputs class * Remove fulfillment message tests * Fix TransactionMalleability tests * Remove Cryptoconditions tests * Remove create_transaction * Remove signing logic * Remove consensus plugin * Fix block_creation pipeline * Fix election pipeline * Replace some util functions with bdb_common ones - timestamp ==> gen_timestamp - serialize. * Implement Block model * Simplify function signatures for vote functions Change parameter interface for the following functions: - has_previous_vote - verify_vote_signature - block_election_status so that they take a block's id and voters instead of a fake block. * Integrate Block and Transaction model * Fix leftover tests and cleanup conftest * Add bigchaindb-common to install_requires * Delete transactions after block is written (#609) * delete transactions after block is written * cleanup transaction_exists * check for duplicate transactions * delete invalid tx from backlog * test duplicate transaction * Remove dead code * Test processes.py * Test invalid tx in on server * Fix tests for core.py * Fix models tests * Test commands main fn * Add final coverage to vote pipeline * Add more tests to voting pipeline * Remove consensus plugin docs and misc * Post rebase fixes * Fix rebase mess * Remove extra blank line * Improve docstring * Remove comment handled in bigchaindb/cryptoconditions#27; see https://github.com/bigchaindb/cryptoconditions/issues/27 * Fix block serialization in block creation * Add signed_ prefix to transfer_tx * Improve docs * Add library documentation page on pipelines * PR feedback for models.py * Impr. readability of get_last_voted_block * Use dict comprehension * Add docker-compose file to build and serve docs locally for development purposes * Change private_key for signing_key * Improve docstrings * Remove consensus docs * Document new consensus module * Create different transactions for the block * Cleanup variable names in block.py * Create different transactions for the block * Cleanup variable names in block.py
98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
import json
|
|
import time
|
|
|
|
import rapidjson
|
|
from line_profiler import LineProfiler
|
|
|
|
import bigchaindb
|
|
|
|
# BIG TODO: Adjust for new transaction model
|
|
|
|
|
|
def speedtest_validate_transaction():
|
|
# create a transaction
|
|
b = bigchaindb.Bigchain()
|
|
tx = b.create_transaction(b.me, b.me, None, 'CREATE')
|
|
tx_signed = b.sign_transaction(tx, b.me_private)
|
|
|
|
# setup the profiler
|
|
profiler = LineProfiler()
|
|
profiler.enable_by_count()
|
|
profiler.add_function(bigchaindb.Bigchain.validate_transaction)
|
|
|
|
# validate_transaction 1000 times
|
|
for i in range(1000):
|
|
b.validate_transaction(tx_signed)
|
|
|
|
profiler.print_stats()
|
|
|
|
|
|
def speedtest_serialize_block_json():
|
|
# create a block
|
|
b = bigchaindb.Bigchain()
|
|
tx = b.create_transaction(b.me, b.me, None, 'CREATE')
|
|
tx_signed = b.sign_transaction(tx, b.me_private)
|
|
block = b.create_block([tx_signed] * 1000)
|
|
|
|
time_start = time.time()
|
|
for _ in range(1000):
|
|
_ = json.dumps(block, skipkeys=False, ensure_ascii=False, sort_keys=True)
|
|
time_elapsed = time.time() - time_start
|
|
|
|
print('speedtest_serialize_block_json: {} s'.format(time_elapsed))
|
|
|
|
|
|
def speedtest_serialize_block_rapidjson():
|
|
# create a block
|
|
b = bigchaindb.Bigchain()
|
|
tx = b.create_transaction(b.me, b.me, None, 'CREATE')
|
|
tx_signed = b.sign_transaction(tx, b.me_private)
|
|
block = b.create_block([tx_signed] * 1000)
|
|
|
|
time_start = time.time()
|
|
for _ in range(1000):
|
|
_ = rapidjson.dumps(block, skipkeys=False, ensure_ascii=False, sort_keys=True)
|
|
time_elapsed = time.time() - time_start
|
|
|
|
print('speedtest_serialize_block_rapidjson: {} s'.format(time_elapsed))
|
|
|
|
|
|
def speedtest_deserialize_block_json():
|
|
# create a block
|
|
b = bigchaindb.Bigchain()
|
|
tx = b.create_transaction(b.me, b.me, None, 'CREATE')
|
|
tx_signed = b.sign_transaction(tx, b.me_private)
|
|
block = b.create_block([tx_signed] * 1000)
|
|
block_serialized = json.dumps(block, skipkeys=False, ensure_ascii=False, sort_keys=True)
|
|
|
|
time_start = time.time()
|
|
for _ in range(1000):
|
|
_ = json.loads(block_serialized)
|
|
time_elapsed = time.time() - time_start
|
|
|
|
print('speedtest_deserialize_block_json: {} s'.format(time_elapsed))
|
|
|
|
|
|
def speedtest_deserialize_block_rapidjson():
|
|
# create a block
|
|
b = bigchaindb.Bigchain()
|
|
tx = b.create_transaction(b.me, b.me, None, 'CREATE')
|
|
tx_signed = b.sign_transaction(tx, b.me_private)
|
|
block = b.create_block([tx_signed] * 1000)
|
|
block_serialized = rapidjson.dumps(block, skipkeys=False, ensure_ascii=False, sort_keys=True)
|
|
|
|
time_start = time.time()
|
|
for _ in range(1000):
|
|
_ = rapidjson.loads(block_serialized)
|
|
time_elapsed = time.time() - time_start
|
|
|
|
print('speedtest_deserialize_block_rapidjson: {} s'.format(time_elapsed))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
speedtest_validate_transaction()
|
|
speedtest_serialize_block_json()
|
|
speedtest_serialize_block_rapidjson()
|
|
speedtest_deserialize_block_json()
|
|
speedtest_deserialize_block_rapidjson()
|