Merge bitcoin/bitcoin#32890: bench: Avoid tmp files in pwd

fa2fbaa4a29f80d3c7d5f0ad6b64035c3156dd12 bench: Avoid tmp files in pwd (MarcoFalke)

Pull request description:

  It is a bit confusing that one bench run, when aborted, could leave behind temp files in the current working directory. It is similarly confusing to delete those files in the next run of bench.

  Fix all issues by using `BasicTestingSetup`, which provides a proper temp folder to use and also cleans up after itself.

  Can be tested via:

  ```
  ( echo 'my file content' > streams_tmp ) && ls streams_tmp && ./bld-cmake/bin/bench_bitcoin --filter=FindByte && ls streams_tmp
  ```

  Previously the file would be deleted, now it is kept.

ACKs for top commit:
  stickies-v:
    ACK fa2fbaa4a29f80d3c7d5f0ad6b64035c3156dd12

Tree-SHA512: 33798030f990d1b4c95be4682d8dbfad95e8716d5fc0b99d65937196f2ced1ba649193c2adba4155f4eec9fd06e16be6667f3c3705af1880f47b2ff57a76243b
This commit is contained in:
merge-script 2025-07-10 13:34:39 +01:00
commit b80ead8a71
No known key found for this signature in database
GPG Key ID: 2EEB9F5CC09526C1

View File

@ -3,8 +3,8 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <bench/bench.h>
#include <streams.h>
#include <test/util/setup_common.h>
#include <util/fs.h>
#include <cstddef>
@ -13,11 +13,11 @@
static void FindByte(benchmark::Bench& bench)
{
// Setup
AutoFile file{fsbridge::fopen("streams_tmp", "w+b")};
const auto testing_setup{MakeNoLogFileContext<const BasicTestingSetup>(ChainType::REGTEST)};
AutoFile file{fsbridge::fopen(testing_setup->m_path_root / "streams_tmp", "w+b")};
const size_t file_size = 200;
uint8_t data[file_size] = {0};
data[file_size-1] = 1;
data[file_size - 1] = 1;
file << data;
file.seek(0, SEEK_SET);
BufferedFile bf{file, /*nBufSize=*/file_size + 1, /*nRewindIn=*/file_size};
@ -27,9 +27,7 @@ static void FindByte(benchmark::Bench& bench)
bf.FindByte(std::byte(1));
});
// Cleanup
assert(file.fclose() == 0);
fs::remove("streams_tmp");
}
BENCHMARK(FindByte, benchmark::PriorityLevel::HIGH);