From a1080802f8d7c3d1251ec6f2be33031f568deafa Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Wed, 20 Apr 2022 12:51:59 -0400 Subject: [PATCH] walletdb: Create a mock database of specific type We may want to make a mock database of either SQLite or BDB, not just whatever the compiled default is. --- src/wallet/walletdb.cpp | 33 ++++++++++++++++++++++++++++----- src/wallet/walletdb.h | 1 + 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/wallet/walletdb.cpp b/src/wallet/walletdb.cpp index 7bbed7973f..26908b3777 100644 --- a/src/wallet/walletdb.cpp +++ b/src/wallet/walletdb.cpp @@ -1187,13 +1187,36 @@ std::unique_ptr CreateDummyWalletDatabase() } /** Return object for accessing temporary in-memory database. */ +std::unique_ptr CreateMockWalletDatabase(DatabaseOptions& options) +{ + + std::optional format; + if (options.require_format) format = options.require_format; + if (!format) { +#ifdef USE_BDB + format = DatabaseFormat::BERKELEY; +#endif +#ifdef USE_SQLITE + format = DatabaseFormat::SQLITE; +#endif + } + + if (format == DatabaseFormat::SQLITE) { +#ifdef USE_SQLITE + return std::make_unique("", "", options, true); +#endif + assert(false); + } + +#ifdef USE_BDB + return std::make_unique(std::make_shared(), "", options); +#endif + assert(false); +} + std::unique_ptr CreateMockWalletDatabase() { DatabaseOptions options; -#ifdef USE_SQLITE - return std::make_unique("", "", options, true); -#elif USE_BDB - return std::make_unique(std::make_shared(), "", options); -#endif + return CreateMockWalletDatabase(options); } } // namespace wallet diff --git a/src/wallet/walletdb.h b/src/wallet/walletdb.h index 3dfe781d56..a04ea598b6 100644 --- a/src/wallet/walletdb.h +++ b/src/wallet/walletdb.h @@ -301,6 +301,7 @@ bool ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, st std::unique_ptr CreateDummyWalletDatabase(); /** Return object for accessing temporary in-memory database. */ +std::unique_ptr CreateMockWalletDatabase(DatabaseOptions& options); std::unique_ptr CreateMockWalletDatabase(); } // namespace wallet