Rpc endpoint for election statistics (#4533)
This commit is contained in:
parent
7dbf75e2e9
commit
311bf685bf
3 changed files with 55 additions and 0 deletions
|
|
@ -2002,6 +2002,44 @@ void nano::json_handler::confirmation_active ()
|
||||||
response_errors ();
|
response_errors ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nano::json_handler::election_statistics ()
|
||||||
|
{
|
||||||
|
auto active_elections = node.active.list_active ();
|
||||||
|
unsigned normal_count = 0;
|
||||||
|
unsigned hinted_count = 0;
|
||||||
|
unsigned optimistic_count = 0;
|
||||||
|
unsigned total_count = 0;
|
||||||
|
|
||||||
|
for (auto const & election : active_elections)
|
||||||
|
{
|
||||||
|
total_count++;
|
||||||
|
switch (election->behavior ())
|
||||||
|
{
|
||||||
|
case election_behavior::normal:
|
||||||
|
normal_count++;
|
||||||
|
break;
|
||||||
|
case election_behavior::hinted:
|
||||||
|
hinted_count++;
|
||||||
|
break;
|
||||||
|
case election_behavior::optimistic:
|
||||||
|
optimistic_count++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto utilization_percentage = (static_cast<double> (total_count * 100) / node.config.active_elections_size);
|
||||||
|
std::stringstream stream;
|
||||||
|
stream << std::fixed << std::setprecision (2) << utilization_percentage;
|
||||||
|
|
||||||
|
response_l.put ("normal", normal_count);
|
||||||
|
response_l.put ("hinted", hinted_count);
|
||||||
|
response_l.put ("optimistic", optimistic_count);
|
||||||
|
response_l.put ("total", total_count);
|
||||||
|
response_l.put ("aec_utilization_percentage", stream.str ());
|
||||||
|
|
||||||
|
response_errors ();
|
||||||
|
}
|
||||||
|
|
||||||
void nano::json_handler::confirmation_history ()
|
void nano::json_handler::confirmation_history ()
|
||||||
{
|
{
|
||||||
boost::property_tree::ptree elections;
|
boost::property_tree::ptree elections;
|
||||||
|
|
@ -5327,6 +5365,7 @@ ipc_json_handler_no_arg_func_map create_ipc_json_handler_no_arg_func_map ()
|
||||||
no_arg_funcs.emplace ("delegators", &nano::json_handler::delegators);
|
no_arg_funcs.emplace ("delegators", &nano::json_handler::delegators);
|
||||||
no_arg_funcs.emplace ("delegators_count", &nano::json_handler::delegators_count);
|
no_arg_funcs.emplace ("delegators_count", &nano::json_handler::delegators_count);
|
||||||
no_arg_funcs.emplace ("deterministic_key", &nano::json_handler::deterministic_key);
|
no_arg_funcs.emplace ("deterministic_key", &nano::json_handler::deterministic_key);
|
||||||
|
no_arg_funcs.emplace ("election_statistics", &nano::json_handler::election_statistics);
|
||||||
no_arg_funcs.emplace ("epoch_upgrade", &nano::json_handler::epoch_upgrade);
|
no_arg_funcs.emplace ("epoch_upgrade", &nano::json_handler::epoch_upgrade);
|
||||||
no_arg_funcs.emplace ("frontiers", &nano::json_handler::frontiers);
|
no_arg_funcs.emplace ("frontiers", &nano::json_handler::frontiers);
|
||||||
no_arg_funcs.emplace ("frontier_count", &nano::json_handler::account_count);
|
no_arg_funcs.emplace ("frontier_count", &nano::json_handler::account_count);
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ public:
|
||||||
void accounts_pending ();
|
void accounts_pending ();
|
||||||
void accounts_receivable ();
|
void accounts_receivable ();
|
||||||
void active_difficulty ();
|
void active_difficulty ();
|
||||||
|
void election_statistics ();
|
||||||
void available_supply ();
|
void available_supply ();
|
||||||
void block_info ();
|
void block_info ();
|
||||||
void block_confirm ();
|
void block_confirm ();
|
||||||
|
|
|
||||||
|
|
@ -6866,3 +6866,18 @@ TEST (rpc, confirmation_info)
|
||||||
ASSERT_EQ (0, response.get<unsigned> ("total_tally"));
|
ASSERT_EQ (0, response.get<unsigned> ("total_tally"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST (rpc, election_statistics)
|
||||||
|
{
|
||||||
|
nano::test::system system;
|
||||||
|
auto node1 = add_ipc_enabled_node (system);
|
||||||
|
auto const rpc_ctx = add_rpc (system, node1);
|
||||||
|
boost::property_tree::ptree request1;
|
||||||
|
request1.put ("action", "election_statistics");
|
||||||
|
auto response1 (wait_response (system, rpc_ctx, request1));
|
||||||
|
ASSERT_EQ ("0", response1.get<std::string> ("normal"));
|
||||||
|
ASSERT_EQ ("0", response1.get<std::string> ("hinted"));
|
||||||
|
ASSERT_EQ ("0", response1.get<std::string> ("optimistic"));
|
||||||
|
ASSERT_EQ ("0", response1.get<std::string> ("total"));
|
||||||
|
ASSERT_EQ ("0.00", response1.get<std::string> ("aec_utilization_percentage"));
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue