When a diff test starts a Tarantool server, test-run reads the server log file and tries to find the message indicating the server is ready. Sometimes the server log file may contain bytes that cannot be decoded by utf-8 codec and test-run fails with an error like this:
[044] TarantoolInpector.handle() received the following error:
[044] Traceback (most recent call last):
[044] File "/tarantool/test-run/lib/inspector.py", line 98, in handle
[044] result = self.parser.parse_preprocessor(line)
[044] File "/tarantool/test-run/lib/preprocessor.py", line 123, in parse_preprocessor
[044] return self.server(stype, sname, options)
[044] File "/tarantool/test-run/lib/preprocessor.py", line 351, in server
[044] return getattr(self, attr)(ctype, sname, opts)
[044] File "/tarantool/test-run/lib/preprocessor.py", line 209, in server_start
[044] self.servers[sname].start(silent=True, rais=True, wait=wait,
[044] File "/tarantool/test-run/lib/tarantool_server.py", line 910, in start
[044] self.wait_until_started(wait_load, deadline)
[044] File "/tarantool/test-run/lib/tarantool_server.py", line 1147, in wait_until_started
[044] self.wait_load(deadline)
[044] File "/tarantool/test-run/lib/tarantool_server.py", line 1131, in wait_load
[044] if not self.logfile_pos.seek_wait(msg, p, self.name, deadline):
[044] File "/tarantool/test-run/lib/tarantool_server.py", line 485, in seek_wait
[044] log_str = f.readline()
[044] File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/codecs.py", line 322, in decode
[044] (result, consumed) = self._buffer_decode(data, self.errors, final)
[044] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf0 in position 660: invalid continuation byte
At least, I have seen such errors when Tarantool with JIT enabled was tested on macOS ARM64 machines. So this patch fixes the issue.
coverage: 62.54% (+0.06%) from 62.479%
when pulling 92921d4f58d1500ef649c5a67df77081f8e629b2 on ylobankov/read-logfile-safely
into 52ca8cfcee58e0c623dcf2b22eece64dca7d0b6a on master.
When a diff test starts a Tarantool server, test-run reads the server log file and tries to find the message indicating the server is ready. Sometimes the server log file may contain bytes that cannot be decoded by
utf-8
codec and test-run fails with an error like this:At least, I have seen such errors when Tarantool with JIT enabled was tested on macOS ARM64 machines. So this patch fixes the issue.