<HTML><BODY><br><br><br>-------- Пересылаемое сообщение --------<br>
От кого: Ilya Markov <imarkov@tarantool.org><br>
Кому: georgy@tarantool.org<br>
Копия: patches@tarantool.org<br>
Дата: Вторник, 27 марта 2018, 17:09 +03:00<br>
Тема: [patches] [log 1/2] log: Fix logger.test.lua<br>
<br>
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div>
<base target="_self" href="https://e.mail.ru/">
<div id="style_15221597540000000929_BODY">Fix race condition in test on log_rotate.<br>
Test opened file that must be created by log_rotate and read from it.<br>
But as log_rotate is executed in separate thread, file may be not<br>
created or log may be not written yet by the time of opening in test.<br>
<br>
Fix this with waiting creation and reading the line.<br>
---<br>
test/app-tap/logger.test.lua | 5 ++++-<br>
1 file changed, 4 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/test/app-tap/logger.test.lua b/test/app-tap/logger.test.lua<br>
index 72d13d3..76b3598 100755<br>
--- a/test/app-tap/logger.test.lua<br>
+++ b/test/app-tap/logger.test.lua<br>
@@ -15,6 +15,7 @@ box.cfg{<br>
local log = require('log')<br>
local fio = require('fio')<br>
local json = require('json')<br>
+local fiber = require('fiber')<br>
local file = io.open(filename)<br>
while file:read() do<br>
end<br>
@@ -105,10 +106,12 @@ file:close()<br>
<br>
log.log_format("json")<br>
<br>
-os.rename(filename, filename .. "2")<br>
+fio.rename(filename, filename .. "2")<br>
log.rotate()<br>
file = fio.open(filename)<br>
+while file == nil do file = fio.open(filename) fiber.sleep(0.0001) end<br>
line = file:read()<br>
+while line == nil or line == "" do line = file:read() fiber.sleep(0.0001) end<br>
index = line:find('\n')<br>
line = line:sub(1, index)<br>
message = json.decode(line)<br>
-- <br>
2.7.4<br>
<br>
</div>
<base target="_self" href="https://e.mail.ru/">
</div>
</div>
<br><hr>
<br>-- <br>Thank you,<br>Ilya Markov<br></BODY></HTML>