From 2f09eec36823fc6bf312013b7823926e696b5b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Eckel?= Date: Sun, 15 Jan 2023 20:12:44 +0100 Subject: [PATCH] store transactions of various versions (backwardcompatibility) added _bdb variable to init/drop DBs for the single use cases (started failing as TXs are looked up in DB - compared to before) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jürgen Eckel --- planetmint/backend/tarantool/query.py | 6 ++++-- tests/assets/test_digital_assets.py | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/planetmint/backend/tarantool/query.py b/planetmint/backend/tarantool/query.py index bcb7895..be1dd05 100644 --- a/planetmint/backend/tarantool/query.py +++ b/planetmint/backend/tarantool/query.py @@ -36,6 +36,7 @@ from planetmint.backend.tarantool.const import ( from planetmint.backend.utils import module_dispatch_registrar from planetmint.backend.models import Asset, Block, Output from planetmint.backend.tarantool.connection import TarantoolDBConnection +from transactions.common.transaction import Transaction logger = logging.getLogger(__name__) @@ -127,12 +128,13 @@ def store_transaction(connection, transaction, table = TARANT_TABLE_TRANSACTION) scripts = None if TARANT_TABLE_SCRIPT in transaction: scripts = transaction[TARANT_TABLE_SCRIPT] + asset_obj = Transaction.get_assets_tag(transaction["version"]) tx = ( transaction["id"], transaction["operation"], transaction["version"], transaction["metadata"], - transaction["assets"], + transaction[asset_obj], transaction["inputs"], scripts, ) @@ -148,7 +150,7 @@ def store_transaction(connection, transaction, table = TARANT_TABLE_TRANSACTION) @register_query(TarantoolDBConnection) def get_transaction_by_id(connection, transaction_id, table=TARANT_TABLE_TRANSACTION): - txs = connection.run(connection.space(table).select(transaction_id, index=TARANT_ID_SEARCH)) + txs = connection.run(connection.space(table).select(transaction_id, index=TARANT_ID_SEARCH), only_data=False) if len(txs) == 0: return None return DbTransaction.from_tuple(txs[0]) diff --git a/tests/assets/test_digital_assets.py b/tests/assets/test_digital_assets.py index 6d63211..02507d5 100644 --- a/tests/assets/test_digital_assets.py +++ b/tests/assets/test_digital_assets.py @@ -9,7 +9,7 @@ from transactions.types.assets.create import Create from transactions.types.assets.transfer import Transfer -def test_asset_transfer(b, signed_create_tx, user_pk, user_sk): +def test_asset_transfer(b, signed_create_tx, user_pk, user_sk, _bdb): tx_transfer = Transfer.generate(signed_create_tx.to_inputs(), [([user_pk], 1)], [signed_create_tx.id]) tx_transfer_signed = tx_transfer.sign([user_sk]) @@ -24,7 +24,7 @@ def test_asset_transfer(b, signed_create_tx, user_pk, user_sk): # from planetmint.transactions.common.exceptions import AssetIdMismatch -def test_validate_transfer_asset_id_mismatch(b, signed_create_tx, user_pk, user_sk): +def test_validate_transfer_asset_id_mismatch(b, signed_create_tx, user_pk, user_sk,_bdb): from transactions.common.exceptions import AssetIdMismatch tx_transfer = Transfer.generate(signed_create_tx.to_inputs(), [([user_pk], 1)], [signed_create_tx.id]) @@ -69,22 +69,22 @@ def test_asset_id_mismatch(alice, user_pk): Transaction.get_asset_id([tx1, tx2]) -def test_create_valid_divisible_asset(b, user_pk, user_sk): +def test_create_valid_divisible_asset(b, user_pk, user_sk, _bdb): tx = Create.generate([user_pk], [([user_pk], 2)]) tx_signed = tx.sign([user_sk]) assert b.validate_transaction(tx_signed) == tx_signed -def test_v_2_0_validation_create(b, signed_2_0_create_tx): +def test_v_2_0_validation_create(b, signed_2_0_create_tx, _bdb): validated = b.validate_transaction(signed_2_0_create_tx) assert validated.to_dict() == signed_2_0_create_tx -def test_v_2_0_validation_create_invalid(b, signed_2_0_create_tx_assets): +def test_v_2_0_validation_create_invalid(b, signed_2_0_create_tx_assets, _bdb): assert b.validate_transaction(signed_2_0_create_tx_assets) -def test_v_2_0_validation_transfer(b, signed_2_0_create_tx, signed_2_0_transfer_tx): +def test_v_2_0_validation_transfer(b, signed_2_0_create_tx, signed_2_0_transfer_tx, _bdb): validated = b.validate_transaction(signed_2_0_create_tx) b.store_bulk_transactions([validated]) assert validated.to_dict() == signed_2_0_create_tx