diff --git a/src/avalanche/test/CMakeLists.txt b/src/avalanche/test/CMakeLists.txt index 2749279ee..9939c8304 100644 --- a/src/avalanche/test/CMakeLists.txt +++ b/src/avalanche/test/CMakeLists.txt @@ -1,24 +1,25 @@ # Copyright (c) 2020 The Bitcoin developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. project(avalanche-test) include(TestSuite) create_test_suite(avalanche) add_dependencies(check check-avalanche) add_boost_unit_tests_to_suite(avalanche test-avalanche fixture.cpp util.cpp TESTS delegation_tests.cpp + init_tests.cpp peermanager_tests.cpp processor_tests.cpp proof_tests.cpp proofcomparator_tests.cpp proofpool_tests.cpp ) target_link_libraries(test-avalanche server testutil) diff --git a/src/avalanche/test/init_tests.cpp b/src/avalanche/test/init_tests.cpp new file mode 100644 index 000000000..899feb577 --- /dev/null +++ b/src/avalanche/test/init_tests.cpp @@ -0,0 +1,99 @@ +// Copyright (c) 2022 The Bitcoin developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include + +BOOST_FIXTURE_TEST_SUITE(init_tests, BasicTestingSetup) + +BOOST_AUTO_TEST_CASE(avalanche_flag_tests) { + gArgs.ForceSetArg("-ecash", "1"); + const Amount tenBillion = 10'000'000'000 * Currency::get().baseunit; + + auto getAvaMinQuorumStakeAmount = [](const ArgsManager &args, + const Amount defaultAmount) { + Amount avaminquorumstake; + BOOST_CHECK(ParseMoney( + args.GetArg("-avaminquorumstake", FormatMoney(defaultAmount)), + avaminquorumstake)); + return avaminquorumstake; + }; + + { + // Check the feature flags when avalanche is set + ArgsManager args; + args.ForceSetArg("-avalanche", "1"); + InitParameterInteraction(args); + + BOOST_CHECK_EQUAL(args.GetBoolArg("-enableavalanche", false), true); + BOOST_CHECK_EQUAL(args.GetBoolArg("-legacyavaproof", true), false); + BOOST_CHECK_EQUAL( + args.GetBoolArg("-enableavalanchepeerdiscovery", false), true); + BOOST_CHECK_EQUAL( + args.GetBoolArg("-enableavalancheproofreplacement", false), true); + BOOST_CHECK_EQUAL(args.GetBoolArg("-automaticunparking", true), false); + BOOST_CHECK_EQUAL(getAvaMinQuorumStakeAmount(args, 42 * COIN), + tenBillion); + BOOST_CHECK_EQUAL( + args.GetArg("-avaminquorumconnectedstakeratio", "0.42"), "0.8"); + } + + { + // Check the feature flags when avalanche is reset + ArgsManager args; + args.ForceSetArg("-avalanche", "0"); + InitParameterInteraction(args); + + BOOST_CHECK_EQUAL(args.GetBoolArg("-enableavalanche", true), false); + BOOST_CHECK_EQUAL(args.GetBoolArg("-legacyavaproof", false), + AVALANCHE_DEFAULT_LEGACY_PROOF); + BOOST_CHECK_EQUAL( + args.GetBoolArg("-enableavalanchepeerdiscovery", true), false); + BOOST_CHECK_EQUAL( + args.GetBoolArg("-enableavalancheproofreplacement", true), false); + BOOST_CHECK_EQUAL(args.GetBoolArg("-automaticunparking", false), true); + BOOST_CHECK_EQUAL(getAvaMinQuorumStakeAmount(args, tenBillion), + AVALANCHE_DEFAULT_MIN_QUORUM_STAKE); + BOOST_CHECK_EQUAL( + args.GetArg("-avaminquorumconnectedstakeratio", "0.8"), + ToString(AVALANCHE_DEFAULT_MIN_QUORUM_CONNECTED_STAKE_RATIO)); + } + + { + // Check the feature flags can always be overridden + ArgsManager args; + args.ForceSetArg("-avalanche", "1"); + args.ForceSetArg("-legacyavaproof", "1"); + args.ForceSetArg("-enableavalancheproofreplacement", "0"); + args.ForceSetArg("-automaticunparking", "1"); + args.ForceSetArg("-avaminquorumstake", FormatMoney(123 * COIN)); + InitParameterInteraction(args); + + BOOST_CHECK_EQUAL(args.GetBoolArg("-enableavalanche", false), true); + BOOST_CHECK_EQUAL(args.GetBoolArg("-legacyavaproof", false), true); + BOOST_CHECK_EQUAL( + args.GetBoolArg("-enableavalanchepeerdiscovery", false), true); + BOOST_CHECK_EQUAL( + args.GetBoolArg("-enableavalancheproofreplacement", true), false); + BOOST_CHECK_EQUAL(args.GetBoolArg("-automaticunparking", false), true); + BOOST_CHECK_EQUAL(getAvaMinQuorumStakeAmount(args, tenBillion), + 123 * COIN); + BOOST_CHECK_EQUAL( + args.GetArg("-avaminquorumconnectedstakeratio", "0.42"), "0.8"); + } + + gArgs.ClearForcedArg("-ecash"); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/init.cpp b/src/init.cpp index 325633796..717a27e99 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1,3200 +1,3228 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #if defined(HAVE_CONFIG_H) #include #endif #include #include #include #include #include #include // For AVALANCHE_LEGACY_PROOF_DEFAULT #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include