From fd67424c829b9bb0ed7f4a53040524c560262810 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Thu, 23 Jan 2014 14:18:26 -0500 Subject: [PATCH] Unit test fixes for AssertLockHeld / -DDEBUG_LOCKORDER Unit tests would fail if compiled with -DDEBUG_LOCKORDER (AssertLockHeld() would fail; AssertLockHeld() relies on the DEBUG_LOCKORDER code to keep track of locks held). Fixed by LOCK'ing the wallet mutex in the unit tests that manipulate the wallet. --- src/test/accounting_tests.cpp | 2 ++ src/test/rpc_wallet_tests.cpp | 7 +++++++ src/test/wallet_tests.cpp | 2 ++ 3 files changed, 11 insertions(+) diff --git a/src/test/accounting_tests.cpp b/src/test/accounting_tests.cpp index 5f79436e48..bfdb95927b 100644 --- a/src/test/accounting_tests.cpp +++ b/src/test/accounting_tests.cpp @@ -34,6 +34,8 @@ BOOST_AUTO_TEST_CASE(acc_orderupgrade) CAccountingEntry ae; std::map results; + LOCK(pwalletMain->cs_wallet); + ae.strAccount = ""; ae.nCreditDebit = 1; ae.nTime = 1333333333; diff --git a/src/test/rpc_wallet_tests.cpp b/src/test/rpc_wallet_tests.cpp index 2cf0fb350b..628ba95067 100644 --- a/src/test/rpc_wallet_tests.cpp +++ b/src/test/rpc_wallet_tests.cpp @@ -2,6 +2,7 @@ #include "rpcclient.h" #include "base58.h" +#include "wallet.h" #include #include @@ -12,10 +13,14 @@ using namespace json_spirit; extern Array createArgs(int nRequired, const char* address1=NULL, const char* address2=NULL); extern Value CallRPC(string args); +extern CWallet* pwalletMain; + BOOST_AUTO_TEST_SUITE(rpc_wallet_tests) BOOST_AUTO_TEST_CASE(rpc_addmultisig) { + LOCK(pwalletMain->cs_wallet); + rpcfn_type addmultisig = tableRPC["addmultisigaddress"]->actor; // old, 65-byte-long: @@ -56,6 +61,8 @@ BOOST_AUTO_TEST_CASE(rpc_wallet) // Test RPC calls for various wallet statistics Value r; + LOCK(pwalletMain->cs_wallet); + BOOST_CHECK_NO_THROW(CallRPC("listunspent")); BOOST_CHECK_THROW(CallRPC("listunspent string"), runtime_error); BOOST_CHECK_THROW(CallRPC("listunspent 0 string"), runtime_error); diff --git a/src/test/wallet_tests.cpp b/src/test/wallet_tests.cpp index 0acd94ef36..bd0517ae08 100644 --- a/src/test/wallet_tests.cpp +++ b/src/test/wallet_tests.cpp @@ -62,6 +62,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests) CoinSet setCoinsRet, setCoinsRet2; int64_t nValueRet; + LOCK(wallet.cs_wallet); + // test multiple times to allow for differences in the shuffle order for (int i = 0; i < RUN_TESTS; i++) {