Testing for absense of source block in elections.

This commit is contained in:
clemahieu 2018-08-04 17:12:16 +01:00
commit f0aaf96274

View file

@ -72,3 +72,38 @@ TEST (votes, contested)
votes.rep_votes[rai::test_genesis_key.pub] = block2;
ASSERT_FALSE (votes.uncontested ());
}
TEST (conflicts, rollback_source)
{
rai::system system (24000, 2);
auto & node1 (*system.nodes[0]);
auto & node2 (*system.nodes[1]);
rai::genesis genesis;
rai::keypair key1;
system.wallet(0)->insert_adhoc (rai::test_genesis_key.prv);
auto send1 (std::make_shared<rai::state_block> (rai::test_genesis_key.pub, genesis.hash (), rai::test_genesis_key.pub, rai::genesis_amount - rai::Gxrb_ratio, key1.pub, rai::test_genesis_key.prv, rai::test_genesis_key.pub, system.work.generate(genesis.hash ())));
ASSERT_EQ (rai::process_result::progress, node2.process (*send1).code);
ASSERT_FALSE (node2.active.start (send1));
ASSERT_EQ (rai::process_result::progress, node1.process (*send1).code);
ASSERT_FALSE (node1.active.start (send1));
auto send2 (std::make_shared<rai::state_block> (rai::test_genesis_key.pub, send1->hash (), rai::test_genesis_key.pub, rai::genesis_amount - 2 * rai::Gxrb_ratio, key1.pub, rai::test_genesis_key.prv, rai::test_genesis_key.pub, system.work.generate(send1->hash ())));
ASSERT_EQ (rai::process_result::progress, node2.process (*send2).code);
ASSERT_FALSE (node2.active.start (send2));
auto send3 (std::make_shared<rai::state_block> (key1.pub, 0, key1.pub, rai::Gxrb_ratio, send1->hash (), key1.prv, key1.pub, system.work.generate(key1.pub)));
ASSERT_EQ (rai::process_result::progress, node2.process (*send3).code);
ASSERT_FALSE (node2.active.start (send3));
auto send4 (std::make_shared<rai::state_block> (key1.pub, send3->hash (), key1.pub, 2 * rai::Gxrb_ratio, send2->hash (), key1.prv, key1.pub, system.work.generate(send3->hash ())));
ASSERT_EQ (rai::process_result::progress, node2.process (*send4).code);
ASSERT_FALSE (node2.active.start (send4));
auto send5 (std::make_shared<rai::state_block> (rai::test_genesis_key.pub, send1->hash (), rai::test_genesis_key.pub, rai::genesis_amount - 3 * rai::Gxrb_ratio, key1.pub, rai::test_genesis_key.prv, rai::test_genesis_key.pub, system.work.generate(send1->hash ())));
ASSERT_EQ (rai::process_result::progress, node1.process(*send5).code);
ASSERT_FALSE (node1.active.start (send5));
while (!node2.active.active(*send4))
{
system.poll ();
}
while (node2.active.active(*send4))
{
system.poll ();
}
}