Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ligurio/molly

Open more actions menu

Repository files navigation

Static analysis Testing Coverage Status Luarocks

Molly

is a framework for distributed systems verification, with fault injection.

Prerequisites

  • Lua interpreter: LuaJIT or LuaJIT-based is recommended.
  • luafun - Lua functional library, built-in into Tarantool.
  • lua-cjson - Lua library for fast JSON encoding and decoding, built-in into Tarantool.
  • (optional) Jepsen-compatible consistency checker. For example elle-cli, based on Jepsen, Elle and Knossos.

Installation

  • Download and setup Lua interpreter, LuaJIT or LuaJIT-based is recommended (for example Tarantool).
  • Install library using LuaRocks:
$ luarocks install --local molly

NOTE: Installation of modules luafun and lua-cjson is not required when Tarantool is used, both modules are built-in there. Install them manually in case of using LuaJIT:

$ make deps-runtime

Documentation

See documentation in https://ligurio.github.io/molly/.

Examples

See also an examples in test/examples/ for SQLite database engine:

  • sqlite-rw-register.lua contains a simple test that concurrently runs get and set operations on SQLite DB
  • sqlite-list-append.lua contains a simple test that concurrently runs read and append operations on SQLite DB

For running examples you need installed an SQLite development package and LuaRocks.

$ sudo apt install -y sqlite3 libsqlite3-dev
$ make deps
$ make test-example

Example produces two files with history: history.txt and history.json. With elle-cli history can be checked for consistency:

$ VER=0.1.8
$ curl -O -L https://github.com/ligurio/elle-cli/releases/download/${VER}/elle-cli-bin-${VER}.zip
$ unzip elle-cli-bin-${VER}.zip
$ java -jar ./target/elle-cli-${VER}-standalone.jar -m elle-rw-register history.json
history.json        true

See tests that uses Molly library in https://github.com/ligurio/molly-tests.

Hacking

For developing molly you need to install: either LuaJIT or LuaJIT-based and LuaRocks.

$ make deps
$ export PATH=$PATH:$(luarocks path --lr-bin)
$ make check
$ make test

You are ready to make patches!

License

Copyright © 2021-2024 Sergey Bronnikov

Distributed under the ISC License.

About

Framework for distributed system's verification, with fault injection.

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.