// with activate
 void
 test_backoff2()
 {
     auto const seconds = 10000;
     testcase("backoff 2");
     TestStore store;
     TestChecker checker;
     TestStopwatch clock;
     Logic<TestChecker> logic (clock, store, checker, beast::Journal{});
     logic.addFixedPeer ("test",
         beast::IP::Endpoint::from_string("65.0.0.1:5"));
     {
         Config c;
         c.autoConnect = false;
         c.listeningPort = 1024;
         logic.config(c);
     }
     std::size_t n = 0;
     std::array<std::uint8_t, 33> key;
     key.fill(0);
     for (std::size_t i = 0; i < seconds; ++i)
     {
         auto const list = logic.autoconnect();
         if (! list.empty())
         {
             expect (list.size() == 1);
             auto const slot = logic.new_outbound_slot(list.front());
             if (! expect (logic.onConnected(slot,
                     beast::IP::Endpoint::from_string("65.0.0.2:5"))))
                 return;
             std::string s = ".";
             RipplePublicKey pk (key.begin(), key.end());
             if (! expect (logic.activate(slot, pk, false) ==
                     PeerFinder::Result::success, "activate"))
                 return;
             logic.on_closed(slot);
             ++n;
         }
         clock.advance(std::chrono::seconds(1));
         logic.once_per_second();
     }
     // No more often than once per minute
     expect (n <= (seconds+59)/60, "backoff");
 }
 void
 test_backoff1()
 {
     auto const seconds = 10000;
     testcase("backoff 1");
     TestStore store;
     TestChecker checker;
     TestStopwatch clock;
     Logic<TestChecker> logic (clock, store, checker, beast::Journal{});
     logic.addFixedPeer ("test",
         beast::IP::Endpoint::from_string("65.0.0.1:5"));
     {
         Config c;
         c.autoConnect = false;
         c.listeningPort = 1024;
         logic.config(c);
     }
     std::size_t n = 0;
     for (std::size_t i = 0; i < seconds; ++i)
     {
         auto const list = logic.autoconnect();
         if (! list.empty())
         {
             expect (list.size() == 1);
             auto const slot = logic.new_outbound_slot(list.front());
             expect (logic.onConnected(slot,
                 beast::IP::Endpoint::from_string("65.0.0.2:5")));
             logic.on_closed(slot);
             ++n;
         }
         clock.advance(std::chrono::seconds(1));
         logic.once_per_second();
     }
     // Less than 20 attempts
     expect (n < 20, "backoff");
 }
Exemple #3
0
 std::vector <beast::IP::Endpoint>
 autoconnect() override
 {
     return m_logic.autoconnect();
 }