diff --git a/src/currency_core/core_runtime_config.h b/src/currency_core/core_runtime_config.h index 65833895..d25bb34f 100644 --- a/src/currency_core/core_runtime_config.h +++ b/src/currency_core/core_runtime_config.h @@ -16,6 +16,11 @@ namespace currency std::array m_height_the_hardfork_n_active_after; hard_forks_descriptor() + { + clear(); + } + + void clear() { m_height_the_hardfork_n_active_after.fill(CURRENCY_MAX_BLOCK_NUMBER); } diff --git a/tests/core_tests/atomic_tests.cpp b/tests/core_tests/atomic_tests.cpp index bf852eda..a6176fc1 100644 --- a/tests/core_tests/atomic_tests.cpp +++ b/tests/core_tests/atomic_tests.cpp @@ -39,6 +39,10 @@ atomic_base_test::atomic_base_test() { REGISTER_CALLBACK_METHOD(atomic_base_test, c1); REGISTER_CALLBACK_METHOD(atomic_base_test, configure_core); + + m_hardforks.set_hardfork_height(1, 10); + m_hardforks.set_hardfork_height(2, 11); + m_hardforks.set_hardfork_height(3, 12); } bool atomic_base_test::generate(std::vector& events) const @@ -59,7 +63,8 @@ bool atomic_base_test::generate(std::vector& events) const block blk_0 = AUTO_VAL_INIT(blk_0); generator.construct_genesis_block(blk_0, genesis_acc, test_core_time::get_time()); events.push_back(blk_0); - DO_CALLBACK(events, "configure_core"); + set_hard_fork_heights_to_generator(generator); + DO_CALLBACK(events, "configure_core"); // default callback will initialize core current runtime config with m_hardforks REWIND_BLOCKS_N(events, blk_0r, blk_0, m_mining_accunt, CURRENCY_MINED_MONEY_UNLOCK_WINDOW + 5); DO_CALLBACK(events, "c1"); @@ -67,18 +72,6 @@ bool atomic_base_test::generate(std::vector& events) const return true; } -bool atomic_base_test::configure_core(currency::core& c, size_t ev_index, const std::vector& events) -{ - currency::core_runtime_config pc = c.get_blockchain_storage().get_core_runtime_config(); - pc.min_coinstake_age = TESTS_POS_CONFIG_MIN_COINSTAKE_AGE; //four blocks - pc.pos_minimum_heigh = TESTS_POS_CONFIG_POS_MINIMUM_HEIGH; //four blocks - - pc.hard_forks.set_hardfork_height(1, 10); - pc.hard_forks.set_hardfork_height(2, 11); - pc.hard_forks.set_hardfork_height(3, 12); - c.get_blockchain_storage().set_core_runtime_config(pc); - return true; -} /************************************************************************/ /* */ /************************************************************************/ @@ -630,18 +623,16 @@ bool atomic_test_altchain_simple::c1(currency::core& c, size_t ev_index, const s return true; } +//------------------------------------------------------------------------------ -bool atomic_test_check_hardfork_rules::configure_core(currency::core& c, size_t ev_index, const std::vector& events) +atomic_test_check_hardfork_rules::atomic_test_check_hardfork_rules() { - currency::core_runtime_config pc = c.get_blockchain_storage().get_core_runtime_config(); - pc.min_coinstake_age = TESTS_POS_CONFIG_MIN_COINSTAKE_AGE; //four blocks - pc.pos_minimum_heigh = TESTS_POS_CONFIG_POS_MINIMUM_HEIGH; //four blocks - pc.hard_forks.set_hardfork_height(1, 10); - pc.hard_forks.set_hardfork_height(2, 10); - pc.hard_forks.set_hardfork_height(3, 10); - c.get_blockchain_storage().set_core_runtime_config(pc); - return true; + m_hardforks.clear(); + m_hardforks.set_hardfork_height(1, 10); + m_hardforks.set_hardfork_height(2, 10); + m_hardforks.set_hardfork_height(3, 10); } + bool atomic_test_check_hardfork_rules::c1(currency::core& c, size_t ev_index, const std::vector& events) { //epee::debug::get_set_enable_assert(true, true); diff --git a/tests/core_tests/atomic_tests.h b/tests/core_tests/atomic_tests.h index e650def4..0476ddcb 100644 --- a/tests/core_tests/atomic_tests.h +++ b/tests/core_tests/atomic_tests.h @@ -12,7 +12,6 @@ struct atomic_base_test : public wallet_test atomic_base_test(); bool generate(std::vector& events) const; virtual bool c1(currency::core& c, size_t ev_index, const std::vector& events)=0; - virtual bool configure_core(currency::core& c, size_t ev_index, const std::vector& events); protected: mutable uint64_t m_genesis_timestamp; mutable currency::account_base m_mining_accunt; @@ -21,27 +20,27 @@ protected: struct atomic_simple_test : public atomic_base_test { - bool c1(currency::core& c, size_t ev_index, const std::vector& events); + bool c1(currency::core& c, size_t ev_index, const std::vector& events) override; private: }; struct atomic_test_wrong_redeem_wrong_refund : public atomic_base_test { - bool c1(currency::core& c, size_t ev_index, const std::vector& events); + bool c1(currency::core& c, size_t ev_index, const std::vector& events) override; private: }; struct atomic_test_altchain_simple : public atomic_base_test { - bool c1(currency::core& c, size_t ev_index, const std::vector& events); + bool c1(currency::core& c, size_t ev_index, const std::vector& events) override; private: }; struct atomic_test_check_hardfork_rules : public atomic_base_test { - bool c1(currency::core& c, size_t ev_index, const std::vector& events); - virtual bool configure_core(currency::core& c, size_t ev_index, const std::vector& events); + atomic_test_check_hardfork_rules(); + bool c1(currency::core& c, size_t ev_index, const std::vector& events) override; private: }; diff --git a/tests/core_tests/wallet_rpc_tests.cpp b/tests/core_tests/wallet_rpc_tests.cpp index a953576a..ec867687 100644 --- a/tests/core_tests/wallet_rpc_tests.cpp +++ b/tests/core_tests/wallet_rpc_tests.cpp @@ -194,6 +194,10 @@ wallet_rpc_transfer::wallet_rpc_transfer() { REGISTER_CALLBACK_METHOD(wallet_rpc_transfer, configure_core); REGISTER_CALLBACK_METHOD(wallet_rpc_transfer, c1); + + m_hardforks.set_hardfork_height(1, 1); + m_hardforks.set_hardfork_height(2, 1); + m_hardforks.set_hardfork_height(3, 1); } bool wallet_rpc_transfer::generate(std::vector& events) const @@ -204,7 +208,7 @@ bool wallet_rpc_transfer::generate(std::vector& events) const account_base& bob_acc = m_accounts[BOB_ACC_IDX]; bob_acc.generate(); MAKE_GENESIS_BLOCK(events, blk_0, miner_acc, test_core_time::get_time()); - DO_CALLBACK(events, "configure_core"); + DO_CALLBACK(events, "configure_core"); // default callback will initialize core runtime config with m_hardforks set_hard_fork_heights_to_generator(generator); REWIND_BLOCKS_N(events, blk_0r, blk_0, miner_acc, CURRENCY_MINED_MONEY_UNLOCK_WINDOW + 6); @@ -213,16 +217,6 @@ bool wallet_rpc_transfer::generate(std::vector& events) const return true; } -bool wallet_rpc_transfer::configure_core(currency::core& c, size_t ev_index, const std::vector& events) -{ - currency::core_runtime_config pc = c.get_blockchain_storage().get_core_runtime_config(); - pc.hard_forks.set_hardfork_height(1, 1); - pc.hard_forks.set_hardfork_height(2, 1); - pc.hard_forks.set_hardfork_height(3, 1); - c.get_blockchain_storage().set_core_runtime_config(pc); - return true; -} - bool wallet_rpc_transfer::c1(currency::core& c, size_t ev_index, const std::vector& events) { bool r = false; diff --git a/tests/core_tests/wallet_rpc_tests.h b/tests/core_tests/wallet_rpc_tests.h index 1c0ea50c..32d71571 100644 --- a/tests/core_tests/wallet_rpc_tests.h +++ b/tests/core_tests/wallet_rpc_tests.h @@ -26,6 +26,5 @@ struct wallet_rpc_transfer : public wallet_test { wallet_rpc_transfer(); bool generate(std::vector& events) const; - bool configure_core(currency::core& c, size_t ev_index, const std::vector& events); bool c1(currency::core& c, size_t ev_index, const std::vector& events); }; diff --git a/tests/core_tests/zarcanum_test.cpp b/tests/core_tests/zarcanum_test.cpp index 623e7725..20d1b48b 100644 --- a/tests/core_tests/zarcanum_test.cpp +++ b/tests/core_tests/zarcanum_test.cpp @@ -19,6 +19,11 @@ zarcanum_basic_test::zarcanum_basic_test() { REGISTER_CALLBACK_METHOD(zarcanum_basic_test, configure_core); REGISTER_CALLBACK_METHOD(zarcanum_basic_test, c1); + + m_hardforks.set_hardfork_height(1, 1); + m_hardforks.set_hardfork_height(2, 1); + m_hardforks.set_hardfork_height(3, 1); + m_hardforks.set_hardfork_height(4, 14); } bool zarcanum_basic_test::generate(std::vector& events) const @@ -28,7 +33,7 @@ bool zarcanum_basic_test::generate(std::vector& events) const miner_acc.generate(); MAKE_GENESIS_BLOCK(events, blk_0, miner_acc, test_core_time::get_time()); - DO_CALLBACK(events, "configure_core"); + DO_CALLBACK(events, "configure_core"); // default configure_core callback will initialize core runtime config with m_hardforks set_hard_fork_heights_to_generator(generator); //TODO: Need to make sure REWIND_BLOCKS_N and other coretests codebase are capable of following hardfork4 rules //in this test hardfork4 moment moved to runtime section @@ -39,17 +44,6 @@ bool zarcanum_basic_test::generate(std::vector& events) const return true; } -bool zarcanum_basic_test::configure_core(currency::core& c, size_t ev_index, const std::vector& events) -{ - currency::core_runtime_config pc = c.get_blockchain_storage().get_core_runtime_config(); - pc.hard_forks.set_hardfork_height(1, 1); - pc.hard_forks.set_hardfork_height(2, 1); - pc.hard_forks.set_hardfork_height(3, 1); - pc.hard_forks.set_hardfork_height(4, 14); - c.get_blockchain_storage().set_core_runtime_config(pc); - return true; -} - bool zarcanum_basic_test::c1(currency::core& c, size_t ev_index, const std::vector& events) { bool r = false; diff --git a/tests/core_tests/zarcanum_test.h b/tests/core_tests/zarcanum_test.h index 4f19a653..a6e2b200 100644 --- a/tests/core_tests/zarcanum_test.h +++ b/tests/core_tests/zarcanum_test.h @@ -12,6 +12,5 @@ struct zarcanum_basic_test : public wallet_test { zarcanum_basic_test(); bool generate(std::vector& events) const; - bool configure_core(currency::core& c, size_t ev_index, const std::vector& events); bool c1(currency::core& c, size_t ev_index, const std::vector& events); };