Update test_pow for shorter block times

This commit is contained in:
Eirik Ogilvie-Wigley 2019-07-26 10:48:16 -06:00
parent c192e3a75d
commit ff0820df5e
4 changed files with 43 additions and 25 deletions

View File

@ -4,10 +4,10 @@
#include "chainparams.h"
#include "pow.h"
#include "random.h"
#include "utiltest.h"
TEST(PoW, DifficultyAveraging) {
SelectParams(CBaseChainParams::MAIN);
const Consensus::Params& params = Params().GetConsensus();
void TestDifficultyAveragigingImpl(const Consensus::Params& params)
{
size_t lastBlk = 2*params.nPowAveragingWindow;
size_t firstBlk = lastBlk - params.nPowAveragingWindow;
@ -73,6 +73,16 @@ TEST(PoW, DifficultyAveraging) {
GetNextWorkRequired(&blocks[lastBlk], nullptr, params));
}
TEST(PoW, DifficultyAveraging) {
SelectParams(CBaseChainParams::MAIN);
TestDifficultyAveragigingImpl(Params().GetConsensus());
}
TEST(PoW, DifficultyAveragingBlossom) {
TestDifficultyAveragigingImpl(ActivateBlossom(true));
DeactivateBlossom();
}
TEST(PoW, MinDifficultyRules) {
SelectParams(CBaseChainParams::TESTNET);
const Consensus::Params& params = Params().GetConsensus();

View File

@ -5,29 +5,13 @@
#include "main.h"
#include "pow.h"
#include "util.h"
#include "utiltest.h"
#include "test/test_bitcoin.h"
#include <boost/test/unit_test.hpp>
using namespace std;
const Consensus::Params& ActivateBlossom() {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_BLOSSOM, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateRegtestPow(32, 16, uint256S("0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
return Params().GetConsensus();
}
void DeactivateBlossom() {
UpdateRegtestPow(0, 0, uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"));
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_BLOSSOM, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
SelectParams(CBaseChainParams::MAIN);
}
BOOST_FIXTURE_TEST_SUITE(pow_tests, BasicTestingSetup)
/* Test calculation of next difficulty target with no constraints applying */
@ -48,7 +32,7 @@ BOOST_AUTO_TEST_CASE(get_next_work)
BOOST_AUTO_TEST_CASE(get_next_work_blossom)
{
const Consensus::Params& params = ActivateBlossom();
const Consensus::Params& params = ActivateBlossom(true);
BOOST_CHECK_EQUAL(75, params.PoWTargetSpacing(0));
int64_t nLastRetargetTime = 1000000000; // NOTE: Not an actual block time
@ -77,7 +61,7 @@ BOOST_AUTO_TEST_CASE(get_next_work_pow_limit)
BOOST_AUTO_TEST_CASE(get_next_work_pow_limit_blossom)
{
const Consensus::Params& params = ActivateBlossom();
const Consensus::Params& params = ActivateBlossom(true);
int64_t nLastRetargetTime = 1231006505;
int64_t nThisTime = 1233061996;
@ -107,7 +91,7 @@ BOOST_AUTO_TEST_CASE(get_next_work_lower_limit_actual)
BOOST_AUTO_TEST_CASE(get_next_work_lower_limit_actual_blossom)
{
const Consensus::Params& params = ActivateBlossom();
const Consensus::Params& params = ActivateBlossom(true);
int64_t nLastRetargetTime = 1000000000; // NOTE: Not an actual block time
int64_t nThisTime = 1000000458;
@ -136,7 +120,7 @@ BOOST_AUTO_TEST_CASE(get_next_work_upper_limit_actual)
BOOST_AUTO_TEST_CASE(get_next_work_upper_limit_actual_blossom)
{
const Consensus::Params& params = ActivateBlossom();
const Consensus::Params& params = ActivateBlossom(true);
int64_t nLastRetargetTime = 1000000000; // NOTE: Not an actual block time
int64_t nThisTime = 1000002908;
@ -176,7 +160,7 @@ BOOST_AUTO_TEST_CASE(GetBlockProofEquivalentTime_test)
BOOST_AUTO_TEST_CASE(GetBlockProofEquivalentTime_test_blossom)
{
GetBlockProofEquivalentTimeImpl(ActivateBlossom());
GetBlockProofEquivalentTimeImpl(ActivateBlossom(true));
DeactivateBlossom();
}

View File

@ -200,6 +200,26 @@ void RegtestDeactivateSapling() {
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
}
const Consensus::Params& ActivateBlossom(bool updatePow) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_BLOSSOM, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
if (updatePow) {
UpdateRegtestPow(32, 16, uint256S("0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
}
return Params().GetConsensus();
}
void DeactivateBlossom() {
UpdateRegtestPow(0, 0, uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"));
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_BLOSSOM, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
SelectParams(CBaseChainParams::MAIN);
}
libzcash::SaplingExtendedSpendingKey GetTestMasterSaplingSpendingKey() {
std::vector<unsigned char, secure_allocator<unsigned char>> rawSeed(32);
HDSeed seed(rawSeed);

View File

@ -43,6 +43,10 @@ const Consensus::Params& RegtestActivateSapling();
void RegtestDeactivateSapling();
const Consensus::Params& ActivateBlossom(bool updatePow);
void DeactivateBlossom();
libzcash::SaplingExtendedSpendingKey GetTestMasterSaplingSpendingKey();
CKey AddTestCKeyToKeyStore(CBasicKeyStore& keyStore);