From 20e72f18fc22164d4b5885a4f46c6b8ac7d975e2 Mon Sep 17 00:00:00 2001 From: sowle Date: Tue, 1 Nov 2022 00:06:47 +0100 Subject: [PATCH] coretests: 1) ignoring invalid blocks/txs made optional (may be disabled if necessary); 2) hard_fork_2_no_new_structures_before_hf fixed --- tests/core_tests/chaingen.cpp | 25 +++++++++++++++++++++++++ tests/core_tests/chaingen.h | 21 ++++----------------- tests/core_tests/hard_fork_2.cpp | 10 +++++++--- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/tests/core_tests/chaingen.cpp b/tests/core_tests/chaingen.cpp index 0b12b543..49c3f58a 100644 --- a/tests/core_tests/chaingen.cpp +++ b/tests/core_tests/chaingen.cpp @@ -2277,3 +2277,28 @@ bool test_chain_unit_enchanced::check_hardfork_active(currency::core& c, size_t return true; } + +/*static*/ bool test_chain_unit_enchanced::is_event_mark_invalid_block(const test_event_entry& ev, bool use_global_gentime_settings /* = true */) +{ + if (use_global_gentime_settings && !test_generator::get_test_gentime_settings().ignore_invalid_blocks) + return false; + + if (typeid(callback_entry) != ev.type()) + return false; + + const callback_entry& ce = boost::get(ev); + return ce.callback_name == "mark_invalid_block"; +} + +/*static*/ bool test_chain_unit_enchanced::is_event_mark_invalid_tx(const test_event_entry& ev, bool use_global_gentime_settings /* = true */) +{ + if (use_global_gentime_settings && !test_generator::get_test_gentime_settings().ignore_invalid_txs) + return false; + + if (typeid(callback_entry) != ev.type()) + return false; + + const callback_entry& ce = boost::get(ev); + return ce.callback_name == "mark_invalid_tx"; +} + diff --git a/tests/core_tests/chaingen.h b/tests/core_tests/chaingen.h index b092204e..c68e950f 100644 --- a/tests/core_tests/chaingen.h +++ b/tests/core_tests/chaingen.h @@ -221,6 +221,8 @@ struct test_gentime_settings uint64_t dust_threshold = DEFAULT_DUST_THRESHOLD; size_t rss_min_number_of_outputs = CURRENCY_TX_MIN_ALLOWED_OUTS; // for random split strategy: min (target) number of tx outputs, one output will be split into this many parts size_t rss_num_digits_to_keep = CURRENCY_TX_OUTS_RND_SPLIT_DIGITS_TO_KEEP; // for random split strategy: number of digits to keep + bool ignore_invalid_blocks = true; // gen-time blockchain building: don't take into account blocks marked as invalid ("mark_invalid_block") + bool ignore_invalid_txs = true; // gen-time blockchain building: don't take into account txs marked as invalid ("mark_invalid_txs") }; class test_generator; @@ -318,23 +320,8 @@ public: bool check_offers_count(currency::core& c, size_t ev_index, const std::vector& events); bool check_hardfork_active(currency::core& c, size_t ev_index, const std::vector& events); - - static bool is_event_mark_invalid_block(const test_event_entry& ev) - { - if (typeid(callback_entry) != ev.type()) - return false; - const callback_entry& ce = boost::get(ev); - return ce.callback_name == "mark_invalid_block"; - } - - static bool is_event_mark_invalid_tx(const test_event_entry& ev) - { - if (typeid(callback_entry) != ev.type()) - return false; - const callback_entry& ce = boost::get(ev); - return ce.callback_name == "mark_invalid_tx"; - } - + static bool is_event_mark_invalid_block(const test_event_entry& ev, bool use_global_gentime_settings = true); + static bool is_event_mark_invalid_tx(const test_event_entry& ev, bool use_global_gentime_settings = true); protected: struct params_top_block diff --git a/tests/core_tests/hard_fork_2.cpp b/tests/core_tests/hard_fork_2.cpp index 5935968a..03b6addb 100644 --- a/tests/core_tests/hard_fork_2.cpp +++ b/tests/core_tests/hard_fork_2.cpp @@ -740,6 +740,10 @@ hard_fork_2_no_new_structures_before_hf::hard_fork_2_no_new_structures_before_hf bool hard_fork_2_no_new_structures_before_hf::generate(std::vector& events) const { + test_gentime_settings tgs = test_generator::get_test_gentime_settings(); + tgs.ignore_invalid_txs = false; // this test pushes originally invalid tx_0, tx_1 and tx_2 which are good after HF2, so we'd like to avoid mess with the sources among txs + test_generator::set_test_gentime_settings(tgs); + bool r = false; m_accounts.resize(TOTAL_ACCS_COUNT); account_base& miner_acc = m_accounts[MINER_ACC_IDX]; miner_acc.generate(); @@ -830,9 +834,9 @@ bool hard_fork_2_no_new_structures_before_hf::generate(std::vector