test: add a test for txgraph staging
staging is a batching mechanism for txgraph, add a test for this feature.
This commit is contained in:
1 parent
ef253a9d3d
commit
fe0b1513a7
1 file changed
+53
@@ -368,4 +368,57 @@ BOOST_AUTO_TEST_CASE(txgraph_chunk_chain)
|
|||||||
block_builder_checker({{&refs[0]}});
|
block_builder_checker({{&refs[0]}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(txgraph_staging)
|
||||||
|
{
|
||||||
|
/* Create a new graph for the test.
|
||||||
|
* The parameters are max_cluster_count, max_cluster_size, acceptable_iters
|
||||||
|
*/
|
||||||
|
auto graph = MakeTxGraph(10, 1000, NUM_ACCEPTABLE_ITERS);
|
||||||
|
|
||||||
|
std::vector<TxGraph::Ref> refs;
|
||||||
|
refs.reserve(2);
|
||||||
|
|
||||||
|
FeePerWeight feerateA{2, 10};
|
||||||
|
FeePerWeight feerateB{1, 10};
|
||||||
|
|
||||||
|
// everytime adding a transaction, test the chunk status
|
||||||
|
// [A]
|
||||||
|
refs.push_back(graph->AddTransaction(feerateA));
|
||||||
|
BOOST_CHECK_EQUAL(graph->HaveStaging(), false);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::TOP), 1);
|
||||||
|
|
||||||
|
graph->StartStaging();
|
||||||
|
BOOST_CHECK_EQUAL(graph->HaveStaging(), true);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::TOP), 1);
|
||||||
|
|
||||||
|
// [A, B]
|
||||||
|
refs.push_back(graph->AddTransaction(feerateB));
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::MAIN), 1);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::TOP), 2);
|
||||||
|
BOOST_CHECK_EQUAL(graph->Exists(refs[0], TxGraph::Level::TOP), true);
|
||||||
|
BOOST_CHECK_EQUAL(graph->Exists(refs[1], TxGraph::Level::TOP), true);
|
||||||
|
|
||||||
|
graph->AddDependency(/*parent=*/refs[0], /*child=*/refs[1]);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::MAIN), 1);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::TOP), 2);
|
||||||
|
|
||||||
|
graph->CommitStaging();
|
||||||
|
BOOST_CHECK_EQUAL(graph->HaveStaging(), false);
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::MAIN), 2);
|
||||||
|
|
||||||
|
graph->StartStaging();
|
||||||
|
|
||||||
|
// [A]
|
||||||
|
graph->RemoveTransaction(refs[1]);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::MAIN), 2);
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::TOP), 1);
|
||||||
|
|
||||||
|
graph->CommitStaging();
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL(graph->GetTransactionCount(TxGraph::Level::MAIN), 1);
|
||||||
|
|
||||||
|
graph->SanityCheck();
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
Reference in new issue
Block a user