testing: ensure the server is properly listening
authorMichael Wallner <mike@php.net>
Tue, 29 Sep 2020 09:35:52 +0000 (11:35 +0200)
committerMichael Wallner <mike@php.net>
Tue, 29 Sep 2020 09:35:52 +0000 (11:35 +0200)
test/lib/Server.cpp
test/lib/Server.hpp
test/tests/bin/memcat.cpp
test/tests/bin/memcp.cpp
test/tests/bin/memdump.cpp
test/tests/bin/memexist.cpp
test/tests/bin/memflush.cpp

index 0c99009bde95b910c81ce97ae24a985fc1acbaca..8666b690ee602d5eb54a9ec8c843cbe24748f7f5 100644 (file)
@@ -1,5 +1,5 @@
 #include "Server.hpp"
-#include "Connection.hpp"
+#include "Retry.hpp"
 #include "ForkAndExec.hpp"
 
 #include <sys/wait.h>
@@ -142,6 +142,19 @@ bool Server::isListening() {
   return true;
 }
 
+bool Server::ensureListening() {
+  return Retry{[this] {
+    again:
+    start();
+    if (!isListening()) {
+      if (tryWait()){
+        goto again;
+      }
+    }
+    return isListening();
+  }}();
+}
+
 bool Server::stop() {
   if (!pid) {
     return true;
index 44fd5e99812abd0fe7fc01f47b7427f42ab06a2b..f37c79a5e734d6a63297864b4ea50e3d987ab6c0 100644 (file)
@@ -59,6 +59,7 @@ public:
   bool signal(int signo = SIGTERM);
   bool check();
   bool isListening();
+  bool ensureListening();
 
   bool wait(int flags = 0);
   bool tryWait();
index dfc5ddb9b04d88be337a3ef5d9da267bad2f1296..4e91617e4d80f362d1db0dd0e8d5a676dad68cb6 100644 (file)
@@ -32,8 +32,7 @@ TEST_CASE("bin/memcat") {
     MemcachedPtr memc;
     LoneReturnMatcher test{*memc};
 
-    server.start();
-    Retry{[&server] { return server.isListening(); }}();
+    REQUIRE(server.ensureListening());
     auto port = get<int>(server.getSocketOrPort());
     auto comm = "memcat --servers=localhost:" + to_string(port) + " ";
 
index bbf796a6156ad538f47189516f2384e84d72f3ba..ef234cbe65a4ba766597440a75824b2565b0241a 100644 (file)
@@ -32,8 +32,7 @@ TEST_CASE("bin/memcp") {
     MemcachedPtr memc;
     LoneReturnMatcher test{*memc};
 
-    server.start();
-    Retry{[&server] { return server.isListening(); }}();
+    REQUIRE(server.ensureListening());
     auto port = get<int>(server.getSocketOrPort());
     auto comm = "memcp --servers=localhost:" + to_string(port) + " ";
 
index 8e4d4537f47df0c68bdbc81b8d5671f0237e0572..b2caa3d17a589ac0f9c3fced33017a0d2169cde9 100644 (file)
@@ -32,8 +32,7 @@ TEST_CASE("bin/memdump") {
     MemcachedPtr memc;
     LoneReturnMatcher test{*memc};
 
-    server.start();
-    Retry{[&server] { return server.isListening(); }}();
+    REQUIRE(server.ensureListening());
     auto port = get<int>(server.getSocketOrPort());
     auto comm = "memdump --servers=localhost:" + to_string(port) + " ";
 
index 36d69c4f164565b43533d6e0004c075f0d81386a..994727d48e23ec74e2035cbebb20a24072dc9df9 100644 (file)
@@ -32,8 +32,7 @@ TEST_CASE("bin/memexist") {
     MemcachedPtr memc;
     LoneReturnMatcher test{*memc};
 
-    server.start();
-    Retry{[&server] { return server.isListening(); }}();
+    REQUIRE(server.ensureListening());
     auto port = get<int>(server.getSocketOrPort());
     auto comm = "memexist --servers=localhost:" + to_string(port) + " ";
 
index 27083c249250eb01f75d5b36e3926239073f15e1..45246fa0d5c7fcb397c9935fbf8eef0c3f340760 100644 (file)
@@ -32,8 +32,7 @@ TEST_CASE("bin/memflush") {
     MemcachedPtr memc;
     LoneReturnMatcher test{*memc};
 
-    server.start();
-    Retry{[&server] { return server.isListening(); }}();
+    REQUIRE(server.ensureListening());
     auto port = get<int>(server.getSocketOrPort());
     auto comm = "memflush --servers=localhost:" + to_string(port) + " ";