[tarantool-patches] Fwd: [patches] [log 1/2] log: Fix logger.test.lua

Ilya Markov imarkov at tarantool.org
Wed Mar 28 11:05:47 MSK 2018




-------- Пересылаемое сообщение --------
От кого: Ilya Markov <imarkov at tarantool.org>
Кому: georgy at tarantool.org
Копия: patches at tarantool.org
Дата: Вторник, 27 марта 2018, 17:09 +03:00
Тема: [patches] [log 1/2] log: Fix logger.test.lua

Fix race condition in test on log_rotate.
Test opened file that must be created by log_rotate and read from it.
But as log_rotate is executed in separate thread, file may be not
created or log may be not written yet by the time of opening in test.

Fix this with waiting creation and reading the line.
---
 test/app-tap/logger.test.lua | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/test/app-tap/logger.test.lua b/test/app-tap/logger.test.lua
index 72d13d3..76b3598 100755
--- a/test/app-tap/logger.test.lua
+++ b/test/app-tap/logger.test.lua
@@ -15,6 +15,7 @@ box.cfg{
 local log = require('log')
 local fio = require('fio')
 local json = require('json')
+local fiber = require('fiber')
 local file = io.open(filename)
 while file:read() do
 end
@@ -105,10 +106,12 @@ file:close()
 
 log.log_format("json")
 
-os.rename(filename, filename .. "2")
+fio.rename(filename, filename .. "2")
 log.rotate()
 file = fio.open(filename)
+while file == nil do file = fio.open(filename) fiber.sleep(0.0001) end
 line = file:read()
+while line == nil or line == ""  do line = file:read() fiber.sleep(0.0001) end
 index = line:find('\n')
 line = line:sub(1, index)
 message = json.decode(line)
-- 
2.7.4


----------------------------------------------------------------------

-- 
Thank you,
Ilya Markov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20180328/4abacbdf/attachment.html>


More information about the Tarantool-patches mailing list