Test case for election scheduler container object stats

This commit is contained in:
Dimitrios Siganos 2022-01-24 23:28:26 +00:00
commit 4bd1ea817b

View file

@ -6252,3 +6252,42 @@ TEST (rpc, confirmation_info)
ASSERT_EQ (0, response.get<unsigned> ("total_tally"));
}
}
/** Test election scheduler container object stats
* The test set the AEC size to 0 and then creates a block which gets stuck
* in the election scheduler waiting for a slot in the AEC. Then it confirms that
* the stats RPC call shows the corresponding scheduler bucket incrementing
*/
TEST (node, election_scheduler_container_info)
{
nano::system system;
nano::node_config node_config;
node_config.active_elections_size = 0;
nano::node_flags node_flags;
auto node = add_ipc_enabled_node (system, node_config);
auto const rpc_ctx = add_rpc (system, node);
// create a send block
auto send1 = nano::state_block_builder ()
.account (nano::dev::genesis_key.pub)
.previous (nano::dev::genesis->hash ())
.representative (nano::dev::genesis_key.pub)
.balance (nano::dev::constants.genesis_amount - 1)
.link (nano::public_key ())
.sign (nano::dev::genesis_key.prv, nano::dev::genesis_key.pub)
.work (*node->work_generate_blocking (nano::dev::genesis->hash ()))
.build_shared ();
// process the block and wait for it to show up in the election scheduler
node->process_active (send1);
ASSERT_TIMELY (10s, node->scheduler.size () == 1);
// now check the RPC call
boost::property_tree::ptree request;
request.put ("action", "stats");
request.put ("type", "objects");
auto response = wait_response (system, rpc_ctx, request);
auto es = response.get_child ("node").get_child ("election_scheduler");
ASSERT_EQ (es.get_child ("manual_queue").get<std::string> ("count"), "0");
ASSERT_EQ (es.get_child ("priority").get_child ("128").get<std::string> ("count"), "1");
}