/
githubmirror
/
bitcoin
Обзор
Документация
Войти
/
githubmirror
/
bitcoin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/bench/wallet_loading.cpp
79 строк
2 KB
Hennadii Stepanov
iwyu: Fix warnings in `src/bench` and treat them as error
10 июн 2026, 12:32
Не верифицирован
10 июн 2026, 12:32
6751a32
Код
Авторство
О чём код?
// Copyright (c) 2022-present The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <addresstype.h> #include <bench/bench.h> #include <consensus/amount.h> #include <outputtype.h> #include <primitives/transaction.h> #include <script/script.h> #include <test/util/setup_common.h> #include <util/check.h> #include <util/translation.h> #include <wallet/context.h> #include <wallet/db.h> #include <wallet/test/util.h> #include <wallet/transaction.h> #include <wallet/wallet.h> #include <wallet/walletutil.h> #include <cstdint> #include <memory> #include <optional> #include <string> #include <utility> #include <vector> namespace wallet{ static void AddTx(CWallet& wallet) { CMutableTransaction mtx; mtx.vout.emplace_back(COIN, GetScriptForDestination(*Assert(wallet.GetNewDestination(OutputType::BECH32, "")))); mtx.vin.emplace_back(); wallet.AddToWallet(MakeTransactionRef(mtx), TxStateInactive{}); } static void WalletLoadingDescriptors(benchmark::Bench& bench) { const auto test_setup = MakeNoLogFileContext<TestingSetup>(); WalletContext context; context.args = &test_setup->m_args; context.chain = test_setup->m_node.chain.get(); // Setup the wallet // Loading the wallet will also create it uint64_t create_flags = WALLET_FLAG_DESCRIPTORS; DatabaseStatus status; DatabaseOptions options; options.require_format = DatabaseFormat::SQLITE; options.require_create = true; bilingual_str error; auto database = MakeWalletDatabase("", options, status, error); auto wallet = TestCreateWallet(std::move(database), context, create_flags); // Generate a bunch of transactions and addresses to put into the wallet for (int i = 0; i < 1000; ++i) { AddTx(*wallet); } options.require_create = false; options.require_existing = true; bench.epochs(5) .setup([&] { TestUnloadWallet(std::move(wallet)); database = MakeWalletDatabase("", options, status, error); }) .run([&] { wallet = TestLoadWallet(std::move(database), context); }); // Cleanup TestUnloadWallet(std::move(wallet)); } BENCHMARK(WalletLoadingDescriptors); } // namespace wallet