[Tarantool-patches] [PATCH luajit 8/8][v3] memprof: set default path to profiling output file
Sergey Bronnikov
sergeyb at tarantool.org
Wed Mar 5 17:29:04 MSK 2025
Hi, Sergey!
Updated and force-pushed.
Sergey
On 05.03.2025 13:57, Sergey Kaplun wrote:
> Hi, Sergey!
> See my answer below.
>
> On 24.02.25, Sergey Bronnikov wrote:
>> Hi, Sergey,
>>
>> thanks for review!
> <snipped>
>
>>>> ---
>>>> +
>>>> + local default_output_file = 'memprof.bin'
>>>> + os.remove(default_output_file)
>>>> +
>>>> + local _, _ = misc.memprof.start()
>>> Minor: Do we want to check that the profiler starts successfully?
>>> I suppose we should, since this is the expected behaviour for this
>>> feature. In case the profiler is not started (old behaviour) we would
>>> get an error from the branch below: profiler not running. This isn't a
>>> verbose definition of what goes wrong.
>> I don't get why we should check that profiler is started in a test for
>> default output file.
> If the `memprof.start()` call will fail in the test (for any reason),
> the next call of `memprof.stop()` will return `false, "profiler is not
> running"`. So, when debugging the test, we have no clue about the reason
> for the not-started profiler, which is not very convenient.
The patch below handles error from memprof start and stop:
diff --git
a/test/tarantool-tests/profilers/misclib-memprof-lapi-default-file.test.lua
b/test/tarantool-tests/profilers/misclib-memprof-lapi-default-file.test.lua
index ae8a73c9..55b5c60b 100644
---
a/test/tarantool-tests/profilers/misclib-memprof-lapi-default-file.test.lua
+++
b/test/tarantool-tests/profilers/misclib-memprof-lapi-default-file.test.lua
@@ -16,21 +16,26 @@ test:test('default-output-file', function(subtest)
local default_output_file = 'memprof.bin'
os.remove(default_output_file)
- local _, _ = misc.memprof.start()
-
- local res, err = misc.memprof.stop()
+ local res, err = misc.memprof.start()
+ -- Want to cleanup carefully if something went wrong.
+ if not res then
+ test:fail('sysprof was not started: ' .. err)
+ os.remove(default_output_file)
+ end
+ res, err = misc.memprof.stop()
-- Want to cleanup carefully if something went wrong.
if not res then
+ test:fail('sysprof was not started: ' .. err)
os.remove(default_output_file)
- error(err)
end
+
local profile_buf = tools.read_file(default_output_file)
subtest:ok(profile_buf ~= nil and #profile_buf ~= 0,
'default output file is not empty')
- -- We don't need it any more.
+ -- We don't need it anymore.
os.remove(default_output_file)
end)
>
>>> I suppose we may use `goto` here like the following:
>>>
>>> | local res, err = misc.memprof.start()
>>> | -- Should start successfully.
>>> | if not res then
>>> | goto err_handling
>>> | end
>>> |
>>> | res, err = misc.memprof.stop()
>>> |
>>> | ::err_handling::
>>> | -- Want to cleanup carefully if something went wrong.
>>> | if not res then
>>>
>>>> +
>>>> + local res, err = misc.memprof.stop()
>>>> +
>>>> + -- Want to cleanup carefully if something went wrong.
>>>> + if not res then
>>>> + os.remove(default_output_file)
>>>> + error(err)
>>>> + end
> <snipped>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20250305/7727e97a/attachment.htm>
More information about the Tarantool-patches
mailing list