Bitcoin ABC  0.26.3
P2P Digital Currency
stakingrewards_tests.cpp
Go to the documentation of this file.
1 // Copyright (c) 2023 The Bitcoin developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include <avalanche/avalanche.h>
6 #include <avalanche/processor.h>
7 #include <chainparams.h>
8 #include <consensus/activation.h>
9 #include <net_processing.h>
11 
12 #include <test/util/blockindex.h>
13 #include <test/util/setup_common.h>
14 
15 #include <boost/test/unit_test.hpp>
16 
17 struct StakingRewardsActivationTestingSetup : public TestingSetup {
18  void checkStakingRewardsActivation(const std::string &net,
19  const bool expectActivation) {
20  SelectParams(net);
21  const Consensus::Params &params = Params().GetConsensus();
22 
23  gArgs.ForceSetArg("-avalanche", "1");
24 
27  *m_node.args, *m_node.chain, m_node.connman.get(),
28  *Assert(m_node.chainman), m_node.mempool.get(), *m_node.scheduler,
29  error);
30 
33 
34  // Before Cowperthwaite activation
35  const auto activationHeight = params.cowperthwaiteHeight;
36 
37  CBlockIndex block;
38  block.nHeight = activationHeight - 1;
39  BOOST_CHECK(!IsStakingRewardsActivated(params, &block));
40 
41  block.nHeight = activationHeight;
43  expectActivation);
44 
45  block.nHeight = activationHeight + 1;
47  expectActivation);
48 
49  // If avalanche is disabled, staking rewards are disabled
50  gArgs.ForceSetArg("-avalanche", "0");
52  BOOST_CHECK(!IsStakingRewardsActivated(params, &block));
53 
54  gArgs.ForceSetArg("-avalanche", "1");
57  expectActivation);
58 
59  // If g_avalanche is null, staking rewards are disabled
60  g_avalanche.reset(nullptr);
62  BOOST_CHECK(!IsStakingRewardsActivated(params, &block));
63 
64  gArgs.ClearForcedArg("-avalanche");
65  }
66 };
67 
68 BOOST_FIXTURE_TEST_SUITE(stakingrewards_tests,
70 
71 BOOST_AUTO_TEST_CASE(isstakingrewardsactivated) {
72  checkStakingRewardsActivation("regtest", false);
73  checkStakingRewardsActivation("test", false);
74  checkStakingRewardsActivation("main", true);
75 }
76 
bool isAvalancheEnabled(const ArgsManager &argsman)
Definition: avalanche.cpp:9
std::unique_ptr< avalanche::Processor > g_avalanche
Global avalanche instance.
Definition: processor.cpp:38
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given BIP70 chain name.
const CChainParams & Params()
Return the currently selected parameters.
#define Assert(val)
Identity function.
Definition: check.h:84
void ForceSetArg(const std::string &strArg, const std::string &strValue)
Definition: system.cpp:706
void ClearForcedArg(const std::string &strArg)
Remove a forced arg setting, used only in testing.
Definition: system.cpp:757
The block chain is a tree shaped structure starting with the genesis block at the root,...
Definition: blockindex.h:26
int nHeight
height of the entry in the chain. The genesis block has height 0
Definition: blockindex.h:39
const Consensus::Params & GetConsensus() const
Definition: chainparams.h:86
static std::unique_ptr< Processor > MakeProcessor(const ArgsManager &argsman, interfaces::Chain &chain, CConnman *connman, ChainstateManager &chainman, CTxMemPool *mempoolIn, CScheduler &scheduler, bilingual_str &error)
Definition: processor.cpp:220
NodeContext & m_node
Definition: interfaces.cpp:779
#define BOOST_AUTO_TEST_SUITE_END()
Definition: object.cpp:16
#define BOOST_CHECK_EQUAL(v1, v2)
Definition: object.cpp:18
#define BOOST_AUTO_TEST_CASE(funcName)
Definition: object.cpp:15
#define BOOST_CHECK(expr)
Definition: object.cpp:17
bool IsStakingRewardsActivated(const Consensus::Params &params, const CBlockIndex *pprev)
BOOST_FIXTURE_TEST_SUITE(stakingrewards_tests, StakingRewardsActivationTestingSetup) BOOST_AUTO_TEST_CASE(isstakingrewardsactivated)
Parameters that influence chain consensus.
Definition: params.h:34
int cowperthwaiteHeight
Block height at which the Cowperthwaite activation becomes active.
Definition: params.h:63
void checkStakingRewardsActivation(const std::string &net, const bool expectActivation)
Bilingual messages:
Definition: translation.h:17
ArgsManager gArgs
Definition: system.cpp:80
bool error(const char *fmt, const Args &...args)
Definition: system.h:45