aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGreg Sanders <gsanders87@gmail.com>2024-03-25 12:01:32 -0400
committerGreg Sanders <gsanders87@gmail.com>2024-03-26 08:20:30 -0400
commitb684d82d7e093889a8dc7678c6d6605ca4cd9fa4 (patch)
treeb910e3b7a3202b844547b8b1e66d42f514a73b62 /src
parent2a3ada8b2181b45165608947c7c42b341d0a54dd (diff)
downloadbitcoin-b684d82d7e093889a8dc7678c6d6605ca4cd9fa4.tar.xz
fuzz: Add more invariant checks for package_rbf
Diffstat (limited to 'src')
-rw-r--r--src/test/fuzz/rbf.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/test/fuzz/rbf.cpp b/src/test/fuzz/rbf.cpp
index 64eceb6017..754aff4e70 100644
--- a/src/test/fuzz/rbf.cpp
+++ b/src/test/fuzz/rbf.cpp
@@ -178,5 +178,16 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf)
// If internals report error, wrapper should too
auto err_tuple{ImprovesFeerateDiagram(pool, direct_conflicts, all_conflicts, replacement_fees, replacement_vsize)};
- if (!calc_results.has_value()) assert(err_tuple.value().first == DiagramCheckError::UNCALCULABLE);
+ if (!calc_results.has_value()) {
+ assert(err_tuple.value().first == DiagramCheckError::UNCALCULABLE);
+ } else {
+ // Diagram check succeeded
+ if (!err_tuple.has_value()) {
+ // New diagram's final fee should always match or exceed old diagram's
+ assert(calc_results->first.back().fee <= calc_results->second.back().fee);
+ } else if (calc_results->first.back().fee > calc_results->second.back().fee) {
+ // Or it failed, and if old diagram had higher fees, it should be a failure
+ assert(err_tuple.value().first == DiagramCheckError::FAILURE);
+ }
+ }
}