ligurio / molly

Framework for distributed system's verification, with fault injection.
https://ligurio.github.io/molly/
ISC License
11 stars 2 forks source link
consistency correctness fault-injection jepsen linearizability lua serializable

Static analysis Testing Coverage Status Luarocks

Molly

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

Prerequisites

Installation

$ 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:

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.4
$ 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.