diff --git a/tests/unit_tests/ban.cpp b/tests/unit_tests/ban.cpp index 9816adb9..432d5bbf 100644 --- a/tests/unit_tests/ban.cpp +++ b/tests/unit_tests/ban.cpp @@ -33,6 +33,8 @@ #include "p2p/net_node.h" #include "cryptonote_protocol/cryptonote_protocol_handler.h" +#define MAKE_IPV4_ADDRESS(a,b,c,d) new epee::net_utils::ipv4_network_address(MAKE_IP(a,b,c,d),0) + namespace cryptonote { class blockchain_storage; } @@ -74,12 +76,13 @@ public: typedef nodetool::node_server> Server; -static bool is_blocked(Server &server, uint32_t ip, time_t *t = NULL) +static bool is_blocked(Server &server, const epee::net_utils::network_address &address, time_t *t = NULL) { - std::map ips = server.get_blocked_ips(); - for (auto rec: ips) + const std::string host = address.host_str(); + std::map hosts = server.get_blocked_hosts(); + for (auto rec: hosts) { - if (rec.first == ip) + if (rec.first == host) { if (t) *t = rec.second; @@ -97,80 +100,80 @@ TEST(ban, add) cprotocol.set_p2p_endpoint(&server); // starts empty - ASSERT_TRUE(server.get_blocked_ips().empty()); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.get_blocked_hosts().empty()); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // add an IP - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,4))); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // add the same, should not change - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,4))); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // remove an unblocked IP, should not change - ASSERT_FALSE(server.unblock_ip(MAKE_IP(1,2,3,5))); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_FALSE(server.unblock_host(MAKE_IPV4_ADDRESS(1,2,3,5))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // remove the IP, ends up empty - ASSERT_TRUE(server.unblock_ip(MAKE_IP(1,2,3,4))); - ASSERT_TRUE(server.get_blocked_ips().size() == 0); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.unblock_host(MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 0); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // remove the IP from an empty list, still empty - ASSERT_FALSE(server.unblock_ip(MAKE_IP(1,2,3,4))); - ASSERT_TRUE(server.get_blocked_ips().size() == 0); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_FALSE(server.unblock_host(MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 0); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // add two for known amounts of time, they're both blocked - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,4), 1)); - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,5), 3)); - ASSERT_TRUE(server.get_blocked_ips().size() == 2); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,5))); - ASSERT_TRUE(server.unblock_ip(MAKE_IP(1,2,3,4))); - ASSERT_TRUE(server.unblock_ip(MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,4), 1)); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,5), 3)); + ASSERT_TRUE(server.get_blocked_hosts().size() == 2); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); + ASSERT_TRUE(server.unblock_host(MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(server.unblock_host(MAKE_IPV4_ADDRESS(1,2,3,5))); // these tests would need to call is_remote_ip_allowed, which is private #if 0 // after two seconds, the first IP is unblocked, but not the second yet sleep(2); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); // after two more seconds, the second IP is also unblocked sleep(2); - ASSERT_TRUE(server.get_blocked_ips().size() == 0); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,4))); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.get_blocked_hosts().size() == 0); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4))); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); #endif // add an IP again, then re-ban for longer, then shorter time_t t; - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,4), 2)); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4), &t)); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,4), 2)); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4), &t)); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); ASSERT_TRUE(t >= 1); - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,4), 9)); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4), &t)); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,4), 9)); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4), &t)); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); ASSERT_TRUE(t >= 8); - ASSERT_TRUE(server.block_ip(MAKE_IP(1,2,3,4), 5)); - ASSERT_TRUE(server.get_blocked_ips().size() == 1); - ASSERT_TRUE(is_blocked(server,MAKE_IP(1,2,3,4), &t)); - ASSERT_FALSE(is_blocked(server,MAKE_IP(1,2,3,5))); + ASSERT_TRUE(server.block_host(MAKE_IPV4_ADDRESS(1,2,3,4), 5)); + ASSERT_TRUE(server.get_blocked_hosts().size() == 1); + ASSERT_TRUE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,4), &t)); + ASSERT_FALSE(is_blocked(server,MAKE_IPV4_ADDRESS(1,2,3,5))); ASSERT_TRUE(t >= 4); } diff --git a/tests/unit_tests/test_peerlist.cpp b/tests/unit_tests/test_peerlist.cpp index df56f38e..4a546b50 100644 --- a/tests/unit_tests/test_peerlist.cpp +++ b/tests/unit_tests/test_peerlist.cpp @@ -38,21 +38,22 @@ TEST(peer_list, peer_list_general) { nodetool::peerlist_manager plm; plm.init(false); -#define ADD_GRAY_NODE(ip_, port_, id_, last_seen_) { nodetool::peerlist_entry ple; ple.last_seen=last_seen_;ple.adr.ip = ip_; ple.adr.port = port_; ple.id = id_;plm.append_with_peer_gray(ple);} -#define ADD_WHITE_NODE(ip_, port_, id_, last_seen_) { nodetool::peerlist_entry ple;ple.last_seen=last_seen_; ple.adr.ip = ip_; ple.adr.port = port_; ple.id = id_;plm.append_with_peer_white(ple);} +#define MAKE_IPV4_ADDRESS(a,b,c,d,e) new epee::net_utils::ipv4_network_address(MAKE_IP(a,b,c,d),e) +#define ADD_GRAY_NODE(addr_, id_, last_seen_) { nodetool::peerlist_entry ple; ple.last_seen=last_seen_;ple.adr = addr_; ple.id = id_;plm.append_with_peer_gray(ple);} +#define ADD_WHITE_NODE(addr_, id_, last_seen_) { nodetool::peerlist_entry ple;ple.last_seen=last_seen_; ple.adr = addr_; ple.id = id_;plm.append_with_peer_white(ple);} #define PRINT_HEAD(step) {std::list bs_head; bool r = plm.get_peerlist_head(bs_head, 100);std::cout << "step " << step << ": " << bs_head.size() << std::endl;} - ADD_GRAY_NODE(MAKE_IP(123,43,12,1), 8080, 121241, 34345); - ADD_GRAY_NODE(MAKE_IP(123,43,12,2), 8080, 121241, 34345); - ADD_GRAY_NODE(MAKE_IP(123,43,12,3), 8080, 121241, 34345); - ADD_GRAY_NODE(MAKE_IP(123,43,12,4), 8080, 121241, 34345); - ADD_GRAY_NODE(MAKE_IP(123,43,12,5), 8080, 121241, 34345); + ADD_GRAY_NODE(MAKE_IPV4_ADDRESS(123,43,12,1, 8080), 121241, 34345); + ADD_GRAY_NODE(MAKE_IPV4_ADDRESS(123,43,12,2, 8080), 121241, 34345); + ADD_GRAY_NODE(MAKE_IPV4_ADDRESS(123,43,12,3, 8080), 121241, 34345); + ADD_GRAY_NODE(MAKE_IPV4_ADDRESS(123,43,12,4, 8080), 121241, 34345); + ADD_GRAY_NODE(MAKE_IPV4_ADDRESS(123,43,12,5, 8080), 121241, 34345); - ADD_WHITE_NODE(MAKE_IP(123,43,12,1), 8080, 121241, 34345); - ADD_WHITE_NODE(MAKE_IP(123,43,12,2), 8080, 121241, 34345); - ADD_WHITE_NODE(MAKE_IP(123,43,12,3), 8080, 121241, 34345); - ADD_WHITE_NODE(MAKE_IP(123,43,12,4), 8080, 121241, 34345); + ADD_WHITE_NODE(MAKE_IPV4_ADDRESS(123,43,12,1, 8080), 121241, 34345); + ADD_WHITE_NODE(MAKE_IPV4_ADDRESS(123,43,12,2, 8080), 121241, 34345); + ADD_WHITE_NODE(MAKE_IPV4_ADDRESS(123,43,12,3, 8080), 121241, 34345); + ADD_WHITE_NODE(MAKE_IPV4_ADDRESS(123,43,12,4, 8080), 121241, 34345); size_t gray_list_size = plm.get_gray_peers_count(); ASSERT_EQ(gray_list_size, 1); @@ -65,7 +66,7 @@ TEST(peer_list, peer_list_general) ASSERT_EQ(bs_head.size(), 4); - ADD_GRAY_NODE(MAKE_IP(123,43,12,5), 8080, 121241, 34345); + ADD_GRAY_NODE(MAKE_IPV4_ADDRESS(123,43,12,5, 8080), 121241, 34345); ASSERT_EQ(plm.get_gray_peers_count(), 1); ASSERT_EQ(plm.get_white_peers_count(), 4); }