From: Igor Munkin <imun@tarantool.org> To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH 4/4] test: enable luajit-tap:lj-flush-on-trace tests Date: Wed, 15 Apr 2020 03:47:41 +0300 [thread overview] Message-ID: <20200415004741.GB8314@tarantool.org> (raw) In-Reply-To: <729e2d44-8a0d-3e98-b3f3-a84e8a1b9992@tarantool.org> Vlad, Thanks for your comments! On 10.04.20, Vladislav Shpilevoy wrote: > Hi! > > >>> if (NOT ${PROJECT_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR}) > >>> diff --git a/test/app-tap/lj-flush-on-trace.test.lua b/test/app-tap/lj-flush-on-trace.test.lua > >>> new file mode 100755 > >>> index 000000000..70b7bd9a2 > >>> --- /dev/null > >>> +++ b/test/app-tap/lj-flush-on-trace.test.lua > >>> @@ -0,0 +1,30 @@ > >>> +#!/usr/bin/env tarantool > >>> + > >>> +local tap = require('tap') > >>> + > >>> +local test = tap.test('lj-flush-on-trace') > >>> + > >>> +local cmd = string.gsub( > >>> + 'LUA_CPATH=$/?.so LD_LIBRARY_PATH=$ tarantool 2>&1 $/test.lua %d %d', > >>> + '%$', os.getenv('BUILDDIR') .. '/test/luajit-tap/lj-flush-on-trace') > >>> + > >>> +local checks = { > >>> + { hotloop = 1, trigger = 1, success = true }, > >>> + { hotloop = 1, trigger = 2, success = false }, > >>> +} > >>> + > >>> +test:plan(#checks) > >>> + > >>> +for _, ch in pairs(checks) do > >>> + local res > >>> + local proc = io.popen(cmd:format(ch.hotloop, ch.trigger)) > >>> + for s in proc:lines('*l') do res = s end > >>> + assert(res, 'proc:lines failed') > >> > >> This file is exactly the same as the other file for running a > >> luajit test in the previous commit. I propose you to move this to > >> a separate file, which would provide API to run arbitrary test via > >> io.popen. Unless this won't be dropped if you find a way to make > >> the new luajit tests runable via test-run as is. > > > > Sounds rational. They are not the same but quite similar (the difference > > is only in the result values). > > At least first 24 lines of them match almost completely (except file > name to start with io.popen), that is more than half of each. I think > that part either should be simplified so as there is nothing to extract > already (my proposal about io.popen() of self may help, or may not), or > just extracted into a common file like > > test/app-tap/utils/utils.lua utils.lua is introduced here[1]. > > You can extract even more if you pass expected output with 'checks' > array elements. > > If you want to do that in scope of luajit tests rework, then add it to > the ticket description, please, so as not to forget. As we discussed, I reworked the tests and dropped all excess files in app-tap directory. Since the changes also affects luajit repo, here are diffs for both tarantool and luajit repos: ## tarantool/luajit: ================================================================================ diff --git a/test/lj-flush-on-trace.skipcond b/test/lj-flush-on-trace.skipcond new file mode 100644 index 0000000..2a2ec4d --- /dev/null +++ b/test/lj-flush-on-trace.skipcond @@ -0,0 +1,7 @@ +import platform + +# Disabled on FreeBSD due to #4819. +if platform.system() == 'FreeBSD': + self.skip = 1 + +# vim: set ft=python: diff --git a/test/lj-flush-on-trace/test.lua b/test/lj-flush-on-trace.test.lua old mode 100644 new mode 100755 similarity index 53% rename from test/lj-flush-on-trace/test.lua rename to test/lj-flush-on-trace.test.lua index ff6e0b6..0b3ccf4 --- a/test/lj-flush-on-trace/test.lua +++ b/test/lj-flush-on-trace.test.lua @@ -1,3 +1,26 @@ +#!/usr/bin/env tarantool + +if #arg == 0 then + require('utils').selfrun(arg, { + { + arg = { + 1, -- hotloop (arg[1]) + 1, -- trigger (arg[2]) + }, + res = 'OK', + msg = 'Trace is aborted', + }, + { + arg = { + 1, -- hotloop (arg[1]) + 2, -- trigger (arg[2]) + }, + res = 'JIT mode change is detected while executing the trace', + msg = 'Trace is recorded', + }, + }) +end + local cfg = { hotloop = arg[1] or 1, trigger = arg[2] or 1, @@ -7,8 +30,8 @@ local ffi = require('ffi') local ffiflush = ffi.load('libflush') ffi.cdef('void flush(struct flush *state, int i)') --- Save the current coroutine and set the value to trigger ipp --- call the Lua routine instead of pure C implementation. +-- Save the current coroutine and set the value to trigger +-- <flush> call the Lua routine instead of C implementation. local flush = require('libflush')(cfg.trigger) -- Depending on trigger and hotloop values the following contexts ================================================================================ ## tarantool/tarantool: ================================================================================ diff --git a/test/app-tap/lj-flush-on-trace.skipcond b/test/app-tap/lj-flush-on-trace.skipcond deleted file mode 100644 index 2a2ec4d97..000000000 --- a/test/app-tap/lj-flush-on-trace.skipcond +++ /dev/null @@ -1,7 +0,0 @@ -import platform - -# Disabled on FreeBSD due to #4819. -if platform.system() == 'FreeBSD': - self.skip = 1 - -# vim: set ft=python: diff --git a/test/app-tap/lj-flush-on-trace.test.lua b/test/app-tap/lj-flush-on-trace.test.lua deleted file mode 100755 index ad6a484ed..000000000 --- a/test/app-tap/lj-flush-on-trace.test.lua +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env tarantool - -local tap = require('tap') - -local test = tap.test('lj-flush-on-trace') - -local vars = { - PATH = os.getenv('BUILDDIR') .. '/test/luajit-tap/lj-flush-on-trace', - SUFFIX = package.cpath:match('?.(%a+);'), -} - -local cmd = string.gsub('LUA_CPATH=<PATH>/?.<SUFFIX> LD_LIBRARY_PATH=<PATH> ' - .. 'tarantool 2>&1 <PATH>/test.lua %d %d', '%<(%w+)>', vars) - -local checks = { - { hotloop = 1, trigger = 1, success = true }, - { hotloop = 1, trigger = 2, success = false }, -} - -test:plan(#checks) - -for _, ch in pairs(checks) do - local res - local proc = io.popen(cmd:format(ch.hotloop, ch.trigger)) - for s in proc:lines('*l') do res = s end - assert(res, 'proc:lines failed') - if ch.success then - test:is(res, 'OK') - else - test:is(res, 'JIT mode change is detected while executing the trace') - end -end - -os.exit(test:check() and 0 or 1) ================================================================================ I updated the upstream branches and also sent the v2 for both series: * tarantool/luajit[2]. * tarantool/tarantool[3]. > > > I guess I can do it in scope of #4862[1] > > if you're OK with it. > > > >> > >>> + if ch.success then > >>> + test:is(res, 'OK') > >>> + else > >>> + test:is(res, 'JIT mode change is detected while executing the trace') > >>> + end > >>> +end > >>> + > >>> +os.exit(test:check() and 0 or 1) > >>> > > > > [1]: https://github.com/tarantool/tarantool/issues/4862 > > [1]: https://lists.tarantool.org/pipermail/tarantool-patches/2020-April/015936.html [2]: https://lists.tarantool.org/pipermail/tarantool-patches/2020-April/015935.html [3]: https://lists.tarantool.org/pipermail/tarantool-patches/2020-April/015939.html -- Best regards, IM
next prev parent reply other threads:[~2020-04-15 0:54 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-27 13:23 [Tarantool-patches] [PATCH 0/4] Enable LuaJIT tests written in C Igor Munkin 2020-03-27 13:23 ` [Tarantool-patches] [PATCH 1/4] luajit: bump new version Igor Munkin 2020-03-27 13:23 ` [Tarantool-patches] [PATCH 2/4] test: adjust luajit-tap testing machinery Igor Munkin 2020-04-05 19:32 ` Vladislav Shpilevoy 2020-04-07 23:05 ` Igor Munkin 2020-03-27 13:23 ` [Tarantool-patches] [PATCH 3/4] test: enable luajit-tap:gh-4427-ffi-sandwich tests Igor Munkin 2020-03-30 18:53 ` Igor Munkin 2020-04-05 19:32 ` Vladislav Shpilevoy 2020-04-07 23:28 ` Igor Munkin 2020-04-09 22:05 ` Vladislav Shpilevoy 2020-04-15 0:46 ` Igor Munkin 2020-03-27 13:23 ` [Tarantool-patches] [PATCH 4/4] test: enable luajit-tap:lj-flush-on-trace tests Igor Munkin 2020-03-30 18:53 ` Igor Munkin 2020-04-05 19:32 ` Vladislav Shpilevoy 2020-04-07 23:33 ` Igor Munkin 2020-04-09 22:05 ` Vladislav Shpilevoy 2020-04-15 0:47 ` Igor Munkin [this message] 2020-03-27 13:32 ` [Tarantool-patches] [PATCH 0/4] Enable LuaJIT tests written in C Igor Munkin 2020-03-28 11:18 ` Igor Munkin 2020-03-30 18:55 ` Igor Munkin
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=20200415004741.GB8314@tarantool.org \ --to=imun@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 4/4] test: enable luajit-tap:lj-flush-on-trace tests' \ /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