https://github.com/scylladb/charybdefs
ScyllaDB fault injection filesystem
https://github.com/scylladb/charybdefs
Last synced: about 2 months ago
JSON representation
ScyllaDB fault injection filesystem
- Host: GitHub
- URL: https://github.com/scylladb/charybdefs
- Owner: scylladb
- License: other
- Created: 2015-12-23T13:16:32.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-04-29T11:27:41.000Z (about 4 years ago)
- Last Synced: 2024-07-31T22:52:51.380Z (10 months ago)
- Language: C++
- Size: 37.1 KB
- Stars: 244
- Watchers: 22
- Forks: 48
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
CharybdeFS
==========A fuse based fault injection filesystem
with a Thrift RPC interface for instrumentation.Building
========
**CentOS 7.4**```sh
sudo yum install gcc-c++ cmake fuse fuse-devel thrift python-thrift thrift-devel
thrift -r --gen cpp --gen py server.thrift
cmake CMakeLists.txt
make
```
**Ubuntu 16.04**```sh
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:scylladb/ppa
sudo apt-get update
sudo apt-get install g++ cmake fuse libfuse-dev python-thrift thrift-compiler scylla-libthrift010-dev libboost-dev
thrift -r --gen cpp --gen py server.thrift
cmake -DCMAKE_PREFIX_PATH=/opt/scylladb CMakeLists.txt
make
```Using
=====
Load fuse module, if it is not loaded
```sh
modprobe fuse
```
Create mount directory for Charybde. Tested application should use this directory.Note: Faults can be applied for files that are manipulated through this directory only!
```sh
mkdir /mnt/charybdbde
```
`dest_dir` directory on the file system where actual files will be stored
Running CharybdeFS
```sh
./charybdefs /mnt/charybdbde -omodules=subdir,subdir=/dest_dir
```
Running CharybdeFS and allowing other users to use the mount
```sh
./charybdefs /mnt/charybdbde -omodules=subdir,subdir=/dest_dir -oallow_other
```Example tests
=============`tests/scylla_test_all_calls.py` is an example test running against the
ScyllaDB database. It will insert data in the database, trigger some
errors for a while, clear it and let the database recover.
After this it will boot up scylla again and check that all commited
queries are safe on disk.