Random generation utilities for tests
This commit is contained in:
parent
aa4ca10ba2
commit
49ed0cff7e
10 changed files with 70 additions and 30 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
#include <nano/lib/blocks.hpp>
|
#include <nano/lib/blocks.hpp>
|
||||||
#include <nano/node/transport/fake.hpp>
|
#include <nano/node/transport/fake.hpp>
|
||||||
#include <nano/test_common/chains.hpp>
|
#include <nano/test_common/chains.hpp>
|
||||||
|
#include <nano/test_common/random.hpp>
|
||||||
#include <nano/test_common/system.hpp>
|
#include <nano/test_common/system.hpp>
|
||||||
#include <nano/test_common/testutil.hpp>
|
#include <nano/test_common/testutil.hpp>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include <nano/node/fork_cache.hpp>
|
#include <nano/node/fork_cache.hpp>
|
||||||
|
#include <nano/test_common/random.hpp>
|
||||||
#include <nano/test_common/system.hpp>
|
#include <nano/test_common/system.hpp>
|
||||||
#include <nano/test_common/testutil.hpp>
|
#include <nano/test_common/testutil.hpp>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <nano/node/endpoint.hpp>
|
#include <nano/node/endpoint.hpp>
|
||||||
#include <nano/node/network.hpp>
|
#include <nano/node/network.hpp>
|
||||||
#include <nano/secure/vote.hpp>
|
#include <nano/secure/vote.hpp>
|
||||||
|
#include <nano/test_common/random.hpp>
|
||||||
#include <nano/test_common/testutil.hpp>
|
#include <nano/test_common/testutil.hpp>
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include <nano/lib/blocks.hpp>
|
#include <nano/lib/blocks.hpp>
|
||||||
#include <nano/node/transport/message_deserializer.hpp>
|
#include <nano/node/transport/message_deserializer.hpp>
|
||||||
#include <nano/secure/vote.hpp>
|
#include <nano/secure/vote.hpp>
|
||||||
|
#include <nano/test_common/random.hpp>
|
||||||
#include <nano/test_common/system.hpp>
|
#include <nano/test_common/system.hpp>
|
||||||
#include <nano/test_common/testutil.hpp>
|
#include <nano/test_common/testutil.hpp>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include <nano/node/election.hpp>
|
#include <nano/node/election.hpp>
|
||||||
#include <nano/node/vote_cache.hpp>
|
#include <nano/node/vote_cache.hpp>
|
||||||
|
#include <nano/test_common/random.hpp>
|
||||||
#include <nano/test_common/system.hpp>
|
#include <nano/test_common/system.hpp>
|
||||||
#include <nano/test_common/testutil.hpp>
|
#include <nano/test_common/testutil.hpp>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ add_library(
|
||||||
make_store.cpp
|
make_store.cpp
|
||||||
network.hpp
|
network.hpp
|
||||||
network.cpp
|
network.cpp
|
||||||
|
random.hpp
|
||||||
|
random.cpp
|
||||||
rate_observer.cpp
|
rate_observer.cpp
|
||||||
rate_observer.hpp
|
rate_observer.hpp
|
||||||
system.hpp
|
system.hpp
|
||||||
|
|
|
||||||
46
nano/test_common/random.cpp
Normal file
46
nano/test_common/random.cpp
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#include <nano/crypto_lib/random_pool.hpp>
|
||||||
|
#include <nano/test_common/random.hpp>
|
||||||
|
|
||||||
|
nano::hash_or_account nano::test::random_hash_or_account ()
|
||||||
|
{
|
||||||
|
nano::hash_or_account random_hash;
|
||||||
|
nano::random_pool::generate_block (random_hash.bytes.data (), random_hash.bytes.size ());
|
||||||
|
return random_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
nano::block_hash nano::test::random_hash ()
|
||||||
|
{
|
||||||
|
return nano::test::random_hash_or_account ().as_block_hash ();
|
||||||
|
}
|
||||||
|
|
||||||
|
nano::account nano::test::random_account ()
|
||||||
|
{
|
||||||
|
return nano::test::random_hash_or_account ().as_account ();
|
||||||
|
}
|
||||||
|
|
||||||
|
nano::qualified_root nano::test::random_qualified_root ()
|
||||||
|
{
|
||||||
|
return { nano::test::random_hash (), nano::test::random_hash () };
|
||||||
|
}
|
||||||
|
|
||||||
|
nano::amount nano::test::random_amount ()
|
||||||
|
{
|
||||||
|
nano::amount result;
|
||||||
|
nano::random_pool::generate_block (result.bytes.data (), result.bytes.size ());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<nano::block> nano::test::random_block ()
|
||||||
|
{
|
||||||
|
nano::keypair key;
|
||||||
|
auto block = std::make_shared<nano::state_block> (
|
||||||
|
nano::test::random_account (),
|
||||||
|
nano::test::random_hash (),
|
||||||
|
nano::test::random_account (),
|
||||||
|
nano::test::random_amount (),
|
||||||
|
nano::test::random_hash (),
|
||||||
|
key.prv,
|
||||||
|
key.pub,
|
||||||
|
0);
|
||||||
|
return block;
|
||||||
|
}
|
||||||
17
nano/test_common/random.hpp
Normal file
17
nano/test_common/random.hpp
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <nano/lib/blocks.hpp>
|
||||||
|
#include <nano/secure/common.hpp>
|
||||||
|
|
||||||
|
namespace nano::test
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Random generators
|
||||||
|
*/
|
||||||
|
nano::hash_or_account random_hash_or_account ();
|
||||||
|
nano::block_hash random_hash ();
|
||||||
|
nano::account random_account ();
|
||||||
|
nano::qualified_root random_qualified_root ();
|
||||||
|
nano::amount random_amount ();
|
||||||
|
std::shared_ptr<nano::block> random_block ();
|
||||||
|
}
|
||||||
|
|
@ -50,23 +50,6 @@ void nano::test::wait_peer_connections (nano::test::system & system_a)
|
||||||
wait_peer_count (false);
|
wait_peer_count (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
nano::hash_or_account nano::test::random_hash_or_account ()
|
|
||||||
{
|
|
||||||
nano::hash_or_account random_hash;
|
|
||||||
nano::random_pool::generate_block (random_hash.bytes.data (), random_hash.bytes.size ());
|
|
||||||
return random_hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
nano::block_hash nano::test::random_hash ()
|
|
||||||
{
|
|
||||||
return nano::test::random_hash_or_account ().as_block_hash ();
|
|
||||||
}
|
|
||||||
|
|
||||||
nano::account nano::test::random_account ()
|
|
||||||
{
|
|
||||||
return nano::test::random_hash_or_account ().as_account ();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool nano::test::process (nano::node & node, std::vector<std::shared_ptr<nano::block>> blocks)
|
bool nano::test::process (nano::node & node, std::vector<std::shared_ptr<nano::block>> blocks)
|
||||||
{
|
{
|
||||||
auto const transaction = node.ledger.tx_begin_write ();
|
auto const transaction = node.ledger.tx_begin_write ();
|
||||||
|
|
|
||||||
|
|
@ -265,19 +265,6 @@ namespace test
|
||||||
|
|
||||||
void wait_peer_connections (nano::test::system &);
|
void wait_peer_connections (nano::test::system &);
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate a random block hash
|
|
||||||
*/
|
|
||||||
nano::hash_or_account random_hash_or_account ();
|
|
||||||
/**
|
|
||||||
* Generate a random block hash
|
|
||||||
*/
|
|
||||||
nano::block_hash random_hash ();
|
|
||||||
/**
|
|
||||||
* Generate a random block hash
|
|
||||||
*/
|
|
||||||
nano::account random_account ();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Convenience function to call `node::process` function for multiple blocks at once.
|
Convenience function to call `node::process` function for multiple blocks at once.
|
||||||
@return true if all blocks were successfully processed and inserted into ledger
|
@return true if all blocks were successfully processed and inserted into ledger
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue