- Description:
- [Mirror] Middleware for data
- Last Change:
- Clone URL:
Commit Briefs
luacov config (ligurio/lua-and-c-coverage, origin/ligurio/lua-and-c-coverage)
NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
cmake: propagate code coverage flags
TODO: propagate flags commit c6794757ce71013d9137de124aec759209004882 "build: refactor passing compiler flags to dependencies" NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
make: update exclusion list in lcov
NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
make: merge Lua and C code coverage reports
luatest tests tarantoolctl rocks install https://raw.githubusercontent.com/tsafin/luacov/tarantool-master/luacov-scm-1.rockspec NOTE: Patch tets-run with --coverage ./test/test-run.py --build $(pwd)/build --luacov app-luatest/msgpack_test.lua или ./test/test-run.py --build $(pwd)/build --luacov --suite app-luatest box-luatest engine-luatest replication-luatest sql-luatest stat luacov.stats.out TAP tests ln -s $(pwd)/.rocks /tmp/.rocks ./test/test-run.py --build $(pwd)/build --luacov app-tap/datetime.test.lua luarocks --tree=/tmp/.rocks/ install https://raw.githubusercontent.com/tsafin/luacov/tarantool-master/luacov-scm-1.rockspec ln -s /tmp/.rocks/share/lua/5.1/ /tmp/.rocks/share/tarantool [001] Last 15 lines of Tarantool Log file [Instance "app_server"][/tmp/t/001_app-tap/datetime.test.lua.tarantool.log]: [001] LuajitError: module 'luacov' not found: [001] no field package.preload['luacov'] [001] no file '/tmp/t/001_app-tap/luacov.lua' [001] no file '/tmp/t/001_app-tap/luacov/init.lua' [001] no file '/tmp/t/001_app-tap/luacov.so' [001] no file '/tmp/t/001_app-tap/.rocks/share/tarantool/luacov.lua' [001] no file '/tmp/t/001_app-tap/.rocks/share/tarantool/luacov/init.lua' [001] no file '/tmp/t/.rocks/share/tarantool/luacov.lua' [001] no file '/tmp/t/.rocks/share/tarantool/luacov/init.lua' [001] no file '/tmp/.rocks/share/tarantool/luacov.lua' [001] no file '/tmp/.rocks/share/t [001] fatal error, exiting the event loop Blocked by https://github.com/tarantool/tarantool/issues/7839 $ export LUA_PATH="$LUA_PATH;$(pwd)/.rocks/share/tarantool/?.lua" ``` --- a/lib/luatest_server.py +++ b/lib/luatest_server.py @@ -35,7 +35,7 @@ class LuatestTest(Test): server.current_test = self script = os.path.join(os.path.basename(server.testdir), self.name) command = ['luatest', '-c', '-v', script, '-o', 'tap', '--shuffle', - 'none'] + 'none', '--coverage'] # Tarantool's build directory is added to PATH in # TarantoolServer.find_exe(). ``` $ ./build/src/tarantool /home/sergeyb/sources/MRG/tarantool/test-run/lib/luatest/bin/luatest -v --coverage test/app-luatest/ $ stat luacov.stats.out $ sed -i -e 's|builtin|'"$(realpath .)"/src/lua'|' luacov.stats.out TODO: Couldn't open ./src/lua/internal.print.lua: No such file or directory $ luacov $ tarantool tools/luacov_to_info.lua luacov.stats.out > luacov.report.out TODO: Fix builtins https://github.com/tarantool/tarantool/wiki/How-to-generate-Lua-coverage-report-for-built-in-module%3F $ lcov --add-tracefile coverage1.info -a coverage2.info -o merged.info TODO: Merge lcov reports https://github.com/daurnimator/luacov-reporter-lcov https://gitlab.nic.cz/analogic/knot-resolver/-/blob/a75f2e9964285c80ed17d4284b27ab28a31cde03/coverage.mk https://gitlab.nic.cz/analogic/knot-resolver/-/blob/a75f2e9964285c80ed17d4284b27ab28a31cde03/scripts/luacov_to_info.lua NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
cmake: pass --luacov to test-run on using ENABLE_GCOV
TODO: Проверить luacov для TAP и luatest тестов. NO_CHANGELOG=internal NO_DOC=internal NO_TEST=internal
build: use relative paths in diagnostics and debugging information
Since our diagnostics use the `__FILE__` macro, they provide absolute paths, which is kind of redundant and inconsistent: replace them with relative ones. As for debugging information, replacing absolute paths with relative ones also requires an extra command to tell the debugger where to find the source files, which is not convenient for developers: provide a new `DEV_BUILD` option (turned off by default), which replaces absolute paths with relative ones in debugging information if turned off. Strip the prefix map flags from compiler flags exported to tarantool via `src/trvia/config.h`. Closes #7808 NO_DOC=<verbosity> NO_TEST=<verbosity>
test-run: bump new version
Fixes bug with determination of debug build (tarantool/test-run#352). NO_CHANGELOG=<internal submodule version update> NO_TEST=<submodule version update> NO_DOC=<submodule version update>
build: refactor setting hardening compiler flags
Setting hardening compiler flags is used in three places: default build, static build and enterprise build — refactor it into a separate module. Follow-up e6abe1c NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring
build: refactor passing compiler flags to dependencies
e6abe1c passes compiler flags to dependencies via a `<project>_build` macro parameter, which is, firstly, inconvenient, and, secondly, as a result, not all dependencies got the required compiler flags passed: use global variables instead and pass these flags to skipped dependencies. Follow-up e6abe1c NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring
build: fix unsetting of variables in `add_compile_flags` macro
`add_compile_flags` macro relied on undefined behaviour: instead of unsetting the `_lang` and `_flag` variables, it tried to unset their values — fix this. NO_CHANGELOG=build NO_DOC=build NO_TEST=build
Branches
Tree
README.md
# Tarantool [![Actions Status][actions-badge]][actions-url] [![Code Coverage][coverage-badge]][coverage-url] [![OSS Fuzz][oss-fuzz-badge]][oss-fuzz-url] [![Telegram][telegram-badge]][telegram-url] [![GitHub Discussions][discussions-badge]][discussions-url] [![Stack Overflow][stackoverflow-badge]][stackoverflow-url] [Tarantool][tarantool-url] is an in-memory computing platform consisting of a database and an application server. It is distributed under [BSD 2-Clause][license] terms. Key features of the application server: * Heavily optimized Lua interpreter with incredibly fast tracing JIT compiler, based on LuaJIT 2.1. * Cooperative multitasking, non-blocking IO. * [Persistent queues][queue]. * [Sharding][vshard]. * [Cluster and application management framework][cartridge]. * Access to external databases such as [MySQL][mysql] and [PostgreSQL][pg]. * A rich set of built-in and standalone [modules][modules]. Key features of the database: * MessagePack data format and MessagePack based client-server protocol. * Two data engines: 100% in-memory with complete WAL-based persistence and an own implementation of LSM-tree, to use with large data sets. * Multiple index types: HASH, TREE, RTREE, BITSET. * Document oriented JSON path indexes. * Asynchronous master-master replication. * Synchronous quorum-based replication. * RAFT-based automatic leader election for the single-leader configuration. * Authentication and access control. * ANSI SQL, including views, joins, referential and check constraints. * [Connectors][connectors] for many programming languages. * The database is a C extension of the application server and can be turned off. Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD (x86_64). Tarantool is ideal for data-enriched components of scalable Web architecture: queue servers, caches, stateful Web applications. To download and install Tarantool as a binary package for your OS or using Docker, please see the [download instructions][download]. To build Tarantool from source, see detailed [instructions][building] in the Tarantool documentation. To find modules, connectors and tools for Tarantool, check out our [Awesome Tarantool][awesome-list] list. Please report bugs to our [issue tracker][issue-tracker]. We also warmly welcome your feedback on the [discussions][discussions-url] page and questions on [Stack Overflow][stackoverflow-url]. We accept contributions via pull requests. Check out our [contributing guide][contributing]. Thank you for your interest in Tarantool! [actions-badge]: https://github.com/tarantool/tarantool/workflows/release/badge.svg [actions-url]: https://github.com/tarantool/tarantool/actions [coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=master [coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=master [telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg [telegram-url]: http://telegram.me/tarantool [discussions-badge]: https://img.shields.io/github/discussions/tarantool/tarantool [discussions-url]: https://github.com/tarantool/tarantool/discussions [stackoverflow-badge]: https://img.shields.io/badge/stackoverflow-tarantool-orange.svg [stackoverflow-url]: https://stackoverflow.com/questions/tagged/tarantool [oss-fuzz-badge]: https://oss-fuzz-build-logs.storage.googleapis.com/badges/tarantool.svg [oss-fuzz-url]: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_tarantool/latest [tarantool-url]: https://www.tarantool.io/en/ [license]: LICENSE [modules]: https://www.tarantool.io/en/download/rocks [queue]: https://github.com/tarantool/queue [vshard]: https://github.com/tarantool/vshard [cartridge]: https://github.com/tarantool/cartridge [mysql]: https://github.com/tarantool/mysql [pg]: https://github.com/tarantool/pg [connectors]: https://www.tarantool.io/en/download/connectors [download]: https://www.tarantool.io/en/download/ [building]: https://www.tarantool.io/en/doc/latest/dev_guide/building_from_source/ [issue-tracker]: https://github.com/tarantool/tarantool/issues [contributing]: CONTRIBUTING.md [awesome-list]: https://github.com/tarantool/awesome-tarantool/