Skip to content

Commit

Permalink
Default include only confirmed data for RPC supporting it (#3276)
Browse files Browse the repository at this point in the history
  • Loading branch information
SergiySW authored May 12, 2021
1 parent 8eb6ff9 commit 16bd1d5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
10 changes: 5 additions & 5 deletions nano/node/json_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,7 @@ void nano::json_handler::account_balance ()
auto account (account_impl ());
if (!ec)
{
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", true);
auto balance (node.balance_pending (account, include_only_confirmed));
response_l.put ("balance", balance.first.convert_to<std::string> ());
response_l.put ("pending", balance.second.convert_to<std::string> ());
Expand Down Expand Up @@ -945,7 +945,7 @@ void nano::json_handler::accounts_pending ()
auto threshold (threshold_optional_impl ());
const bool source = request.get<bool> ("source", false);
const bool include_active = request.get<bool> ("include_active", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", true);
const bool sorting = request.get<bool> ("sorting", false);
auto simple (threshold.is_zero () && !source && !sorting); // if simple, response is a list of hashes for each account
boost::property_tree::ptree pending;
Expand Down Expand Up @@ -2860,7 +2860,7 @@ void nano::json_handler::pending ()
const bool source = request.get<bool> ("source", false);
const bool min_version = request.get<bool> ("min_version", false);
const bool include_active = request.get<bool> ("include_active", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", true);
const bool sorting = request.get<bool> ("sorting", false);
auto simple (threshold.is_zero () && !source && !min_version && !sorting); // if simple, response is a list of hashes
const bool should_sort = sorting && !simple;
Expand Down Expand Up @@ -2959,7 +2959,7 @@ void nano::json_handler::pending_exists ()
{
auto hash (hash_impl ());
const bool include_active = request.get<bool> ("include_active", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", true);
if (!ec)
{
auto transaction (node.store.tx_begin_read ());
Expand Down Expand Up @@ -4564,7 +4564,7 @@ void nano::json_handler::wallet_pending ()
const bool source = request.get<bool> ("source", false);
const bool min_version = request.get<bool> ("min_version", false);
const bool include_active = request.get<bool> ("include_active", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", false);
const bool include_only_confirmed = request.get<bool> ("include_only_confirmed", true);
if (!ec)
{
boost::property_tree::ptree pending;
Expand Down
32 changes: 21 additions & 11 deletions nano/rpc_test/rpc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,26 +211,27 @@ TEST (rpc, account_balance)
boost::property_tree::ptree request;
request.put ("action", "account_balance");
request.put ("account", nano::dev_genesis_key.pub.to_account ());

// The send and pending should be unconfirmed
{
test_response response (request, rpc.config.port, system.io_ctx);
ASSERT_TIMELY (5s, response.status != 0);
ASSERT_EQ (200, response.status);
std::string balance_text (response.json.get<std::string> ("balance"));
ASSERT_EQ ("340282366920938463463374607431768211454", balance_text);
ASSERT_EQ ("340282366920938463463374607431768211455", balance_text);
std::string pending_text (response.json.get<std::string> ("pending"));
ASSERT_EQ ("1", pending_text);
ASSERT_EQ ("0", pending_text);
}

// The send and pending should be unconfirmed
request.put ("include_only_confirmed", true);
request.put ("include_only_confirmed", false);
{
test_response response (request, rpc.config.port, system.io_ctx);
ASSERT_TIMELY (5s, response.status != 0);
ASSERT_EQ (200, response.status);
std::string balance_text (response.json.get<std::string> ("balance"));
ASSERT_EQ ("340282366920938463463374607431768211455", balance_text);
ASSERT_EQ ("340282366920938463463374607431768211454", balance_text);
std::string pending_text (response.json.get<std::string> ("pending"));
ASSERT_EQ ("0", pending_text);
ASSERT_EQ ("1", pending_text);
}
}

Expand Down Expand Up @@ -2307,12 +2308,15 @@ TEST (rpc, pending)
ASSERT_EQ (size, response.json.get_child ("blocks").size ());
};

request.put ("include_only_confirmed", "true");
check_block_response_count (1);
scoped_thread_name_io.reset ();
reset_confirmation_height (system.nodes.front ()->store, block1->account ());
scoped_thread_name_io.renew ();
check_block_response_count (0);
request.put ("include_only_confirmed", "false");
scoped_thread_name_io.renew ();
check_block_response_count (1);
request.put ("include_only_confirmed", "true");

// Sorting with a smaller count than total should give absolute sorted amounts
scoped_thread_name_io.reset ();
Expand Down Expand Up @@ -4055,12 +4059,14 @@ TEST (rpc, accounts_pending)
ASSERT_EQ (sources[block1->hash ()], nano::dev_genesis_key.pub);
}

request.put ("include_only_confirmed", "true");
check_block_response_count (system, rpc, request, 1);
scoped_thread_name_io.reset ();
reset_confirmation_height (system.nodes.front ()->store, block1->account ());
scoped_thread_name_io.renew ();
check_block_response_count (system, rpc, request, 0);
request.put ("include_only_confirmed", "false");
scoped_thread_name_io.renew ();
check_block_response_count (system, rpc, request, 1);
}

TEST (rpc, blocks)
Expand Down Expand Up @@ -4227,12 +4233,14 @@ TEST (rpc, pending_exists)
request.put ("hash", block1->hash ().to_string ());
pending_exists ("1");

request.put ("include_only_confirmed", "true");
pending_exists ("1");
scoped_thread_name_io.reset ();
reset_confirmation_height (node->store, block1->account ());
scoped_thread_name_io.renew ();
pending_exists ("0");
request.put ("include_only_confirmed", "false");
scoped_thread_name_io.renew ();
pending_exists ("1");
}

TEST (rpc, wallet_pending)
Expand All @@ -4246,7 +4254,7 @@ TEST (rpc, wallet_pending)
auto block1 (system0.wallet (0)->send_action (nano::dev_genesis_key.pub, key1.pub, 100));
scoped_io_thread_name_change scoped_thread_name_io;
node->scheduler.flush ();
while (node->active.active (*block1) || node->ledger.cache.cemented_count < 2)
while (node->active.active (*block1) || node->ledger.cache.cemented_count < 2 || !node->confirmation_height_processor.current ().is_zero () || node->confirmation_height_processor.awaiting_processing_size () != 0)
{
system0.poll ();
++iterations;
Expand Down Expand Up @@ -4341,7 +4349,6 @@ TEST (rpc, wallet_pending)
ASSERT_EQ (amounts[block1->hash ()], 100);
ASSERT_EQ (sources[block1->hash ()], nano::dev_genesis_key.pub);

request.put ("include_only_confirmed", "true");
check_block_response_count (system0, rpc, request, 1);
scoped_thread_name_io.reset ();
reset_confirmation_height (system0.nodes.front ()->store, block1->account ());
Expand All @@ -4356,6 +4363,9 @@ TEST (rpc, wallet_pending)
ASSERT_EQ (200, response.status);
ASSERT_EQ (0, response.json.get_child ("blocks").size ());
}
request.put ("include_only_confirmed", "false");
scoped_thread_name_io.renew ();
check_block_response_count (system0, rpc, request, 1);
}

TEST (rpc, receive_minimum)
Expand Down

0 comments on commit 16bd1d5

Please sign in to comment.