test: Create test fixture for wallet
Removes all the `#ifdef ENABLE_WALLET` from `test_bitcoin` by making the wallet tests use their own fixture.
This commit is contained in:
parent
de39c95c24
commit
f4eae2d910
8 changed files with 55 additions and 31 deletions
|
@ -90,6 +90,8 @@ BITCOIN_TESTS =\
|
||||||
|
|
||||||
if ENABLE_WALLET
|
if ENABLE_WALLET
|
||||||
BITCOIN_TESTS += \
|
BITCOIN_TESTS += \
|
||||||
|
wallet/test/wallet_test_fixture.cpp \
|
||||||
|
wallet/test/wallet_test_fixture.h \
|
||||||
wallet/test/accounting_tests.cpp \
|
wallet/test/accounting_tests.cpp \
|
||||||
wallet/test/wallet_tests.cpp \
|
wallet/test/wallet_tests.cpp \
|
||||||
wallet/test/rpc_wallet_tests.cpp
|
wallet/test/rpc_wallet_tests.cpp
|
||||||
|
|
|
@ -19,10 +19,6 @@
|
||||||
#include "ui_interface.h"
|
#include "ui_interface.h"
|
||||||
#include "rpc/server.h"
|
#include "rpc/server.h"
|
||||||
#include "rpc/register.h"
|
#include "rpc/register.h"
|
||||||
#ifdef ENABLE_WALLET
|
|
||||||
#include "wallet/db.h"
|
|
||||||
#include "wallet/wallet.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "test/testutil.h"
|
#include "test/testutil.h"
|
||||||
|
|
||||||
|
@ -57,10 +53,6 @@ TestingSetup::TestingSetup(const std::string& chainName) : BasicTestingSetup(cha
|
||||||
// Ideally we'd move all the RPC tests to the functional testing framework
|
// Ideally we'd move all the RPC tests to the functional testing framework
|
||||||
// instead of unit tests, but for now we need these here.
|
// instead of unit tests, but for now we need these here.
|
||||||
RegisterAllCoreRPCCommands(tableRPC);
|
RegisterAllCoreRPCCommands(tableRPC);
|
||||||
#ifdef ENABLE_WALLET
|
|
||||||
bitdb.MakeMock();
|
|
||||||
RegisterWalletRPCCommands(tableRPC);
|
|
||||||
#endif
|
|
||||||
ClearDatadirCache();
|
ClearDatadirCache();
|
||||||
pathTemp = GetTempPath() / strprintf("test_bitcoin_%lu_%i", (unsigned long)GetTime(), (int)(GetRand(100000)));
|
pathTemp = GetTempPath() / strprintf("test_bitcoin_%lu_%i", (unsigned long)GetTime(), (int)(GetRand(100000)));
|
||||||
boost::filesystem::create_directories(pathTemp);
|
boost::filesystem::create_directories(pathTemp);
|
||||||
|
@ -69,12 +61,6 @@ TestingSetup::TestingSetup(const std::string& chainName) : BasicTestingSetup(cha
|
||||||
pcoinsdbview = new CCoinsViewDB(1 << 23, true);
|
pcoinsdbview = new CCoinsViewDB(1 << 23, true);
|
||||||
pcoinsTip = new CCoinsViewCache(pcoinsdbview);
|
pcoinsTip = new CCoinsViewCache(pcoinsdbview);
|
||||||
InitBlockIndex(chainparams);
|
InitBlockIndex(chainparams);
|
||||||
#ifdef ENABLE_WALLET
|
|
||||||
bool fFirstRun;
|
|
||||||
pwalletMain = new CWallet("wallet.dat");
|
|
||||||
pwalletMain->LoadWallet(fFirstRun);
|
|
||||||
RegisterValidationInterface(pwalletMain);
|
|
||||||
#endif
|
|
||||||
nScriptCheckThreads = 3;
|
nScriptCheckThreads = 3;
|
||||||
for (int i=0; i < nScriptCheckThreads-1; i++)
|
for (int i=0; i < nScriptCheckThreads-1; i++)
|
||||||
threadGroup.create_thread(&ThreadScriptCheck);
|
threadGroup.create_thread(&ThreadScriptCheck);
|
||||||
|
@ -86,19 +72,10 @@ TestingSetup::~TestingSetup()
|
||||||
UnregisterNodeSignals(GetNodeSignals());
|
UnregisterNodeSignals(GetNodeSignals());
|
||||||
threadGroup.interrupt_all();
|
threadGroup.interrupt_all();
|
||||||
threadGroup.join_all();
|
threadGroup.join_all();
|
||||||
#ifdef ENABLE_WALLET
|
|
||||||
UnregisterValidationInterface(pwalletMain);
|
|
||||||
delete pwalletMain;
|
|
||||||
pwalletMain = NULL;
|
|
||||||
#endif
|
|
||||||
UnloadBlockIndex();
|
UnloadBlockIndex();
|
||||||
delete pcoinsTip;
|
delete pcoinsTip;
|
||||||
delete pcoinsdbview;
|
delete pcoinsdbview;
|
||||||
delete pblocktree;
|
delete pblocktree;
|
||||||
#ifdef ENABLE_WALLET
|
|
||||||
bitdb.Flush(true);
|
|
||||||
bitdb.Reset();
|
|
||||||
#endif
|
|
||||||
boost::filesystem::remove_all(pathTemp);
|
boost::filesystem::remove_all(pathTemp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,7 @@ struct BasicTestingSetup {
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Testing setup that configures a complete environment.
|
/** Testing setup that configures a complete environment.
|
||||||
* Included are data directory, coins database, script check threads
|
* Included are data directory, coins database, script check threads setup.
|
||||||
* and wallet (if enabled) setup.
|
|
||||||
*/
|
*/
|
||||||
struct TestingSetup: public BasicTestingSetup {
|
struct TestingSetup: public BasicTestingSetup {
|
||||||
CCoinsViewDB *pcoinsdbview;
|
CCoinsViewDB *pcoinsdbview;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "wallet/wallet.h"
|
#include "wallet/wallet.h"
|
||||||
#include "wallet/walletdb.h"
|
#include "wallet/walletdb.h"
|
||||||
|
|
||||||
#include "test/test_bitcoin.h"
|
#include "wallet/test/wallet_test_fixture.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
extern CWallet* pwalletMain;
|
extern CWallet* pwalletMain;
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_SUITE(accounting_tests, TestingSetup)
|
BOOST_FIXTURE_TEST_SUITE(accounting_tests, WalletTestingSetup)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
GetResults(CWalletDB& walletdb, std::map<CAmount, CAccountingEntry>& results)
|
GetResults(CWalletDB& walletdb, std::map<CAmount, CAccountingEntry>& results)
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "wallet/wallet.h"
|
#include "wallet/wallet.h"
|
||||||
|
|
||||||
#include "test/test_bitcoin.h"
|
#include "wallet/test/wallet_test_fixture.h"
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
@ -23,7 +23,7 @@ extern UniValue CallRPC(string args);
|
||||||
|
|
||||||
extern CWallet* pwalletMain;
|
extern CWallet* pwalletMain;
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_SUITE(rpc_wallet_tests, TestingSetup)
|
BOOST_FIXTURE_TEST_SUITE(rpc_wallet_tests, WalletTestingSetup)
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(rpc_addmultisig)
|
BOOST_AUTO_TEST_CASE(rpc_addmultisig)
|
||||||
{
|
{
|
||||||
|
|
28
src/wallet/test/wallet_test_fixture.cpp
Normal file
28
src/wallet/test/wallet_test_fixture.cpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#include "wallet/test/wallet_test_fixture.h"
|
||||||
|
|
||||||
|
#include "rpc/server.h"
|
||||||
|
#include "wallet/db.h"
|
||||||
|
#include "wallet/wallet.h"
|
||||||
|
|
||||||
|
WalletTestingSetup::WalletTestingSetup(const std::string& chainName):
|
||||||
|
TestingSetup(chainName)
|
||||||
|
{
|
||||||
|
bitdb.MakeMock();
|
||||||
|
|
||||||
|
bool fFirstRun;
|
||||||
|
pwalletMain = new CWallet("wallet.dat");
|
||||||
|
pwalletMain->LoadWallet(fFirstRun);
|
||||||
|
RegisterValidationInterface(pwalletMain);
|
||||||
|
|
||||||
|
RegisterWalletRPCCommands(tableRPC);
|
||||||
|
}
|
||||||
|
|
||||||
|
WalletTestingSetup::~WalletTestingSetup()
|
||||||
|
{
|
||||||
|
UnregisterValidationInterface(pwalletMain);
|
||||||
|
delete pwalletMain;
|
||||||
|
pwalletMain = NULL;
|
||||||
|
|
||||||
|
bitdb.Flush(true);
|
||||||
|
bitdb.Reset();
|
||||||
|
}
|
18
src/wallet/test/wallet_test_fixture.h
Normal file
18
src/wallet/test/wallet_test_fixture.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
// Copyright (c) 2016 The Bitcoin Core developers
|
||||||
|
// Distributed under the MIT software license, see the accompanying
|
||||||
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#ifndef BITCOIN_WALLET_TEST_FIXTURE_H
|
||||||
|
#define BITCOIN_WALLET_TEST_FIXTURE_H
|
||||||
|
|
||||||
|
#include "test/test_bitcoin.h"
|
||||||
|
|
||||||
|
/** Testing setup and teardown for wallet.
|
||||||
|
*/
|
||||||
|
struct WalletTestingSetup: public TestingSetup {
|
||||||
|
WalletTestingSetup(const std::string& chainName = CBaseChainParams::MAIN);
|
||||||
|
~WalletTestingSetup();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "test/test_bitcoin.h"
|
#include "wallet/test/wallet_test_fixture.h"
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
@ -25,7 +25,7 @@ using namespace std;
|
||||||
|
|
||||||
typedef set<pair<const CWalletTx*,unsigned int> > CoinSet;
|
typedef set<pair<const CWalletTx*,unsigned int> > CoinSet;
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_SUITE(wallet_tests, TestingSetup)
|
BOOST_FIXTURE_TEST_SUITE(wallet_tests, WalletTestingSetup)
|
||||||
|
|
||||||
static CWallet wallet;
|
static CWallet wallet;
|
||||||
static vector<COutput> vCoins;
|
static vector<COutput> vCoins;
|
||||||
|
|
Loading…
Reference in a new issue