Move online_reps tests
This commit is contained in:
parent
0b0c0adbd8
commit
d3b5ff8d8c
3 changed files with 73 additions and 65 deletions
|
|
@ -40,6 +40,7 @@ add_executable(
|
|||
numbers.cpp
|
||||
object_stream.cpp
|
||||
observer_set.cpp
|
||||
online_reps.cpp
|
||||
optimistic_scheduler.cpp
|
||||
processing_queue.cpp
|
||||
processor_service.cpp
|
||||
|
|
|
|||
|
|
@ -1566,71 +1566,6 @@ TEST (node, balance_observer)
|
|||
}
|
||||
}
|
||||
|
||||
TEST (node, online_reps)
|
||||
{
|
||||
nano::test::system system (1);
|
||||
auto & node1 (*system.nodes[0]);
|
||||
// 1 sample of minimum weight
|
||||
ASSERT_EQ (node1.config.online_weight_minimum, node1.online_reps.trended ());
|
||||
auto vote (std::make_shared<nano::vote> ());
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
node1.online_reps.observe (nano::dev::genesis_key.pub);
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount, node1.online_reps.online ());
|
||||
// 1 minimum, 1 maximum
|
||||
ASSERT_EQ (node1.config.online_weight_minimum, node1.online_reps.trended ());
|
||||
node1.online_reps.sample ();
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount, node1.online_reps.trended ());
|
||||
node1.online_reps.clear ();
|
||||
// 2 minimum, 1 maximum
|
||||
node1.online_reps.sample ();
|
||||
ASSERT_EQ (node1.config.online_weight_minimum, node1.online_reps.trended ());
|
||||
}
|
||||
|
||||
TEST (node, online_reps_rep_crawler)
|
||||
{
|
||||
nano::test::system system;
|
||||
nano::node_flags flags;
|
||||
flags.disable_rep_crawler = true;
|
||||
auto & node1 = *system.add_node (flags);
|
||||
auto vote = std::make_shared<nano::vote> (nano::dev::genesis_key.pub, nano::dev::genesis_key.prv, nano::milliseconds_since_epoch (), 0, std::vector<nano::block_hash>{ nano::dev::genesis->hash () });
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
// Without rep crawler
|
||||
node1.vote_processor.vote_blocking (vote, std::make_shared<nano::transport::fake::channel> (node1));
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
// After inserting to rep crawler
|
||||
auto channel = std::make_shared<nano::transport::fake::channel> (node1);
|
||||
node1.rep_crawler.force_query (nano::dev::genesis->hash (), channel);
|
||||
node1.vote_processor.vote_blocking (vote, channel);
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount, node1.online_reps.online ());
|
||||
}
|
||||
|
||||
TEST (node, online_reps_election)
|
||||
{
|
||||
nano::test::system system;
|
||||
nano::node_flags flags;
|
||||
flags.disable_rep_crawler = true;
|
||||
auto & node1 = *system.add_node (flags);
|
||||
// Start election
|
||||
nano::keypair key;
|
||||
nano::state_block_builder builder;
|
||||
auto send1 = builder.make_block ()
|
||||
.account (nano::dev::genesis_key.pub)
|
||||
.previous (nano::dev::genesis->hash ())
|
||||
.representative (nano::dev::genesis_key.pub)
|
||||
.balance (nano::dev::constants.genesis_amount - nano::Knano_ratio)
|
||||
.link (key.pub)
|
||||
.sign (nano::dev::genesis_key.prv, nano::dev::genesis_key.pub)
|
||||
.work (*node1.work_generate_blocking (nano::dev::genesis->hash ()))
|
||||
.build ();
|
||||
node1.process_active (send1);
|
||||
ASSERT_TIMELY_EQ (5s, 1, node1.active.size ());
|
||||
// Process vote for ongoing election
|
||||
auto vote = std::make_shared<nano::vote> (nano::dev::genesis_key.pub, nano::dev::genesis_key.prv, nano::milliseconds_since_epoch (), 0, std::vector<nano::block_hash>{ send1->hash () });
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
node1.vote_processor.vote_blocking (vote, std::make_shared<nano::transport::fake::channel> (node1));
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount - nano::Knano_ratio, node1.online_reps.online ());
|
||||
}
|
||||
|
||||
TEST (node, block_confirm)
|
||||
{
|
||||
auto type = nano::transport::transport_type::tcp;
|
||||
|
|
|
|||
72
nano/core_test/online_reps.cpp
Normal file
72
nano/core_test/online_reps.cpp
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#include <nano/node/online_reps.hpp>
|
||||
#include <nano/node/transport/fake.hpp>
|
||||
#include <nano/secure/vote.hpp>
|
||||
#include <nano/test_common/system.hpp>
|
||||
#include <nano/test_common/testutil.hpp>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST (online_reps, basic)
|
||||
{
|
||||
nano::test::system system (1);
|
||||
auto & node1 (*system.nodes[0]);
|
||||
// 1 sample of minimum weight
|
||||
ASSERT_EQ (node1.config.online_weight_minimum, node1.online_reps.trended ());
|
||||
auto vote (std::make_shared<nano::vote> ());
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
node1.online_reps.observe (nano::dev::genesis_key.pub);
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount, node1.online_reps.online ());
|
||||
// 1 minimum, 1 maximum
|
||||
ASSERT_EQ (node1.config.online_weight_minimum, node1.online_reps.trended ());
|
||||
node1.online_reps.sample ();
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount, node1.online_reps.trended ());
|
||||
node1.online_reps.clear ();
|
||||
// 2 minimum, 1 maximum
|
||||
node1.online_reps.sample ();
|
||||
ASSERT_EQ (node1.config.online_weight_minimum, node1.online_reps.trended ());
|
||||
}
|
||||
|
||||
TEST (online_reps, rep_crawler)
|
||||
{
|
||||
nano::test::system system;
|
||||
nano::node_flags flags;
|
||||
flags.disable_rep_crawler = true;
|
||||
auto & node1 = *system.add_node (flags);
|
||||
auto vote = std::make_shared<nano::vote> (nano::dev::genesis_key.pub, nano::dev::genesis_key.prv, nano::milliseconds_since_epoch (), 0, std::vector<nano::block_hash>{ nano::dev::genesis->hash () });
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
// Without rep crawler
|
||||
node1.vote_processor.vote_blocking (vote, std::make_shared<nano::transport::fake::channel> (node1));
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
// After inserting to rep crawler
|
||||
auto channel = std::make_shared<nano::transport::fake::channel> (node1);
|
||||
node1.rep_crawler.force_query (nano::dev::genesis->hash (), channel);
|
||||
node1.vote_processor.vote_blocking (vote, channel);
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount, node1.online_reps.online ());
|
||||
}
|
||||
|
||||
TEST (online_reps, election)
|
||||
{
|
||||
nano::test::system system;
|
||||
nano::node_flags flags;
|
||||
flags.disable_rep_crawler = true;
|
||||
auto & node1 = *system.add_node (flags);
|
||||
// Start election
|
||||
nano::keypair key;
|
||||
nano::state_block_builder builder;
|
||||
auto send1 = builder.make_block ()
|
||||
.account (nano::dev::genesis_key.pub)
|
||||
.previous (nano::dev::genesis->hash ())
|
||||
.representative (nano::dev::genesis_key.pub)
|
||||
.balance (nano::dev::constants.genesis_amount - nano::Knano_ratio)
|
||||
.link (key.pub)
|
||||
.sign (nano::dev::genesis_key.prv, nano::dev::genesis_key.pub)
|
||||
.work (*node1.work_generate_blocking (nano::dev::genesis->hash ()))
|
||||
.build ();
|
||||
node1.process_active (send1);
|
||||
ASSERT_TIMELY_EQ (5s, 1, node1.active.size ());
|
||||
// Process vote for ongoing election
|
||||
auto vote = std::make_shared<nano::vote> (nano::dev::genesis_key.pub, nano::dev::genesis_key.prv, nano::milliseconds_since_epoch (), 0, std::vector<nano::block_hash>{ send1->hash () });
|
||||
ASSERT_EQ (0, node1.online_reps.online ());
|
||||
node1.vote_processor.vote_blocking (vote, std::make_shared<nano::transport::fake::channel> (node1));
|
||||
ASSERT_EQ (nano::dev::constants.genesis_amount - nano::Knano_ratio, node1.online_reps.online ());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue