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.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp
new file mode 100644
index 0000000000..afd63d2717
--- /dev/null
+++ b/src/test/test_bitcoin.cpp
@@ -0,0 +1,91 @@
+// Copyright (c) 2011-2013 The Bitcoin Core developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#define BOOST_TEST_MODULE Bitcoin Test Suite
+
+#include "main.h"
+#include "random.h"
+#include "txdb.h"
+#include "ui_interface.h"
+#include "util.h"
+#ifdef ENABLE_WALLET
+#include "db.h"
+#include "wallet.h"
+#endif
+
+#include <boost/filesystem.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/thread.hpp>
+
+CClientUIInterface uiInterface;
+CWallet* pwalletMain;
+
+extern bool fPrintToConsole;
+extern void noui_connect();
+
+struct TestingSetup {
+ CCoinsViewDB *pcoinsdbview;
+ boost::filesystem::path pathTemp;
+ boost::thread_group threadGroup;
+
+ TestingSetup() {
+ fPrintToDebugLog = false; // don't want to write to debug.log file
+ SelectParams(CBaseChainParams::UNITTEST);
+ noui_connect();
+#ifdef ENABLE_WALLET
+ bitdb.MakeMock();
+#endif
+ 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);
+ RegisterWallet(pwalletMain);
+#endif
+ nScriptCheckThreads = 3;
+ for (int i=0; i < nScriptCheckThreads-1; i++)
+ threadGroup.create_thread(&ThreadScriptCheck);
+ RegisterNodeSignals(GetNodeSignals());
+ }
+ ~TestingSetup()
+ {
+ threadGroup.interrupt_all();
+ threadGroup.join_all();
+ UnregisterNodeSignals(GetNodeSignals());
+#ifdef ENABLE_WALLET
+ delete pwalletMain;
+ pwalletMain = NULL;
+#endif
+ delete pcoinsTip;
+ delete pcoinsdbview;
+ delete pblocktree;
+#ifdef ENABLE_WALLET
+ bitdb.Flush(true);
+#endif
+ boost::filesystem::remove_all(pathTemp);
+ }
+};
+
+BOOST_GLOBAL_FIXTURE(TestingSetup);
+
+void Shutdown(void* parg)
+{
+ exit(0);
+}
+
+void StartShutdown()
+{
+ exit(0);
+}
+
+bool ShutdownRequested()
+{
+ return false;
+}