From db20d97a4a9421946466fbdfe02527fb293f92a2 Mon Sep 17 00:00:00 2001 From: Oleg Chaplashkin Date: Wed, 13 Mar 2024 18:40:05 +0400 Subject: [PATCH] Add memory leak detection during server process execution Memory leak detection may occur when working with the server: g.test_foo = function() ... g.server:exec(function() -- there is an error from LeakSanitizer in `stderr` here end) g.server:exec(function() -- server is alive end) t.assert(true) end) g.after_all(function() g.server:drop() -- `test_foo` has passed end) We have added a check for the `LeakSanitizer` substring in `stderr` of the server process. If it's found, an error will be thrown and test will fail. Closes #349 --- CHANGELOG.md | 1 + luatest/server.lua | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6da3951..a8df5a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased - Add logging to unified file (gh-324). +- Add memory leak detection during server process execution (gh-349). ## 1.0.1 diff --git a/luatest/server.lua b/luatest/server.lua index 5506871..442ff15 100644 --- a/luatest/server.lua +++ b/luatest/server.lua @@ -459,6 +459,17 @@ function Server:stop() ) ) end + if self.process.output_beautifier.stderr:find('LeakSanitizer') then + error( + ('Memory leak during process execution (alias: %s, workdir: %s, pid: %s)\n%s') + :format( + self.alias, + fio.basename(self.workdir), + self.process.pid, + self.process.output_beautifier.stderr + ) + ) + end log.debug('Killed server process PID ' .. self.process.pid) self.process = nil end