From 5f5a1a186048b511722df2501632ee8a30a2268a Mon Sep 17 00:00:00 2001 From: satyakoneru Date: Wed, 12 Feb 2020 11:29:52 +0000 Subject: [PATCH] SON131 - Compilation fix and adding new operation in tests --- libraries/chain/db_init.cpp | 1 + .../chain/sidechain_transaction_evaluator.cpp | 6 +- programs/js_operation_serializer/main.cpp | 1 + tests/tests/sidechain_transaction_tests.cpp | 68 +++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) diff --git a/libraries/chain/db_init.cpp b/libraries/chain/db_init.cpp index ae505b18..d098d9e7 100644 --- a/libraries/chain/db_init.cpp +++ b/libraries/chain/db_init.cpp @@ -266,6 +266,7 @@ void database::initialize_evaluators() register_evaluator(); register_evaluator(); register_evaluator(); + register_evaluator(); } void database::initialize_indexes() diff --git a/libraries/chain/sidechain_transaction_evaluator.cpp b/libraries/chain/sidechain_transaction_evaluator.cpp index 8b507e96..e644d91e 100644 --- a/libraries/chain/sidechain_transaction_evaluator.cpp +++ b/libraries/chain/sidechain_transaction_evaluator.cpp @@ -106,7 +106,7 @@ void_result bitcoin_send_transaction_process_evaluator::do_evaluate(const bitcoi { FC_ASSERT(db().head_block_time() >= HARDFORK_SON_TIME, "Not allowed until SON HARDFORK"); // can be removed after HF date pass FC_ASSERT(op.payer == db().get_global_properties().parameters.get_son_btc_account_id(), "Payer should be the son btc account"); - const auto &btidx = db.get_index_type().indices().get(); + const auto& btidx = db().get_index_type().indices().get(); const auto btobj = btidx.find(op.bitcoin_transaction_id); FC_ASSERT(btobj != btidx.end(), "Bitcoin Transaction Object not found"); FC_ASSERT(btobj->processed == false, "Bitcoin Transaction already processed"); @@ -119,9 +119,9 @@ object_id_type bitcoin_send_transaction_process_evaluator::do_apply(const bitcoi { try { - const auto &btidx = db.get_index_type().indices().get(); + const auto &btidx = db().get_index_type().indices().get(); auto btobj = btidx.find(op.bitcoin_transaction_id); - if (btobj != btindx.end()) + if (btobj != btidx.end()) { db().modify(*btobj, [&op](bitcoin_transaction_object &bto) { bto.processed = true; diff --git a/programs/js_operation_serializer/main.cpp b/programs/js_operation_serializer/main.cpp index 04a94827..0edaaa10 100644 --- a/programs/js_operation_serializer/main.cpp +++ b/programs/js_operation_serializer/main.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include diff --git a/tests/tests/sidechain_transaction_tests.cpp b/tests/tests/sidechain_transaction_tests.cpp index 8771ca7b..800289e5 100644 --- a/tests/tests/sidechain_transaction_tests.cpp +++ b/tests/tests/sidechain_transaction_tests.cpp @@ -291,6 +291,74 @@ BOOST_AUTO_TEST_CASE(bitcoin_transaction_send_test) BOOST_REQUIRE(sigs[son_obj2->id][0] == b1); BOOST_REQUIRE(sigs[son_obj2->id][1] == b2); BOOST_REQUIRE(sigs[son_obj2->id][2] == b3); + + { + BOOST_TEST_MESSAGE("Send bitcoin_send_transaction_process_operation"); + + bitcoin_send_transaction_process_operation process_op; + process_op.bitcoin_transaction_id = bitcoin_transaction_id_type(0); + process_op.payer = db.get_global_properties().parameters.get_son_btc_account_id(); + + proposal_create_operation proposal_op; + proposal_op.fee_paying_account = alice_id; + proposal_op.proposed_ops.push_back(op_wrapper(process_op)); + uint32_t lifetime = (gpo.parameters.block_interval * gpo.active_witnesses.size()) * 3; + proposal_op.expiration_time = time_point_sec(db.head_block_time().sec_since_epoch() + lifetime); + + trx.operations.push_back(proposal_op); + set_expiration(db, trx); + sign(trx, alice_private_key); + PUSH_TX(db, trx, ~0); + trx.clear(); + } + + generate_block(); + BOOST_REQUIRE(idx.size() == 1); + obj = idx.find(proposal_id_type(1)); + BOOST_REQUIRE(obj != idx.end()); + + + { + BOOST_TEST_MESSAGE("Send proposal_update_operation"); + + proposal_update_operation puo; + puo.fee_paying_account = bob_id; + puo.proposal = obj->id; + puo.active_approvals_to_add = { bob_id }; + + trx.operations.push_back(puo); + set_expiration(db, trx); + sign(trx, bob_private_key); + PUSH_TX(db, trx, ~0); + trx.clear(); + } + generate_block(); + BOOST_REQUIRE(idx.size() == 1); + obj = idx.find(proposal_id_type(1)); + BOOST_REQUIRE(obj != idx.end()); + + BOOST_REQUIRE(btobj != btidx.end()); + BOOST_REQUIRE(btobj->processed == false); + + { + BOOST_TEST_MESSAGE("Send proposal_update_operation"); + + proposal_update_operation puo; + puo.fee_paying_account = alice_id; + puo.proposal = obj->id; + puo.active_approvals_to_add = { alice_id }; + + trx.operations.push_back(puo); + set_expiration(db, trx); + sign(trx, alice_private_key); + PUSH_TX(db, trx, ~0); + trx.clear(); + } + generate_block(); + BOOST_REQUIRE(idx.size() == 0); + + BOOST_REQUIRE(btobj != btidx.end()); + BOOST_REQUIRE(btobj->processed == true); } FC_LOG_AND_RETHROW() }