Skip to content
Snippets Groups Projects
Commit 7def4045 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Attempt to improve net test reliability

parent 4436547f
No related branches found
No related tags found
No related merge requests found
Pipeline #28097 failed
...@@ -12,6 +12,15 @@ using std::chrono::milliseconds; ...@@ -12,6 +12,15 @@ using std::chrono::milliseconds;
// --- Support ----------------------------------------------------------------- // --- Support -----------------------------------------------------------------
static bool try_for(int count, const std::function<bool()> &f) {
int i=count;
while (i-- > 0) {
if (f()) return true;
sleep_for(milliseconds(10));
}
return false;
}
// --- Tests ------------------------------------------------------------------- // --- Tests -------------------------------------------------------------------
TEST_CASE("Universe::connect()", "[net]") { TEST_CASE("Universe::connect()", "[net]") {
...@@ -44,7 +53,7 @@ TEST_CASE("Universe::connect()", "[net]") { ...@@ -44,7 +53,7 @@ TEST_CASE("Universe::connect()", "[net]") {
auto p = b.connect("http://127.0.0.1:7077"); auto p = b.connect("http://127.0.0.1:7077");
REQUIRE( !p->isValid() ); REQUIRE( !p->isValid() );
sleep_for(milliseconds(100)); sleep_for(milliseconds(50));
REQUIRE( a.numberOfPeers() == 0 ); REQUIRE( a.numberOfPeers() == 0 );
REQUIRE( b.numberOfPeers() == 0 ); REQUIRE( b.numberOfPeers() == 0 );
...@@ -91,8 +100,8 @@ TEST_CASE("Universe::onConnect()", "[net]") { ...@@ -91,8 +100,8 @@ TEST_CASE("Universe::onConnect()", "[net]") {
}); });
b.connect("tcp://localhost:7077")->waitConnection(); b.connect("tcp://localhost:7077")->waitConnection();
sleep_for(milliseconds(100));
REQUIRE( done ); REQUIRE( try_for(20, [&done]{ return done; }) );
} }
SECTION("single valid init connection") { SECTION("single valid init connection") {
...@@ -123,10 +132,10 @@ TEST_CASE("Universe::onDisconnect()", "[net]") { ...@@ -123,10 +132,10 @@ TEST_CASE("Universe::onDisconnect()", "[net]") {
Peer *p = b.connect("tcp://localhost:7077"); Peer *p = b.connect("tcp://localhost:7077");
p->waitConnection(); p->waitConnection();
sleep_for(milliseconds(100)); sleep_for(milliseconds(20));
p->close(); p->close();
sleep_for(milliseconds(100));
REQUIRE( done ); REQUIRE( try_for(20, [&done]{ return done; }) );
} }
SECTION("single valid close") { SECTION("single valid close") {
...@@ -138,10 +147,10 @@ TEST_CASE("Universe::onDisconnect()", "[net]") { ...@@ -138,10 +147,10 @@ TEST_CASE("Universe::onDisconnect()", "[net]") {
Peer *p = b.connect("tcp://localhost:7077"); Peer *p = b.connect("tcp://localhost:7077");
p->waitConnection(); p->waitConnection();
sleep_for(milliseconds(100)); sleep_for(milliseconds(20));
p->close(); p->close();
sleep_for(milliseconds(100));
REQUIRE( done ); REQUIRE( try_for(20, [&done]{ return done; }) );
} }
} }
...@@ -173,9 +182,7 @@ TEST_CASE("Universe::broadcast()", "[net]") { ...@@ -173,9 +182,7 @@ TEST_CASE("Universe::broadcast()", "[net]") {
b.broadcast("hello"); b.broadcast("hello");
while (!done) sleep_for(milliseconds(5)); REQUIRE( try_for(20, [&done]{ return done; }) );
REQUIRE( done );
} }
SECTION("one argument to one peer") { SECTION("one argument to one peer") {
...@@ -188,9 +195,7 @@ TEST_CASE("Universe::broadcast()", "[net]") { ...@@ -188,9 +195,7 @@ TEST_CASE("Universe::broadcast()", "[net]") {
b.broadcast("hello", 676); b.broadcast("hello", 676);
while (done == 0) sleep_for(milliseconds(5)); REQUIRE( try_for(20, [&done]{ return done == 676; }) );
REQUIRE( done == 676 );
} }
SECTION("one argument to two peers") { SECTION("one argument to two peers") {
...@@ -214,10 +219,7 @@ TEST_CASE("Universe::broadcast()", "[net]") { ...@@ -214,10 +219,7 @@ TEST_CASE("Universe::broadcast()", "[net]") {
a.broadcast("hello", 676); a.broadcast("hello", 676);
sleep_for(milliseconds(100)); REQUIRE( try_for(20, [&done1, &done2]{ return done1 == 676 && done2 == 676; }) );
REQUIRE( done1 == 676 );
REQUIRE( done2 == 676 );
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment