From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Igor Munkin <imun@tarantool.org>, Maxim Kokryashkin <m.kokryashkin@tarantool.org>, Sergey Bronnikov <sergeyb@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: [Tarantool-patches] [PATCH v2 luajit 0/6] Revorking C tests Date: Thu, 18 May 2023 23:44:47 +0300 [thread overview] Message-ID: <cover.1684442182.git.skaplun@tarantool.org> (raw) The whole idea of the patch-set introduce module for LuaJIT C tests. It also, can be used for unit tests. * The first patch is the prerequisite for the patch-set. It fixes LD_LIBRARY_PATH definition. * The 2nd and 3d patches provides an API and helper for writing the tests. * The last 3 patches rewrite existing tests that should be written in C in the proper way. Branch: https://github.com/tarantool/luajit/tree/skaplun/gh-noticket-tarantool-c-tests PR: https://github.com/tarantool/tarantool/pull/8444 Related Issue: * https://github.com/tarantool/tarantool/issues/7900 * https://github.com/tarantool/tarantool/issues/781 Thanks Maxim, for the review! I've fixed some Maxim comments and suggestions for the previous series. Some ignorable comments about wording are ignored:). Also, see answers for your questions below: > >+if(NOT PROVE) > >+ message(WARNING "`prove' is not found, so tarantool-c-tests target is not generated") > >+ return() > >+endif() > There is the same check in the test/tarantool-tests/CMakeLists.txt. Maybe > we should move it to the higher-level CMake so the lower-level CMakeLists > inherit it. I agree it maybe done, but not within this particular patchsett, so ignoring for now. > >+#define test_run_group(t_arr, t_state) \ > >+ _test_run_group(__func__, t_arr, lengthof(t_arr), t_state) > Is there any reason for it to be a macro and not a function wrapper? > I believe it is better to use the functions when possible, since they are > easier to support and debug. Just for the convenience in usage of __func__ macro as a test group name. > >+/* Need for `strchr()` in diagnostic parsing. */ > `strchr()` is not safe, despite the fact it searches till `\0`. > We should at least replace it with `memchr()`, which has > the explicit constraint for buffer length. > >+#include <string.h> Yes, but: 1) We use it only for our test code, where we set this `\0` directly to mark EOL. 2) It's simplier than use several marks in buffer. So, ignoring for now. > >+# vim: ft=cmake expandtab shiftwidth=2: tabstop=2: > That change is not necessary. Yes, but more convenient to use in vim -- since our usual codestyle isn't 4 tabs as its default for CMake. :) Still we don't use it anywhere (unfortunately), so removed. > >+ bail_out("failed to translate Lua code snippet"); > Why `bail_out` and not an assertion? Here and below. Assertion is for some thing we wnat to test and may fail. Bail out usage is more specific: | As an emergency measure a test script can decide that further tests are | useless (e.g. missing dependencies) and testing should stop immediately. | In that case the test script prints the magic words See [1]. I think that loading Lua script helper (dependency) is something like that. > >+#include "lj_arch.h" > Side note: I don't like the approach with private headers, but > I couldn't find any better way to check that. Maybe it is a good > idea to implement a public C API function to get the information > about OS and ARCH, since it is a really common to check them? I think, that this is the best option, espessialy if we want to write some unit test for some specific module (I mean <src/lj_*>). Changes in v2: 1) use | int _test_run_group(const char *group_name, const struct test_unit tests[], | size_t n_tests, void *test_state); instead of | int _test_run_group(const char *group_name, const struct test_unit *tests, | size_t n_tests, void *test_state); 2) `skip()` `skip_all()` and `todo()` helpers now return values to be return to runner. i.e. change usage from | if (cond) | skip("NIY"); to | if (cond) | return skip("NIY"); `bail_out()` helper still just exits with error code, which corresponding its standard specification. But now some parts of the code start to look "alya cringe": | return todo("Need to replace backtrace with libunwind first"); | lua_State *L = test_state; | utils_get_aux_lfunc(L); | (void)luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_OFF); | (void)luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_FLUSH); | check_profile_func(L); | (void)luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_ON); | return TEST_EXIT_SUCCESS; (Yes, we want to use unconditional `todo()`). So I commented the similar code, helper `check_profile_func()`, etc. with `#if 0`. 3) In 4th patch use subtest group for snap-related tests to skip all at once with disabled JIT. 4) lj-49-bad-lightuserdata is moved in C tests, too. Sergey Kaplun (6): test: fix setting of {DY}LD_LIBRARY_PATH variables test: introduce module for C tests test: introduce utils.h helper for C tests test: rewrite misclib-getmetrics-capi test in C test: rewrite misclib-sysprof-capi test in C test: rewrite lj-49-bad-lightuserdata test in C .gitignore | 1 + src/CMakeLists.txt | 2 + test/CMakeLists.txt | 2 + test/tarantool-c-tests/CMakeLists.txt | 65 ++++ .../lj-49-bad-lightuserdata.test.c} | 47 +-- .../misclib-getmetrics-capi-script.lua} | 83 ++--- .../misclib-getmetrics-capi.test.c | 343 ++++++++++++++++++ .../misclib-sysprof-capi-script.lua | 35 ++ .../misclib-sysprof-capi.test.c | 325 +++++++++++++++++ test/tarantool-c-tests/test.c | 251 +++++++++++++ test/tarantool-c-tests/test.h | 217 +++++++++++ test/tarantool-c-tests/utils.h | 63 ++++ test/tarantool-tests/CMakeLists.txt | 12 +- .../lj-49-bad-lightuserdata.test.lua | 11 - .../lj-49-bad-lightuserdata/CMakeLists.txt | 1 - .../misclib-getmetrics-capi/CMakeLists.txt | 1 - .../misclib-getmetrics-capi/testgetmetrics.c | 270 -------------- .../misclib-sysprof-capi.test.lua | 54 --- .../misclib-sysprof-capi/CMakeLists.txt | 1 - .../misclib-sysprof-capi/testsysprof.c | 260 ------------- 20 files changed, 1374 insertions(+), 670 deletions(-) create mode 100644 test/tarantool-c-tests/CMakeLists.txt rename test/{tarantool-tests/lj-49-bad-lightuserdata/testlightuserdata.c => tarantool-c-tests/lj-49-bad-lightuserdata.test.c} (55%) rename test/{tarantool-tests/misclib-getmetrics-capi.test.lua => tarantool-c-tests/misclib-getmetrics-capi-script.lua} (68%) create mode 100644 test/tarantool-c-tests/misclib-getmetrics-capi.test.c create mode 100644 test/tarantool-c-tests/misclib-sysprof-capi-script.lua create mode 100644 test/tarantool-c-tests/misclib-sysprof-capi.test.c create mode 100644 test/tarantool-c-tests/test.c create mode 100644 test/tarantool-c-tests/test.h create mode 100644 test/tarantool-c-tests/utils.h delete mode 100644 test/tarantool-tests/lj-49-bad-lightuserdata.test.lua delete mode 100644 test/tarantool-tests/lj-49-bad-lightuserdata/CMakeLists.txt delete mode 100644 test/tarantool-tests/misclib-getmetrics-capi/CMakeLists.txt delete mode 100644 test/tarantool-tests/misclib-getmetrics-capi/testgetmetrics.c delete mode 100644 test/tarantool-tests/misclib-sysprof-capi.test.lua delete mode 100644 test/tarantool-tests/misclib-sysprof-capi/CMakeLists.txt delete mode 100644 test/tarantool-tests/misclib-sysprof-capi/testsysprof.c -- 2.34.1
next reply other threads:[~2023-05-18 20:49 UTC|newest] Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-18 20:44 Sergey Kaplun via Tarantool-patches [this message] 2023-05-18 20:44 ` [Tarantool-patches] [PATCH v2 luajit 1/6] test: fix setting of {DY}LD_LIBRARY_PATH variables Sergey Kaplun via Tarantool-patches 2023-05-19 11:23 ` Maxim Kokryashkin via Tarantool-patches 2023-05-22 11:03 ` Sergey Bronnikov via Tarantool-patches 2023-05-23 6:47 ` Sergey Kaplun via Tarantool-patches 2023-05-29 14:37 ` Sergey Bronnikov via Tarantool-patches 2023-05-18 20:44 ` [Tarantool-patches] [PATCH v2 luajit 2/6] test: introduce module for C tests Sergey Kaplun via Tarantool-patches 2023-05-19 11:46 ` Maxim Kokryashkin via Tarantool-patches 2023-05-22 12:33 ` Sergey Bronnikov via Tarantool-patches 2023-05-24 6:41 ` Sergey Kaplun via Tarantool-patches 2023-05-25 17:33 ` Sergey Bronnikov via Tarantool-patches 2023-05-29 10:03 ` Sergey Kaplun via Tarantool-patches 2023-05-29 14:38 ` Sergey Bronnikov via Tarantool-patches 2023-05-31 13:32 ` Sergey Kaplun via Tarantool-patches 2023-05-18 20:44 ` [Tarantool-patches] [PATCH v2 luajit 3/6] test: introduce utils.h helper " Sergey Kaplun via Tarantool-patches 2023-05-19 11:58 ` Maxim Kokryashkin via Tarantool-patches 2023-05-20 7:52 ` Sergey Kaplun via Tarantool-patches 2023-05-29 15:26 ` Sergey Bronnikov via Tarantool-patches 2023-05-18 20:44 ` [Tarantool-patches] [PATCH v2 luajit 4/6] test: rewrite misclib-getmetrics-capi test in C Sergey Kaplun via Tarantool-patches 2023-05-19 12:17 ` Maxim Kokryashkin via Tarantool-patches 2023-05-20 8:08 ` Sergey Kaplun via Tarantool-patches 2023-05-29 16:15 ` Sergey Bronnikov via Tarantool-patches 2023-05-18 20:44 ` [Tarantool-patches] [PATCH v2 luajit 5/6] test: rewrite misclib-sysprof-capi " Sergey Kaplun via Tarantool-patches 2023-05-19 13:00 ` Maxim Kokryashkin via Tarantool-patches 2023-05-20 7:28 ` Sergey Kaplun via Tarantool-patches 2023-05-18 20:44 ` [Tarantool-patches] [PATCH v2 luajit 6/6] test: rewrite lj-49-bad-lightuserdata " Sergey Kaplun via Tarantool-patches 2023-05-19 12:40 ` Maxim Kokryashkin via Tarantool-patches 2023-05-19 14:29 ` [Tarantool-patches] [PATCH v2 luajit 0/6] Revorking C tests Maxim Kokryashkin via Tarantool-patches 2023-05-20 8:38 ` Sergey Kaplun 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=cover.1684442182.git.skaplun@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imun@tarantool.org \ --cc=m.kokryashkin@tarantool.org \ --cc=sergeyb@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2 luajit 0/6] Revorking C 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