From defe023f6ec49dd64c6e03880cee0e9299b45762 Mon Sep 17 00:00:00 2001 From: Greg Sanders Date: Mon, 25 Mar 2024 10:34:31 -0400 Subject: fuzz: add PrioritiseTransaction coverage in diagram checks --- src/test/fuzz/rbf.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/test/fuzz') diff --git a/src/test/fuzz/rbf.cpp b/src/test/fuzz/rbf.cpp index 42008c6ad9..a3138629e2 100644 --- a/src/test/fuzz/rbf.cpp +++ b/src/test/fuzz/rbf.cpp @@ -127,6 +127,10 @@ FUZZ_TARGET(package_rbf, .init = initialize_package_rbf) } mempool_txs.emplace_back(*child); pool.addUnchecked(ConsumeTxMemPoolEntry(fuzzed_data_provider, mempool_txs.back())); + + if (fuzzed_data_provider.ConsumeBool()) { + pool.PrioritiseTransaction(mempool_txs.back().GetHash().ToUint256(), fuzzed_data_provider.ConsumeIntegralInRange(-100000, 100000)); + } } // Pick some transactions at random to be the direct conflicts -- cgit v1.2.3 From 2a3ada8b2181b45165608947c7c42b341d0a54dd Mon Sep 17 00:00:00 2001 From: Greg Sanders Date: Mon, 25 Mar 2024 10:50:17 -0400 Subject: fuzz: finer grained ImprovesFeerateDiagram check on error result --- src/test/fuzz/rbf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/test/fuzz') diff --git a/src/test/fuzz/rbf.cpp b/src/test/fuzz/rbf.cpp index a3138629e2..64eceb6017 100644 --- a/src/test/fuzz/rbf.cpp +++ b/src/test/fuzz/rbf.cpp @@ -178,5 +178,5 @@ 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.has_value()); + if (!calc_results.has_value()) assert(err_tuple.value().first == DiagramCheckError::UNCALCULABLE); } -- cgit v1.2.3 From b684d82d7e093889a8dc7678c6d6605ca4cd9fa4 Mon Sep 17 00:00:00 2001 From: Greg Sanders Date: Mon, 25 Mar 2024 12:01:32 -0400 Subject: fuzz: Add more invariant checks for package_rbf --- src/test/fuzz/rbf.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/test/fuzz') 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); + } + } } -- cgit v1.2.3