diff --git a/rai/core_test/ledger.cpp b/rai/core_test/ledger.cpp index 5169f0eae..cf9ccf4c0 100644 --- a/rai/core_test/ledger.cpp +++ b/rai/core_test/ledger.cpp @@ -478,7 +478,9 @@ TEST (system, generate_send_existing) rai::transaction transaction (system.wallet (0)->store.environment, nullptr, false); ASSERT_FALSE (system.nodes [0]->store.account_get (transaction, rai::test_genesis_key.pub, info1)); } - system.generate_send_existing (*system.nodes [0]); + std::vector accounts; + accounts.push_back (rai::test_genesis_key.pub); + system.generate_send_existing (*system.nodes [0], accounts); rai::account_info info2; { rai::transaction transaction (system.wallet (0)->store.environment, nullptr, false); @@ -512,7 +514,9 @@ TEST (system, generate_send_new) ++iterator1; ASSERT_EQ (system.nodes [0]->store.latest_end (), iterator1); } - system.generate_send_new (*system.nodes [0]); + std::vector accounts; + accounts.push_back (rai::test_genesis_key.pub); + system.generate_send_new (*system.nodes [0], accounts); rai::account new_account (0); { rai::transaction transaction (system.nodes [0]->store.environment, nullptr, false); diff --git a/rai/node/testing.cpp b/rai/node/testing.cpp index 749eea8cd..d07d2afad 100644 --- a/rai/node/testing.cpp +++ b/rai/node/testing.cpp @@ -94,13 +94,14 @@ public: { auto count_l (count - 1); count = count_l - 1; - system.generate_activity (*node); + system.generate_activity (*node, accounts); if (count_l > 0) { auto this_l (shared_from_this ()); node->service.add (std::chrono::system_clock::now () + std::chrono::milliseconds (wait), [this_l] () {this_l->run ();}); } } + std::vector accounts; uint32_t count; uint32_t wait; std::shared_ptr node; @@ -124,24 +125,23 @@ void rai::system::generate_usage_traffic (uint32_t count_a, uint32_t wait_a, siz generate->run (); } -void rai::system::generate_activity (rai::node & node_a) +void rai::system::generate_activity (rai::node & node_a, std::vector & accounts_a) { auto what (random_pool.GenerateByte ()); if (what < 0xc0) { - generate_send_existing (node_a); + generate_send_existing (node_a, accounts_a); } else { - generate_send_new (node_a); + generate_send_new (node_a, accounts_a); } } -rai::account rai::system::get_random_account (MDB_txn * transaction_a, rai::node & node_a) +rai::account rai::system::get_random_account (std::vector & accounts_a) { - auto accounts (wallet (0)->store.accounts (transaction_a)); - auto index (random_pool.GenerateWord32 (0, accounts.size () - 1)); - auto result (accounts [index]); + auto index (random_pool.GenerateWord32 (0, accounts_a.size () - 1)); + auto result (accounts_a [index]); return result; } @@ -156,7 +156,7 @@ rai::uint128_t rai::system::get_random_amount (MDB_txn * transaction_a, rai::nod return result; } -void rai::system::generate_send_existing (rai::node & node_a) +void rai::system::generate_send_existing (rai::node & node_a, std::vector & accounts_a) { rai::uint128_t amount; rai::account destination; @@ -172,13 +172,13 @@ void rai::system::generate_send_existing (rai::node & node_a) } assert (entry != node_a.store.latest_end ()); destination = rai::account (entry->first); - source = get_random_account (transaction, node_a); + source = get_random_account (accounts_a); amount = get_random_amount (transaction, node_a, source); } wallet (0)->send_sync (source, destination, amount); } -void rai::system::generate_send_new (rai::node & node_a) +void rai::system::generate_send_new (rai::node & node_a, std::vector & accounts_a) { assert (node_a.wallets.items.size () == 1); rai::keypair key; @@ -186,26 +186,30 @@ void rai::system::generate_send_new (rai::node & node_a) rai::account source; { rai::transaction transaction (node_a.store.environment, nullptr, false); - source = get_random_account (transaction, node_a); + source = get_random_account (accounts_a); amount = get_random_amount (transaction, node_a, source); } + accounts_a.push_back (key.pub); node_a.wallets.items.begin ()->second->insert (key.prv); node_a.wallets.items.begin ()->second->send_sync (source, key.pub, amount); } void rai::system::generate_mass_activity (uint32_t count_a, rai::node & node_a) { + std::vector accounts; + wallet (0)->insert (rai::test_genesis_key.prv); + accounts.push_back (rai::test_genesis_key.pub); auto previous (std::chrono::system_clock::now ()); for (uint32_t i (0); i < count_a; ++i) { - if ((i & 0x3ff) == 0) + if ((i & 0xfff) == 0) { auto now (std::chrono::system_clock::now ()); - auto ms (std::chrono::duration_cast (now - previous).count ()); - std::cerr << boost::str (boost::format ("Mass activity iteration %1% ms %2% ms/t %3%\n") % i % ms % (ms / 256)); + auto us (std::chrono::duration_cast (now - previous).count ()); + std::cerr << boost::str (boost::format ("Mass activity iteration %1% us %2% us/t %3%\n") % i % us % (us / 256)); previous = now; } - generate_activity (node_a); + generate_activity (node_a, accounts); } } diff --git a/rai/node/testing.hpp b/rai/node/testing.hpp index a7ffa2065..a9dedd06a 100644 --- a/rai/node/testing.hpp +++ b/rai/node/testing.hpp @@ -9,14 +9,14 @@ class system public: system (uint16_t, size_t); ~system (); - void generate_activity (rai::node &); + void generate_activity (rai::node &, std::vector &); void generate_mass_activity (uint32_t, rai::node &); void generate_usage_traffic (uint32_t, uint32_t, size_t); void generate_usage_traffic (uint32_t, uint32_t); - rai::account get_random_account (MDB_txn *, rai::node &); + rai::account get_random_account (std::vector &); rai::uint128_t get_random_amount (MDB_txn *, rai::node &, rai::account const &); - void generate_send_new (rai::node &); - void generate_send_existing (rai::node &); + void generate_send_new (rai::node &, std::vector &); + void generate_send_existing (rai::node &, std::vector &); std::shared_ptr wallet (size_t); rai::account account (MDB_txn *, size_t); void poll (); diff --git a/rai/rai_node/entry.cpp b/rai/rai_node/entry.cpp index 960bf3d88..34773aff5 100644 --- a/rai/rai_node/entry.cpp +++ b/rai/rai_node/entry.cpp @@ -183,8 +183,7 @@ int main (int argc, char * const * argv) else if (vm.count ("debug_mass_activity")) { rai::system system (24000, 1); - system.wallet (0)->insert (rai::test_genesis_key.prv); - size_t count (10000); + size_t count (1000000); system.generate_mass_activity (count, *system.nodes [0]); } else if (vm.count ("debug_profile_kdf"))