Putting peer_container tests in their own file.

This commit is contained in:
clemahieu 2014-10-27 17:24:11 -05:00
commit f7442e51d0
3 changed files with 79 additions and 115 deletions

View file

@ -55,6 +55,7 @@ add_executable (test
rai/test/entry.cpp
rai/test/ledger.cpp
rai/test/processor_service.cpp
rai/test/peer_container.cpp
rai/test/network.cpp
rai/test/uint256_union.cpp
rai/test/wallet_test.cpp

View file

@ -63,50 +63,6 @@ TEST (network, self_discard)
ASSERT_EQ (1, system.clients [0]->network.bad_sender_count);
}
TEST (peer_container, empty_peers)
{
rai::peer_container peers (rai::endpoint {});
auto list (peers.purge_list (std::chrono::system_clock::now ()));
ASSERT_EQ (0, list.size ());
}
TEST (peer_container, no_recontact)
{
rai::peer_container peers (rai::endpoint {});
rai::endpoint endpoint1 (boost::asio::ip::address_v4 (0x7f000001), 10000);
ASSERT_EQ (0, peers.size ());
ASSERT_FALSE (peers.contacting_peer (endpoint1));
ASSERT_EQ (1, peers.size ());
ASSERT_TRUE (peers.contacting_peer (endpoint1));
}
TEST (peer_container, no_self_incoming)
{
rai::endpoint self (boost::asio::ip::address_v4 (0x7f000001), 10000);
rai::peer_container peers (self);
peers.incoming_from_peer (self);
ASSERT_TRUE (peers.peers.empty ());
}
TEST (peer_container, no_self_contacting)
{
rai::endpoint self (boost::asio::ip::address_v4 (0x7f000001), 10000);
rai::peer_container peers (self);
peers.contacting_peer (self);
ASSERT_TRUE (peers.peers.empty ());
}
TEST (peer_container, old_known)
{
rai::endpoint self (boost::asio::ip::address_v4 (0x7f000001), 10000);
rai::endpoint other (boost::asio::ip::address_v4 (0x7f000001), 10001);
rai::peer_container peers (self);
peers.contacting_peer (other);
ASSERT_FALSE (peers.known_peer (other));
peers.incoming_from_peer (other);
ASSERT_TRUE (peers.known_peer (other));
}
TEST (keepalive_req, deserialize)
{
rai::keepalive_req message1;
@ -139,69 +95,6 @@ TEST (keepalive_ack, deserialize)
ASSERT_EQ (message1.peers, message2.peers);
}
TEST (peer_container, reserved_peers_no_contact)
{
rai::peer_container peers (rai::endpoint {});
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0x00000001), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xc0000201), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xc6336401), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xcb007101), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xe9fc0001), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xf0000001), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xffffffff), 10000)));
ASSERT_EQ (0, peers.size ());
}
TEST (peer_container, split)
{
rai::peer_container peers (rai::endpoint {});
auto now (std::chrono::system_clock::now ());
rai::endpoint endpoint1 (boost::asio::ip::address_v4::any (), 100);
rai::endpoint endpoint2 (boost::asio::ip::address_v4::any (), 101);
peers.peers.insert ({endpoint1, now - std::chrono::seconds (1), now - std::chrono::seconds (1)});
peers.peers.insert ({endpoint2, now + std::chrono::seconds (1), now + std::chrono::seconds (1)});
auto list (peers.purge_list (now));
ASSERT_EQ (1, list.size ());
ASSERT_EQ (endpoint2, list [0].endpoint);
}
TEST (peer_container, fill_random_clear)
{
rai::peer_container peers (rai::endpoint {});
std::array <rai::endpoint, 24> target;
std::fill (target.begin (), target.end (), rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000));
peers.random_fill (target);
ASSERT_TRUE (std::all_of (target.begin (), target.end (), [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0), 0); }));
}
TEST (peer_container, fill_random_full)
{
rai::peer_container peers (rai::endpoint {});
for (auto i (0); i < 100; ++i)
{
peers.incoming_from_peer (rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), i));
}
std::array <rai::endpoint, 24> target;
std::fill (target.begin (), target.end (), rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000));
peers.random_fill (target);
ASSERT_TRUE (std::none_of (target.begin (), target.end (), [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000); }));
}
TEST (peer_container, fill_random_part)
{
rai::peer_container peers (rai::endpoint {});
for (auto i (0); i < 16; ++i)
{
peers.incoming_from_peer (rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), i + 1));
}
std::array <rai::endpoint, 24> target;
std::fill (target.begin (), target.end (), rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000));
peers.random_fill (target);
ASSERT_TRUE (std::none_of (target.begin (), target.begin () + 16, [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000); }));
ASSERT_TRUE (std::none_of (target.begin (), target.begin () + 16, [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 0); }));
ASSERT_TRUE (std::all_of (target.begin () + 16, target.end (), [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0), 0); }));
}
TEST (network, send_keepalive)
{
rai::system system (24000, 2);

View file

@ -1,11 +1,28 @@
#include <gtest/gtest.h>
#include <rai/core/core.hpp>
TEST (peer_container, empty_peers)
{
rai::peer_container peers (rai::endpoint {});
auto list (peers.purge_list (std::chrono::system_clock::now ()));
ASSERT_EQ (0, list.size ());
}
TEST (peer_container, no_recontact)
{
rai::peer_container peers (rai::endpoint {});
rai::endpoint endpoint1 (boost::asio::ip::address_v4 (0x7f000001), 10000);
ASSERT_EQ (0, peers.size ());
ASSERT_FALSE (peers.contacting_peer (endpoint1));
ASSERT_EQ (1, peers.size ());
ASSERT_TRUE (peers.contacting_peer (endpoint1));
}
TEST (peer_container, no_self_incoming)
{
rai::endpoint self (boost::asio::ip::address_v4 (0x7f000001), 10000);
rai::peer_container peers (self);
ASSERT_FALSE (peers.incoming_from_peer (self));
peers.incoming_from_peer (self);
ASSERT_TRUE (peers.peers.empty ());
}
@ -28,12 +45,65 @@ TEST (peer_container, old_known)
ASSERT_TRUE (peers.known_peer (other));
}
TEST (peer_container, exists)
TEST (peer_container, reserved_peers_no_contact)
{
rai::endpoint self (boost::asio::ip::address_v4 (0x7f000001), 10000);
rai::endpoint other (boost::asio::ip::address_v4 (0x7f000001), 10001);
rai::peer_container peers (self);
ASSERT_TRUE (peers.incoming_from_peer (other));
ASSERT_TRUE (peers.known_peer (other));
ASSERT_FALSE (peers.incoming_from_peer (other));
rai::peer_container peers (rai::endpoint {});
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0x00000001), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xc0000201), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xc6336401), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xcb007101), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xe9fc0001), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xf0000001), 10000)));
ASSERT_TRUE (peers.contacting_peer (rai::endpoint (boost::asio::ip::address_v4 (0xffffffff), 10000)));
ASSERT_EQ (0, peers.size ());
}
TEST (peer_container, split)
{
rai::peer_container peers (rai::endpoint {});
auto now (std::chrono::system_clock::now ());
rai::endpoint endpoint1 (boost::asio::ip::address_v4::any (), 100);
rai::endpoint endpoint2 (boost::asio::ip::address_v4::any (), 101);
peers.peers.insert ({endpoint1, now - std::chrono::seconds (1), now - std::chrono::seconds (1)});
peers.peers.insert ({endpoint2, now + std::chrono::seconds (1), now + std::chrono::seconds (1)});
auto list (peers.purge_list (now));
ASSERT_EQ (1, list.size ());
ASSERT_EQ (endpoint2, list [0].endpoint);
}
TEST (peer_container, fill_random_clear)
{
rai::peer_container peers (rai::endpoint {});
std::array <rai::endpoint, 24> target;
std::fill (target.begin (), target.end (), rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000));
peers.random_fill (target);
ASSERT_TRUE (std::all_of (target.begin (), target.end (), [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0), 0); }));
}
TEST (peer_container, fill_random_full)
{
rai::peer_container peers (rai::endpoint {});
for (auto i (0); i < 100; ++i)
{
peers.incoming_from_peer (rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), i));
}
std::array <rai::endpoint, 24> target;
std::fill (target.begin (), target.end (), rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000));
peers.random_fill (target);
ASSERT_TRUE (std::none_of (target.begin (), target.end (), [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000); }));
}
TEST (peer_container, fill_random_part)
{
rai::peer_container peers (rai::endpoint {});
for (auto i (0); i < 16; ++i)
{
peers.incoming_from_peer (rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), i + 1));
}
std::array <rai::endpoint, 24> target;
std::fill (target.begin (), target.end (), rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000));
peers.random_fill (target);
ASSERT_TRUE (std::none_of (target.begin (), target.begin () + 16, [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 10000); }));
ASSERT_TRUE (std::none_of (target.begin (), target.begin () + 16, [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0x7f000001), 0); }));
ASSERT_TRUE (std::all_of (target.begin () + 16, target.end (), [] (rai::endpoint const & endpoint_a) {return endpoint_a == rai::endpoint (boost::asio::ip::address_v4 (0), 0); }));
}