[Tarantool-patches] [PATCH 1/3] test: tarantool -e test add more details and avoid busy loop

Artem Starshov artemreyt at tarantool.org
Tue Dec 29 19:25:33 MSK 2020


From: Alexander Turenko <alexander.turenko at tarantool.org>

Background: the test fails on waiting the process termination, but
surprisingly only on GitHub hosted runners.

My guess is that the process becomes zombie, but we don't collect it.

A busy loop is not good in general. It is better to pass execution to
other fibers if there is nothing to do. This way the waiting will not
eat 100% CPU time.

Added collect more details in tarantool -e 'assert(false)' test.
---
 .../gh-4983-tnt-e-assert-false-hangs.test.lua       | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/test/app-tap/gh-4983-tnt-e-assert-false-hangs.test.lua b/test/app-tap/gh-4983-tnt-e-assert-false-hangs.test.lua
index 656fe212b..ff3281e0f 100755
--- a/test/app-tap/gh-4983-tnt-e-assert-false-hangs.test.lua
+++ b/test/app-tap/gh-4983-tnt-e-assert-false-hangs.test.lua
@@ -31,6 +31,7 @@ local function wait_process_completion(pid, timeout)
             process_completed = true
             break
         end
+        fiber.sleep(0.01)
     end
     return process_completed
 end
@@ -74,8 +75,18 @@ local res = tap.test('gh-4983-tnt-e-assert-false-hangs', function(test)
     local process_completed = wait_process_completion(pid,
             process_waiting_timeout)
 
+    local details
+    pcall(function()
+        details = {
+            cmdline = fio.open(('/proc/%d/cmdline'):format(pid),
+                               {'O_RDONLY'}):read(1000000),
+            status = fio.open(('/proc/%d/status'):format(pid),
+                              {'O_RDONLY'}):read(1000000),
+        }
+    end)
     test:ok(process_completed,
-            ('tarantool process with pid = %d completed'):format(pid))
+            ('tarantool process with pid = %d completed'):format(pid),
+            details)
 
     -- Kill process if hangs.
     if not process_completed then ffi.C.kill(pid, 9) end
-- 
2.28.0



More information about the Tarantool-patches mailing list