39b1763730 Replace use of `ArgsManager` with `DatabaseOptions` (Kiminuo)
Pull request description:
Contributes to #21005.
The goal of this PR is to remove `gArgs` from database classes (i.e. `bdb.h` and `sqlite.h`) so that they can be tested without relying on `gArgs` in tests.
Notes:
* My goal is to enable unit-testing without relying on `gArgs` as much as possible. Global variables are hard to reason about which in turn makes it slightly harder to contribute to this codebase. When the compiler does the heavy lifting for us and allows us only to construct an object (or call a method) with valid parameters, we may also save some time in code reviews. The cost for this is passing an argument which is not for free but the cost is very miniscule compared to benefits, I think.
* GUI code is an exception because it seems fine to have `gArgs` there so I don't plan to make changes in `src/qt` folder, for example.
* My approach to removal of `gArgs` uses is moving from lower levels to upper ones and pass `ArgsManager` as an argument as needed. The approach is very similar to what #20158.
ACKs for top commit:
achow101:
ACK 39b1763730
ryanofsky:
Code review ACK 39b1763730. Just the two small ReadDatabaseArgs and Berkeley open changes that were discussed since the last review
Tree-SHA512: aa066b314db593e46c18698fe8cdd500f558b405dc04e4a9a3ff57b52b5b3a81a6cb090e0e661785d1d02c1bf18958c1f4cd715ff233aab63381e3f80960622d
argsman.AddArg("-walletrbf",strprintf("Send transactions with full-RBF opt-in enabled (RPC only, default: %u)",DEFAULT_WALLET_RBF),ArgsManager::ALLOW_ANY,OptionsCategory::WALLET);
#ifdef USE_BDB
argsman.AddArg("-dblogsize=<n>",strprintf("Flush wallet database activity from memory to disk log every <n> megabytes (default: %u)",DEFAULT_WALLET_DBLOGSIZE),ArgsManager::ALLOW_ANY|ArgsManager::DEBUG_ONLY,OptionsCategory::WALLET_DEBUG_TEST);
argsman.AddArg("-dblogsize=<n>",strprintf("Flush wallet database activity from memory to disk log every <n> megabytes (default: %u)",DatabaseOptions().max_log_mb),ArgsManager::ALLOW_ANY|ArgsManager::DEBUG_ONLY,OptionsCategory::WALLET_DEBUG_TEST);
argsman.AddArg("-flushwallet",strprintf("Run a thread to flush wallet periodically (default: %u)",DEFAULT_FLUSHWALLET),ArgsManager::ALLOW_ANY|ArgsManager::DEBUG_ONLY,OptionsCategory::WALLET_DEBUG_TEST);
argsman.AddArg("-privdb",strprintf("Sets the DB_PRIVATE flag in the wallet db environment (default: %u)",DEFAULT_WALLET_PRIVDB),ArgsManager::ALLOW_ANY|ArgsManager::DEBUG_ONLY,OptionsCategory::WALLET_DEBUG_TEST);
argsman.AddArg("-privdb",strprintf("Sets the DB_PRIVATE flag in the wallet db environment (default: %u)",!DatabaseOptions().use_shared_memory),ArgsManager::ALLOW_ANY|ArgsManager::DEBUG_ONLY,OptionsCategory::WALLET_DEBUG_TEST);