From ebf5486513a605b4d3006ae849fefeb271d7e9a6 Mon Sep 17 00:00:00 2001 From: sowle Date: Wed, 28 Apr 2021 07:00:32 +0300 Subject: [PATCH] 1) test_chain_unit_enchanced::check_hardfork_active implemented, 2) core runtime config minor improvement --- src/currency_core/core_runtime_config.h | 12 ++++++++++++ tests/core_tests/chaingen.cpp | 18 ++++++++++++++++++ tests/core_tests/chaingen.h | 2 ++ 3 files changed, 32 insertions(+) diff --git a/src/currency_core/core_runtime_config.h b/src/currency_core/core_runtime_config.h index 1f8302a5..a2bbe84d 100644 --- a/src/currency_core/core_runtime_config.h +++ b/src/currency_core/core_runtime_config.h @@ -26,6 +26,18 @@ namespace currency uint64_t hard_fork_02_starts_after_height; uint64_t hard_fork_03_starts_after_height; + bool is_hardfork_active_for_height(size_t hardfork_id, uint64_t height) const + { + switch (hardfork_id) + { + case 0: return true; + case 1: return height > hard_fork_01_starts_after_height; + case 2: return height > hard_fork_02_starts_after_height; + case 3: return height > hard_fork_03_starts_after_height; + default: return false; + } + } + static uint64_t _default_core_time_function() { return time(NULL); diff --git a/tests/core_tests/chaingen.cpp b/tests/core_tests/chaingen.cpp index bbd61e4c..dd74c3cf 100644 --- a/tests/core_tests/chaingen.cpp +++ b/tests/core_tests/chaingen.cpp @@ -2099,6 +2099,7 @@ test_chain_unit_enchanced::test_chain_unit_enchanced() REGISTER_CALLBACK_METHOD(test_chain_unit_enchanced, print_tx_pool); REGISTER_CALLBACK_METHOD(test_chain_unit_enchanced, remove_stuck_txs); REGISTER_CALLBACK_METHOD(test_chain_unit_enchanced, check_offers_count); + REGISTER_CALLBACK_METHOD(test_chain_unit_enchanced, check_hardfork_active); } bool test_chain_unit_enchanced::configure_core(currency::core& c, size_t ev_index, const std::vector& events) @@ -2118,6 +2119,7 @@ void test_chain_unit_enchanced::set_hard_fork_heights_to_generator(test_generato { generator.set_hardfork_height(1, m_hardfork_01_height); generator.set_hardfork_height(2, m_hardfork_02_height); + generator.set_hardfork_height(3, m_hardfork_03_height); } bool test_chain_unit_enchanced::check_top_block(currency::core& c, size_t ev_index, const std::vector& events) @@ -2232,3 +2234,19 @@ bool test_chain_unit_enchanced::check_offers_count(currency::core& c, size_t ev_ return true; } + +bool test_chain_unit_enchanced::check_hardfork_active(currency::core& c, size_t ev_index, const std::vector& events) +{ + size_t hardfork_id_to_check = 0; + const std::string& params = boost::get(events[ev_index]).callback_params; + CHECK_AND_ASSERT_MES(epee::string_tools::hex_to_pod(params, hardfork_id_to_check), false, "hex_to_pod failed, params = " << params); + + uint64_t top_block_height = c.get_top_block_height(); + if (!c.get_blockchain_storage().get_core_runtime_config().is_hardfork_active_for_height(hardfork_id_to_check, top_block_height)) + { + LOG_ERROR("Hardfork #" << hardfork_id_to_check << " is not active yet (top block height is " << top_block_height << ")"); + return false; + } + + return true; +} diff --git a/tests/core_tests/chaingen.h b/tests/core_tests/chaingen.h index bcb04550..8ccec794 100644 --- a/tests/core_tests/chaingen.h +++ b/tests/core_tests/chaingen.h @@ -308,6 +308,7 @@ public: bool print_tx_pool(currency::core& c, size_t ev_index, const std::vector& events); bool remove_stuck_txs(currency::core& c, size_t ev_index, const std::vector& events); 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); protected: struct params_top_block @@ -322,6 +323,7 @@ protected: size_t m_unverifiable_tx_index; size_t m_orphan_block_index; + // the following members is intended to be set by coretests with specific HF-related needs uint64_t m_hardfork_01_height; uint64_t m_hardfork_02_height; uint64_t m_hardfork_03_height;