fix: Add perf tests for escrow create and escrow finish

This commit is contained in:
TimothyBanks
2026-07-10 16:21:53 -04:00
parent d3550fac60
commit 19631a6d92

View File

@@ -1544,11 +1544,73 @@ struct Wasm_test : public beast::unit_test::Suite
}
}
template <typename Functor>
void
perf(size_t runs, Functor&& f)
{
using std::chrono::duration_cast;
using std::chrono::steady_clock;
// Warm up first.
for (auto i = size_t{}; i < 10; ++i)
{
BEAST_EXPECT(f());
}
auto totalTime = uint64_t{};
for (auto i = size_t{}; i < runs; ++i)
{
auto const start = steady_clock::now();
auto result = f();
auto const end = steady_clock::now();
totalTime += duration_cast<std::chrono::nanoseconds>(end - start).count();
BEAST_EXPECT(result);
}
log << "Average time for " << runs << " runs: " << (totalTime / runs) << " ns" << std::endl;
}
void
perfEscrowFinish()
{
testcase("perf escrow finish");
using namespace test::jtx;
static constexpr auto kRuns = 1000;
auto const wasm = hexToBytes(kAllHostFunctionsWasmHex);
Env env{*this};
auto hfns = TestHostFunctions{env, 0};
perf(kRuns, [&] {
return runEscrowWasm(wasm, hfns, 1'000'000, escrowFunctionName, {}).has_value();
});
}
void
perfEscrowCreate()
{
testcase("perf escrow create");
using namespace test::jtx;
static constexpr auto kRuns = 1000;
auto const wasm = hexToBytes(kAllHostFunctionsWasmHex);
Env env{*this};
auto mock = HostFunctions{env.journal};
perf(kRuns, [&] { return !preflightEscrowWasm(wasm, mock, escrowFunctionName); });
}
void
run() override
{
using namespace test::jtx;
perfEscrowFinish();
perfEscrowCreate();
testGetDataHelperFunctions();
testWasmLib();
testBadWasm();