diff --git a/tests/automatic/asapo_fabric/parallel_data_transfer.cpp b/tests/automatic/asapo_fabric/parallel_data_transfer.cpp index fc99295efc270c7b364c28946a1b19363bf1f2ef..aa8b34547c820b42c93150703815f16e3dcb3673 100644 --- a/tests/automatic/asapo_fabric/parallel_data_transfer.cpp +++ b/tests/automatic/asapo_fabric/parallel_data_transfer.cpp @@ -30,7 +30,11 @@ void ServerChildThread(FabricServer* server, std::atomic<int>* serverTotalReques FabricAddress clientAddress; FabricMessageId messageId; - server->RecvAny(&clientAddress, &messageId, &request, sizeof(request), &err); + // In order to run the tests more stable. Otherwise a timeout could occurred with valgrind + int tries = 0; + do { + server->RecvAny(&clientAddress, &messageId, &request, sizeof(request), &err); + } while (err == IOErrorTemplates::kTimeout && tries++ < 2); M_AssertEq(nullptr, err, "server->RecvAny"); M_AssertEq("Hello World", request.message); M_AssertEq(messageId / kEachInstanceRuns, request.data_id); // is client index diff --git a/tests/automatic/asapo_fabric/simple_data_transfer.cpp b/tests/automatic/asapo_fabric/simple_data_transfer.cpp index 5c35f5a2cadc7a021e20a606906c288698ed0871..d5e4d9bda4bddb6d0a39e4d212ac46649bc7b9f6 100644 --- a/tests/automatic/asapo_fabric/simple_data_transfer.cpp +++ b/tests/automatic/asapo_fabric/simple_data_transfer.cpp @@ -35,7 +35,11 @@ void ServerMasterThread(const std::string& hostname, uint16_t port, char* expect FabricAddress clientAddress; FabricMessageId messageId; - server->RecvAny(&clientAddress, &messageId, &request, sizeof(request), &err); + // In order to run the tests more stable. Otherwise a timeout could occurred with valgrind + int tries = 0; + do { + server->RecvAny(&clientAddress, &messageId, &request, sizeof(request), &err); + } while (err == IOErrorTemplates::kTimeout && tries++ < 2); M_AssertEq(nullptr, err, "server->RecvAny"); M_AssertEq(123 + instanceRuns, messageId); M_AssertEq("Hello World", request.message); diff --git a/tests/automatic/asapo_fabric/timeout_test.cpp b/tests/automatic/asapo_fabric/timeout_test.cpp index 0e2ab643b2e3f4935b7ccf1543eba21930eae00e..d71ea1c3a0ed3cd5fa0bad902a3a85bf4f6395b6 100644 --- a/tests/automatic/asapo_fabric/timeout_test.cpp +++ b/tests/automatic/asapo_fabric/timeout_test.cpp @@ -29,7 +29,12 @@ void ServerMasterThread(const std::string& hostname, uint16_t port) { int dummyBuffer; FabricAddress clientAddress; FabricMessageId messageId; - server->RecvAny(&clientAddress, &messageId, &dummyBuffer, sizeof(dummyBuffer), &err); + + // In order to run the tests more stable. Otherwise a timeout could occurred with valgrind + int tries = 0; + do { + server->RecvAny(&clientAddress, &messageId, &dummyBuffer, sizeof(dummyBuffer), &err); + } while (err == IOErrorTemplates::kTimeout && tries++ < 2); M_AssertEq(nullptr, err, "server->RecvAny"); server->Send(clientAddress, messageId, &dummyBuffer, sizeof(dummyBuffer), &err); diff --git a/tests/automatic/asapo_fabric/wrong_memory_info.cpp b/tests/automatic/asapo_fabric/wrong_memory_info.cpp index f94fc6c658136570b9eba5d650facfd10f4d5886..76988ddc42322edd0a74550536b0ae86203ed393 100644 --- a/tests/automatic/asapo_fabric/wrong_memory_info.cpp +++ b/tests/automatic/asapo_fabric/wrong_memory_info.cpp @@ -47,7 +47,10 @@ void ServerMasterThread(const std::string& hostname, uint16_t port) { M_AssertEq(nullptr, err, "server->Send(1)"); // Simulate correct memory details - server->RecvAny(&clientAddress, &messageId, &request, sizeof(request), &err); + int tries = 0; + do { + server->RecvAny(&clientAddress, &messageId, &request, sizeof(request), &err); + } while (err == IOErrorTemplates::kTimeout && tries++ < 2); M_AssertEq(nullptr, err, "server->RecvAny(2)"); M_AssertEq(2, messageId); server->RdmaWrite(clientAddress, (MemoryRegionDetails*)&request.substream, rdmaBuffer.get(), kRdmaSize, &err); @@ -57,7 +60,10 @@ void ServerMasterThread(const std::string& hostname, uint16_t port) { // Simulate old (unregistered) memory details GenericRequestHeader request2{}; - server->RecvAny(&clientAddress, &messageId, &request2, sizeof(request2), &err); + tries = 0; + do { + server->RecvAny(&clientAddress, &messageId, &request2, sizeof(request2), &err); + } while (err == IOErrorTemplates::kTimeout && tries++ < 2); M_AssertEq(nullptr, err, "server->RecvAny(3)"); M_AssertEq(3, messageId); server->RdmaWrite(clientAddress, (MemoryRegionDetails*)&request.substream, rdmaBuffer.get(), kRdmaSize, &err);