LCOV - code coverage report
Current view: top level - src/test - netfulfilledman_tests.cpp (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 30 30 100.0 %
Date: 2025-02-23 09:33:43 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright (c) 2022 The PIVX Core developers
       2             : // Distributed under the MIT software license, see the accompanying
       3             : // file COPYING or https://www.opensource.org/licenses/mit-license.php.
       4             : 
       5             : #include "netbase.h"
       6             : #include "test/test_pivx.h"
       7             : #include "tiertwo/netfulfilledman.h"
       8             : #include "utiltime.h"
       9             : 
      10             : #include <boost/test/unit_test.hpp>
      11             : 
      12             : BOOST_FIXTURE_TEST_SUITE(netfulfilledman_tests, RegTestingSetup)
      13             : 
      14           2 : BOOST_AUTO_TEST_CASE(netfulfilledman_simple_add_and_expire)
      15             : {
      16           1 :     int64_t now = GetTime();
      17           1 :     SetMockTime(now);
      18             : 
      19           1 :     CNetFulfilledRequestManager fulfilledMan(DEFAULT_ITEMS_FILTER_SIZE);
      20           2 :     CService service = LookupNumeric("1.1.1.1", 9999);
      21           2 :     std::string request = "request";
      22           1 :     BOOST_ASSERT(!fulfilledMan.HasFulfilledRequest(service, request));
      23             : 
      24             :     // Add request
      25           1 :     fulfilledMan.AddFulfilledRequest(service, request);
      26             :     // Verify that the request is there
      27           1 :     BOOST_ASSERT(fulfilledMan.HasFulfilledRequest(service, request));
      28             : 
      29             :     // Advance mock time to surpass FulfilledRequestExpireTime
      30           1 :     SetMockTime(GetMockTime() + 60 * 60 + 1);
      31             : 
      32             :     // Verify that the request exists and expired now
      33           2 :     BOOST_CHECK(fulfilledMan.Size() == 1);
      34           2 :     BOOST_CHECK(!fulfilledMan.HasFulfilledRequest(service, request));
      35             : 
      36             :     // Verify request removal
      37           1 :     fulfilledMan.CheckAndRemove();
      38           2 :     BOOST_CHECK(fulfilledMan.Size() == 0);
      39             : 
      40             :     // Items filter, insertion and lookup.
      41           1 :     uint256 item(g_insecure_rand_ctx.rand256());
      42           1 :     fulfilledMan.AddItemRequest(service, item);
      43           2 :     BOOST_CHECK(fulfilledMan.HasItemRequest(service, item));
      44             : 
      45           2 :     CService service2 = LookupNumeric("1.1.1.2", 9999);
      46           2 :     BOOST_CHECK(!fulfilledMan.HasItemRequest(service2, item));
      47             : 
      48             :     // Advance mock time to surpass the expiration time
      49           1 :     SetMockTime(GetMockTime() + DEFAULT_ITEMS_FILTER_CLEANUP + 1);
      50           1 :     fulfilledMan.CheckAndRemove();
      51           2 :     BOOST_CHECK(!fulfilledMan.HasItemRequest(service, item));
      52             : 
      53             :     // Now test filling up the filter
      54           1 :     fulfilledMan.AddItemRequest(service, item);
      55         301 :     for (int i = 0; i < 300; i++) {
      56         300 :         uint256 element(g_insecure_rand_ctx.rand256());
      57         300 :         fulfilledMan.AddItemRequest(service, element);
      58         600 :         BOOST_CHECK(fulfilledMan.HasItemRequest(service, element));
      59             :     }
      60             : 
      61           1 :     fulfilledMan.CheckAndRemove();
      62           2 :     BOOST_CHECK(!fulfilledMan.HasItemRequest(service, item));
      63           1 : }
      64             : 
      65             : BOOST_AUTO_TEST_SUITE_END()

Generated by: LCOV version 1.14