Move reusable Sapling test setup to utiltest

This commit is contained in:
Eirik Ogilvie-Wigley 2018-11-06 15:53:04 -07:00
parent 89e75c8c0d
commit c3e2de5959
8 changed files with 58 additions and 96 deletions

View File

@ -3,6 +3,7 @@
#include "consensus/validation.h"
#include "main.h"
#include "utiltest.h"
#include "zcash/Proof.hpp"
class MockCValidationState : public CValidationState {
@ -75,8 +76,7 @@ protected:
virtual void TearDown() {
// Revert to test default. No-op on mainnet params.
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
// Returns a valid but empty mutable transaction at block height 1.

View File

@ -5,6 +5,7 @@
#include "main.h"
#include "primitives/transaction.h"
#include "consensus/validation.h"
#include "utiltest.h"
extern ZCJoinSplit* params;
@ -171,8 +172,7 @@ TEST(checktransaction_tests, BadTxnsOversize) {
{
// But should be fine again once Sapling activates!
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
ActivateSapling();
mtx.fOverwintered = true;
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
@ -191,15 +191,12 @@ TEST(checktransaction_tests, BadTxnsOversize) {
EXPECT_TRUE(ContextualCheckTransaction(tx, state, 1, 100));
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
}
TEST(checktransaction_tests, OversizeSaplingTxns) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
ActivateSapling();
CMutableTransaction mtx = GetValidTransaction();
mtx.fOverwintered = true;
@ -252,8 +249,7 @@ TEST(checktransaction_tests, OversizeSaplingTxns) {
}
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(checktransaction_tests, bad_txns_vout_negative) {
@ -969,8 +965,7 @@ TEST(checktransaction_tests, OverwinteredContextualCreateTx) {
}
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
// Test a v1 transaction which has a malformed header, perhaps modified in-flight

View File

@ -6,6 +6,7 @@
#include "pubkey.h"
#include "rpc/protocol.h"
#include "transaction_builder.h"
#include "utiltest.h"
#include "zcash/Address.hpp"
#include <gmock/gmock.h>
@ -15,10 +16,7 @@ static const std::string tSecretRegtest = "cND2ZvtabDbJ1gucx9GWH6XT9kgTAqfb6cotP
TEST(TransactionBuilder, Invoke)
{
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
CBasicKeyStore keystore;
CKey tsk = DecodeSecret(tSecretRegtest);
@ -87,8 +85,7 @@ TEST(TransactionBuilder, Invoke)
EXPECT_EQ(state.GetRejectReason(), "");
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(TransactionBuilder, ThrowsOnTransparentInputWithoutKeyStore)
@ -124,10 +121,7 @@ TEST(TransactionBuilder, RejectsInvalidTransparentChangeAddress)
TEST(TransactionBuilder, FailsWithNegativeChange)
{
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
// Generate dummy Sapling address
auto sk = libzcash::SaplingSpendingKey::random();
@ -173,16 +167,12 @@ TEST(TransactionBuilder, FailsWithNegativeChange)
EXPECT_TRUE(builder.Build().IsTx());
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(TransactionBuilder, ChangeOutput)
{
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
// Generate dummy Sapling address
auto sk = libzcash::SaplingSpendingKey::random();
@ -264,16 +254,12 @@ TEST(TransactionBuilder, ChangeOutput)
}
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(TransactionBuilder, SetFee)
{
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
// Generate dummy Sapling address
auto sk = libzcash::SaplingSpendingKey::random();
@ -321,8 +307,7 @@ TEST(TransactionBuilder, SetFee)
}
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(TransactionBuilder, CheckSaplingTxVersion)

View File

@ -20,6 +20,7 @@
#include "wallet/asyncrpcoperation_shieldcoinbase.h"
#include "init.h"
#include "utiltest.h"
#include <array>
#include <chrono>
@ -1250,9 +1251,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
BOOST_AUTO_TEST_CASE(rpc_z_sendmany_taddr_to_sapling)
{
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
ActivateSapling();
LOCK(pwalletMain->cs_wallet);
@ -1345,8 +1344,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_taddr_to_sapling)
mapArgs.erase("-experimentalfeatures");
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}

View File

@ -9,6 +9,7 @@
#include <array>
// Sprout
CWalletTx GetValidSproutReceive(ZCJoinSplit& params,
const libzcash::SproutSpendingKey& sk,
CAmount value,
@ -155,6 +156,21 @@ CWalletTx GetValidSproutSpend(ZCJoinSplit& params,
return wtx;
}
// Sapling
const Consensus::Params& ActivateSapling() {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
return Params().GetConsensus();
}
void DeactivateSapling() {
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
// Consider: Should we be doing the following?
// SelectParams(CBaseChainParams::MAIN);
}
CWalletTx GetValidSaplingTx(const Consensus::Params& consensusParams,
const libzcash::SaplingExtendedSpendingKey &sk,
CAmount value) {

View File

@ -23,6 +23,10 @@ CWalletTx GetValidSproutSpend(ZCJoinSplit& params,
CAmount value);
// Sapling
const Consensus::Params& ActivateSapling();
void DeactivateSapling();
CWalletTx GetValidSaplingTx(const Consensus::Params& consensusParams,
const libzcash::SaplingExtendedSpendingKey &sk,
CAmount value);

View File

@ -356,10 +356,7 @@ TEST(WalletTests, SetSproutNoteAddrsInCWalletTx) {
}
TEST(WalletTests, SetSaplingNoteAddrsInCWalletTx) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -411,8 +408,7 @@ TEST(WalletTests, SetSaplingNoteAddrsInCWalletTx) {
EXPECT_TRUE(witness == wtx.mapSaplingNoteData[op].witnesses.front());
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, SetSproutInvalidNoteAddrsInCWalletTx) {
@ -476,10 +472,7 @@ TEST(WalletTests, GetSproutNoteNullifier) {
}
TEST(WalletTests, FindMySaplingNotes) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -518,8 +511,7 @@ TEST(WalletTests, FindMySaplingNotes) {
EXPECT_EQ(2, noteMap.size());
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, FindMySproutNotes) {
@ -610,10 +602,7 @@ TEST(WalletTests, GetConflictedSproutNotes) {
// Generate note A and spend to create note B, from which we spend to create two conflicting transactions
TEST(WalletTests, GetConflictedSaplingNotes) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -728,8 +717,7 @@ TEST(WalletTests, GetConflictedSaplingNotes) {
mapBlockIndex.erase(blockHash);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, SproutNullifierIsSpent) {
@ -773,10 +761,7 @@ TEST(WalletTests, SproutNullifierIsSpent) {
}
TEST(WalletTests, SaplingNullifierIsSpent) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -837,8 +822,7 @@ TEST(WalletTests, SaplingNullifierIsSpent) {
mapBlockIndex.erase(blockHash);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, NavigateFromSproutNullifierToNote) {
@ -868,10 +852,7 @@ TEST(WalletTests, NavigateFromSproutNullifierToNote) {
}
TEST(WalletTests, NavigateFromSaplingNullifierToNote) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -967,8 +948,7 @@ TEST(WalletTests, NavigateFromSaplingNullifierToNote) {
mapBlockIndex.erase(blockHash);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, SpentSproutNoteIsFromMe) {
@ -1001,10 +981,7 @@ TEST(WalletTests, SpentSproutNoteIsFromMe) {
// Create note A, spend A to create note B, spend and verify note B is from me.
TEST(WalletTests, SpentSaplingNoteIsFromMe) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -1142,8 +1119,7 @@ TEST(WalletTests, SpentSaplingNoteIsFromMe) {
mapBlockIndex.erase(blockHash2);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, CachedWitnessesEmptyChain) {
@ -1782,10 +1758,7 @@ TEST(WalletTests, UpdatedSproutNoteData) {
}
TEST(WalletTests, UpdatedSaplingNoteData) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -1899,8 +1872,7 @@ TEST(WalletTests, UpdatedSaplingNoteData) {
mapBlockIndex.erase(blockHash);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, MarkAffectedSproutTransactionsDirty) {
@ -1935,10 +1907,7 @@ TEST(WalletTests, MarkAffectedSproutTransactionsDirty) {
}
TEST(WalletTests, MarkAffectedSaplingTransactionsDirty) {
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
TestWallet wallet;
@ -2048,8 +2017,7 @@ TEST(WalletTests, MarkAffectedSaplingTransactionsDirty) {
mapBlockIndex.erase(blockHash);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
}
TEST(WalletTests, SproutNoteLocking) {

View File

@ -300,10 +300,7 @@ double benchmark_try_decrypt_sprout_notes(size_t nAddrs)
double benchmark_try_decrypt_sapling_notes(size_t nAddrs)
{
// Set params
SelectParams(CBaseChainParams::REGTEST);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
auto consensusParams = Params().GetConsensus();
auto consensusParams = ActivateSapling();
std::vector<unsigned char, secure_allocator<unsigned char>> rawSeed(32);
HDSeed seed(rawSeed);
@ -327,8 +324,7 @@ double benchmark_try_decrypt_sapling_notes(size_t nAddrs)
double tv_stop = timer_stop(tv_start);
// Revert to default
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
DeactivateSapling();
return tv_stop;
}