From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Sergey Ostanevich <sergos@tarantool.org>, Igor Munkin <imun@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: [Tarantool-patches] [PATCH luajit] test: disable jit tests at M1 for Tarantool Date: Wed, 17 Aug 2022 12:24:24 +0300 [thread overview] Message-ID: <20220817092424.19463-1-skaplun@tarantool.org> (raw) During running JIT-related tests on Tarantool the trace assembling occasionally fails with the error "failed to allocate mcode memory" because there are no suitable addresses available. This patch disables those tests for Tarantool in a similar way as it is done for FreeBSD. Also, this patch refactors `utils.skipcond()` a bit to make it call readable with multiple conditions/reasons pairs. Relates to tarantool/tarantool#7571 --- Tarantool PR: https://github.com/tarantool/tarantool/pull/7578 Issue: https://github.com/tarantool/tarantool/issues/7571 Branch: https://github.com/tarantool/luajit/tree/skaplun/gh-7571-disable-jit-tests-m1-full-ci Side note: Looks like adding the trampoline, as Sergos suggested is the correct solution of this issue. For now just disable JIT related tests only for Tarantool. .../gh-4199-gc64-fuse.test.lua | 2 +- .../gh-4427-ffi-sandwich.test.lua | 7 ++++-- .../gh-5813-resolving-of-c-symbols.test.lua | 10 ++++----- ...4-add-proto-trace-sysprof-default.test.lua | 12 +++++----- .../lj-430-maxirconst.test.lua | 8 +++++-- ...lj-672-cdata-allocation-recording.test.lua | 8 +++++-- .../lj-flush-on-trace.test.lua | 7 ++++-- .../misclib-getmetrics-capi.test.lua | 8 +++++-- .../misclib-getmetrics-lapi.test.lua | 8 +++++-- .../misclib-memprof-lapi.test.lua | 17 +++++++------- .../misclib-sysprof-capi.test.lua | 11 +++++----- .../misclib-sysprof-lapi.test.lua | 11 +++++----- test/tarantool-tests/utils.lua | 22 ++++++++++++++----- 13 files changed, 83 insertions(+), 48 deletions(-) diff --git a/test/tarantool-tests/gh-4199-gc64-fuse.test.lua b/test/tarantool-tests/gh-4199-gc64-fuse.test.lua index 4d69250f..04950fd2 100644 --- a/test/tarantool-tests/gh-4199-gc64-fuse.test.lua +++ b/test/tarantool-tests/gh-4199-gc64-fuse.test.lua @@ -1,6 +1,6 @@ -- The test is GC64 only. local ffi = require('ffi') -require('utils').skipcond(not ffi.abi('gc64'), 'test is GC64 only') +require('utils').skipcond({not ffi.abi('gc64'), 'test is GC64 only'}) local tap = require('tap') local test = tap.test('gh-4199-gc64-fuse') diff --git a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua index dd02130c..fea1d181 100644 --- a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua +++ b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua @@ -1,7 +1,10 @@ local utils = require('utils') --- Disabled on *BSD due to #4819. -utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) utils.selfrun(arg, { { diff --git a/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua b/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua index d589dddf..ff0c48e6 100644 --- a/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua +++ b/test/tarantool-tests/gh-5813-resolving-of-c-symbols.test.lua @@ -1,8 +1,8 @@ --- Memprof is implemented for x86 and x64 architectures only. -require("utils").skipcond( - jit.arch ~= "x86" and jit.arch ~= "x64" or jit.os ~= "Linux", - jit.arch.." architecture or "..jit.os.. - " OS is NIY for memprof c symbols resolving" +local utils = require("utils") +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", jit.arch .. + " architecture is NIY for memprof c symbols resolving"}, + {jit.os ~= "Linux", jit.os .. " OS is NIY for memprof c symbols resolving"} ) local tap = require("tap") diff --git a/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua b/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua index 15bd0a8b..332d4711 100644 --- a/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua +++ b/test/tarantool-tests/gh-7264-add-proto-trace-sysprof-default.test.lua @@ -1,9 +1,9 @@ --- Sysprof is implemented for x86 and x64 architectures only. -require('utils').skipcond( - jit.arch ~= 'x86' and jit.arch ~= 'x64' or jit.os ~= 'Linux' - or require('ffi').abi('gc64'), - jit.arch..' architecture or '..jit.os.. - ' OS is NIY for sysprof' +local utils = require('utils') +utils.skipcond( + {jit.arch ~= 'x86' and jit.arch ~= 'x64', jit.arch .. + ' architecture is NIY for sysprof'}, + {jit.os ~= 'Linux', jit.os .. ' OS is NIY for sysprof'}, + {require('ffi').abi('gc64'), 'GC64 mode is NIY for sysprof'} ) local tap = require('tap') diff --git a/test/tarantool-tests/lj-430-maxirconst.test.lua b/test/tarantool-tests/lj-430-maxirconst.test.lua index cd3587a8..b95aacbd 100644 --- a/test/tarantool-tests/lj-430-maxirconst.test.lua +++ b/test/tarantool-tests/lj-430-maxirconst.test.lua @@ -3,8 +3,12 @@ jit.off() jit.flush() --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local tap = require('tap') local traceinfo = require('jit.util').traceinfo diff --git a/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua b/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua index 1dc741d8..c72688d6 100644 --- a/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua +++ b/test/tarantool-tests/lj-672-cdata-allocation-recording.test.lua @@ -1,5 +1,9 @@ --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local ffi = require('ffi') local traceinfo = require('jit.util').traceinfo diff --git a/test/tarantool-tests/lj-flush-on-trace.test.lua b/test/tarantool-tests/lj-flush-on-trace.test.lua index c46b93f0..006c61f0 100644 --- a/test/tarantool-tests/lj-flush-on-trace.test.lua +++ b/test/tarantool-tests/lj-flush-on-trace.test.lua @@ -1,7 +1,10 @@ local utils = require('utils') --- Disabled on *BSD due to #4819. -utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) utils.selfrun(arg, { { diff --git a/test/tarantool-tests/misclib-getmetrics-capi.test.lua b/test/tarantool-tests/misclib-getmetrics-capi.test.lua index 0cbc6cae..f747500b 100644 --- a/test/tarantool-tests/misclib-getmetrics-capi.test.lua +++ b/test/tarantool-tests/misclib-getmetrics-capi.test.lua @@ -1,5 +1,9 @@ --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local path = arg[0]:gsub('%.test%.lua', '') local suffix = package.cpath:match('?.(%a+);') diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua index 222e7d01..50a4fce3 100644 --- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua +++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua @@ -2,8 +2,12 @@ -- Major portions taken verbatim or adapted from the LuaVela testing suite. -- Copyright (C) 2015-2019 IPONWEB Ltd. --- Disabled on *BSD due to #4819. -require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819') +local utils = require('utils') +utils.skipcond( + {jit.os == 'BSD', 'Disabled due to #4819'}, + --luacheck: no global + {_TARANTOOL and utils.is_M1(), 'Disabled due to #7571'} +) local tap = require('tap') diff --git a/test/tarantool-tests/misclib-memprof-lapi.test.lua b/test/tarantool-tests/misclib-memprof-lapi.test.lua index a11f0be1..66fb2108 100644 --- a/test/tarantool-tests/misclib-memprof-lapi.test.lua +++ b/test/tarantool-tests/misclib-memprof-lapi.test.lua @@ -1,7 +1,8 @@ -- Memprof is implemented for x86 and x64 architectures only. -require("utils").skipcond( - jit.arch ~= "x86" and jit.arch ~= "x64", - jit.arch.." architecture is NIY for memprof" +local utils = require('utils') +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", + jit.arch .. " architecture is NIY for memprof"} ) local tap = require("tap") @@ -189,9 +190,9 @@ test:test("output", function(subtest) -- one is the number of allocations. 1 event - alocation of -- table by itself + 1 allocation of array part as far it is -- bigger than LJ_MAX_COLOSIZE (16). - subtest:ok(check_alloc_report(alloc, { line = 35, linedefined = 33 }, 2)) + subtest:ok(check_alloc_report(alloc, { line = 36, linedefined = 34 }, 2)) -- 20 strings allocations. - subtest:ok(check_alloc_report(alloc, { line = 40, linedefined = 33 }, 20)) + subtest:ok(check_alloc_report(alloc, { line = 41, linedefined = 34 }, 20)) -- Collect all previous allocated objects. subtest:ok(free.INTERNAL.num == 22) @@ -291,10 +292,10 @@ test:test("jit-output", function(subtest) -- 10 allocations in interpreter mode, 1 allocation for a trace -- recording and assembling and next 9 allocations will happen -- while running the trace. - subtest:ok(check_alloc_report(alloc, { line = 40, linedefined = 33 }, 11)) - subtest:ok(check_alloc_report(alloc, { traceno = 1, line = 38 }, 9)) + subtest:ok(check_alloc_report(alloc, { line = 41, linedefined = 34 }, 11)) + subtest:ok(check_alloc_report(alloc, { traceno = 1, line = 39 }, 9)) -- See same checks with jit.off(). - subtest:ok(check_alloc_report(alloc, { line = 35, linedefined = 33 }, 2)) + subtest:ok(check_alloc_report(alloc, { line = 36, linedefined = 34 }, 2)) -- Restore default JIT settings. jit.opt.start(unpack(jit_opt_default)) diff --git a/test/tarantool-tests/misclib-sysprof-capi.test.lua b/test/tarantool-tests/misclib-sysprof-capi.test.lua index afb99cf2..32f00ffd 100644 --- a/test/tarantool-tests/misclib-sysprof-capi.test.lua +++ b/test/tarantool-tests/misclib-sysprof-capi.test.lua @@ -1,10 +1,11 @@ -- Sysprof is implemented for x86 and x64 architectures only. local ffi = require("ffi") -require("utils").skipcond( - jit.arch ~= "x86" and jit.arch ~= "x64" or jit.os ~= "Linux" - or ffi.abi("gc64"), - jit.arch.." architecture or "..jit.os.. - " OS is NIY for sysprof" +local utils = require("utils") +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", jit.arch .. + " architecture is NIY for sysprof"}, + {jit.os ~= "Linux", jit.os .. " OS is NIY for sysprof"}, + {ffi.abi("gc64"), "GC64 mode is NIY for sysprof"} ) local testsysprof = require("testsysprof") diff --git a/test/tarantool-tests/misclib-sysprof-lapi.test.lua b/test/tarantool-tests/misclib-sysprof-lapi.test.lua index 9e0a8a77..e9ae182e 100644 --- a/test/tarantool-tests/misclib-sysprof-lapi.test.lua +++ b/test/tarantool-tests/misclib-sysprof-lapi.test.lua @@ -1,10 +1,11 @@ -- Sysprof is implemented for x86 and x64 architectures only. local ffi = require("ffi") -require("utils").skipcond( - jit.arch ~= "x86" and jit.arch ~= "x64" or jit.os ~= "Linux" - or ffi.abi("gc64"), - jit.arch.." architecture or "..jit.os.. - " OS is NIY for sysprof" +local utils = require("utils") +utils.skipcond( + {jit.arch ~= "x86" and jit.arch ~= "x64", jit.arch .. + " architecture is NIY for sysprof"}, + {jit.os ~= "Linux", jit.os .. " OS is NIY for sysprof"}, + {ffi.abi("gc64"), "GC64 mode is NIY for sysprof"} ) local tap = require("tap") diff --git a/test/tarantool-tests/utils.lua b/test/tarantool-tests/utils.lua index a1906498..d8412e03 100644 --- a/test/tarantool-tests/utils.lua +++ b/test/tarantool-tests/utils.lua @@ -20,6 +20,10 @@ ffi.cdef([[ } GCHeader; ]]) +function M.is_M1() + return jit.os == 'OSX' and jit.arch == 'arm64' +end + function M.gcisblack(obj) local objtype = type(obj) local address = objtype == 'string' @@ -95,12 +99,18 @@ function M.selfrun(arg, checks) os.exit(test:check() and 0 or 1) end -function M.skipcond(condition, message) - if not condition then return end - local test = tap.test(arg[0]:match('/?(.+)%.test%.lua')) - test:plan(1) - test:skip(message) - os.exit(test:check() and 0 or 1) +function M.skipcond(...) + local conditions = {...} + local ncond = #conditions + for i = 1, ncond do + local condition, message = conditions[i][1], conditions[i][2] + if condition then + local test = tap.test(arg[0]:match('/?(.+)%.test%.lua')) + test:plan(1) + test:skip(message) + os.exit(test:check() and 0 or 1) + end + end end function M.hasbc(f, bytecode) -- 2.34.1
next reply other threads:[~2022-08-17 9:27 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-08-17 9:24 Sergey Kaplun via Tarantool-patches [this message] 2022-08-23 10:23 ` sergos via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220817092424.19463-1-skaplun@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imun@tarantool.org \ --cc=sergos@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit] test: disable jit tests at M1 for Tarantool' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox