aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_bitcoin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_bitcoin.cpp')
-rw-r--r--src/test/test_bitcoin.cpp96
1 files changed, 80 insertions, 16 deletions
diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp
index 96d63bff9..c727303ea 100644
--- a/src/test/test_bitcoin.cpp
+++ b/src/test/test_bitcoin.cpp
@@ -1,30 +1,90 @@
+// Copyright (c) 2011-2013 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
#define BOOST_TEST_MODULE Bitcoin Test Suite
-#include <boost/test/unit_test.hpp>
+#include "test_bitcoin.h"
+
+#include "key.h"
#include "main.h"
-#include "wallet.h"
+#include "random.h"
+#include "txdb.h"
+#include "ui_interface.h"
+#include "util.h"
+#ifdef ENABLE_WALLET
+#include "wallet/db.h"
+#include "wallet/wallet.h"
+#endif
+
+#include <boost/filesystem.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/thread.hpp>
+CClientUIInterface uiInterface; // Declared but not defined in ui_interface.h
CWallet* pwalletMain;
-CClientUIInterface uiInterface;
extern bool fPrintToConsole;
extern void noui_connect();
-struct TestingSetup {
- TestingSetup() {
- fPrintToConsole = true; // don't want to write to debug.log file
- noui_connect();
- pwalletMain = new CWallet();
- RegisterWallet(pwalletMain);
- }
- ~TestingSetup()
- {
+BasicTestingSetup::BasicTestingSetup()
+{
+ ECC_Start();
+ SetupEnvironment();
+ fPrintToDebugLog = false; // don't want to write to debug.log file
+ fCheckBlockIndex = true;
+ SelectParams(CBaseChainParams::MAIN);
+}
+BasicTestingSetup::~BasicTestingSetup()
+{
+ ECC_Stop();
+}
+
+TestingSetup::TestingSetup()
+{
+#ifdef ENABLE_WALLET
+ bitdb.MakeMock();
+#endif
+ ClearDatadirCache();
+ pathTemp = GetTempPath() / strprintf("test_bitcoin_%lu_%i", (unsigned long)GetTime(), (int)(GetRand(100000)));
+ boost::filesystem::create_directories(pathTemp);
+ mapArgs["-datadir"] = pathTemp.string();
+ pblocktree = new CBlockTreeDB(1 << 20, true);
+ pcoinsdbview = new CCoinsViewDB(1 << 23, true);
+ pcoinsTip = new CCoinsViewCache(pcoinsdbview);
+ InitBlockIndex();
+#ifdef ENABLE_WALLET
+ bool fFirstRun;
+ pwalletMain = new CWallet("wallet.dat");
+ pwalletMain->LoadWallet(fFirstRun);
+ RegisterValidationInterface(pwalletMain);
+#endif
+ nScriptCheckThreads = 3;
+ for (int i=0; i < nScriptCheckThreads-1; i++)
+ threadGroup.create_thread(&ThreadScriptCheck);
+ RegisterNodeSignals(GetNodeSignals());
+}
+
+TestingSetup::~TestingSetup()
+{
+ UnregisterNodeSignals(GetNodeSignals());
+ threadGroup.interrupt_all();
+ threadGroup.join_all();
+#ifdef ENABLE_WALLET
+ UnregisterValidationInterface(pwalletMain);
delete pwalletMain;
pwalletMain = NULL;
- }
-};
-
-BOOST_GLOBAL_FIXTURE(TestingSetup);
+#endif
+ UnloadBlockIndex();
+ delete pcoinsTip;
+ delete pcoinsdbview;
+ delete pblocktree;
+#ifdef ENABLE_WALLET
+ bitdb.Flush(true);
+ bitdb.Reset();
+#endif
+ boost::filesystem::remove_all(pathTemp);
+}
void Shutdown(void* parg)
{
@@ -36,3 +96,7 @@ void StartShutdown()
exit(0);
}
+bool ShutdownRequested()
+{
+ return false;
+}