From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp17.mail.ru (smtp17.mail.ru [94.100.176.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id C28644765E0 for ; Tue, 29 Dec 2020 23:10:47 +0300 (MSK) Date: Tue, 29 Dec 2020 23:11:02 +0300 From: Alexander Turenko Message-ID: <20201229201102.cmrgcrzvlenyn7wf@tkn_work_nb> References: <72c07be7cadc1e78c9394bbc8f1bb64b1a4a4a0c.1609259010.git.artemreyt@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <72c07be7cadc1e78c9394bbc8f1bb64b1a4a4a0c.1609259010.git.artemreyt@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH 1/3] test: tarantool -e test add more details and avoid busy loop List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Artem Starshov Cc: tarantool-patches@dev.tarantool.org On Tue, Dec 29, 2020 at 07:25:33PM +0300, Artem Starshov wrote: > From: Alexander Turenko I would prefer if you would send patches from youself. > > 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. I wrote this as brief notes for my experiments, then we observed that it is not so. The process is not a direct child of our one. > > 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) It is Linux specific, so the change is dubious. > 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 >