Commit Briefs

Sergey Bronnikov

cmake: build rpm and deb packages (cpack)

Closes #21


Sergey Bronnikov

ci: bump freebsd 12 minor version


Sergey Bronnikov

ci: enable regression testing

Closes #5


Sergey Bronnikov

test: initial regression test suite

Added initial regression test suite that covers different filesystem operations on filesystem in passthrough mode. Part of #5


Sergey Bronnikov

Disable fault injections in debug build

There is no possibility to manage fault injections from outside. To enable regression testing on continuous integration it is required to disable fault injection and allow to test filesystem in passthough mode. Part of: #5 See also: #3


Sergey Bronnikov

cmake: adjust minimal version

Follows up #22


Sergey Bronnikov

ci: get rid of Travis CI

Ubuntu 18.04 Linux has been moved to Cirrus CI


Sergey Bronnikov

cmake: add make target check with mandoc linter

Closes #2


Sergey Bronnikov

Bump minimal required CMake version

Set CMake version used in Ubuntu Bionic (18.04) Closes #22


Sergey Bronnikov

Fix build on FreeBSD and macOS

Accidentally commands to build a project has been missed for build jobs on FreeBSD and macOS in a Cirrus CI config file. Patch fixes it and fix source to be make it possible to build on these operating systems.


Branches

















Tags

0.2.0

0.1.0

Tree

.cirrus.ymlcommits | blame
.gitignorecommits | blame
CMakeLists.txtcommits | blame
CPackConfig.cmakecommits | blame
README.mdcommits | blame
cmake/
tests/
unreliablefs.1commits | blame
unreliablefs.ccommits | blame
unreliablefs_errinj.ccommits | blame
unreliablefs_errinj.hcommits | blame
unreliablefs_ops.ccommits | blame
unreliablefs_ops.hcommits | blame

README.md

## UnreliableFS

[![Build Status](https://api.cirrus-ci.com/github/ligurio/unreliablefs.svg)](https://cirrus-ci.com/github/ligurio/unreliablefs)

is a FUSE-based fault injection filesystem that allows to change
fault-injections in runtime using simple configuration file.

Supported fault injections are:

- `errinj_errno` - return error value and set random errno.
- `errinj_kill_caller` - send SIGKILL to a process that invoked file operation.
- `errinj_noop` - replace file operation with no operation
  (similar to [libeatmydata](https://github.com/stewartsmith/libeatmydata),
  but applicable to any file operation).
- `errinj_slowdown` - slowdown invoked file operation.

### Building

Prerequisites:

- CentOS: `dnf install -y gcc -y cmake fuse fuse-devel`
- Ubuntu: `apt-get install -y gcc cmake fuse libfuse-dev`
- FreeBSD: `pkg install gcc cmake fusefs-libs pkgconf`
- OpenBSD: `pkg_add cmake`
- macOS: `brew install --cask osxfuse`

```sh
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
$ cmake --build build --parallel
```

### Packages

[![Packaging status](https://repology.org/badge/vertical-allrepos/fusefs:unreliablefs.svg)](https://repology.org/project/fusefs:unreliablefs/versions)

### Using

```sh
$ mkdir /tmp/fs
$ unreliablefs /tmp/fs -basedir=/tmp -seed=1618680646
$ cat << EOF > /tmp/fs/unreliablefs.conf
[errinj_noop]
op_regexp = .*
path_regexp = .*
probability = 30
EOF
$ ls -la
$ umount /tmp/fs
```

### Documentation

See documentation in [unreliablefs.1](https://ligurio.github.io/unreliablefs/unreliablefs.1.html) and
[unreliablefs.conf.5](https://ligurio.github.io/unreliablefs/unreliablefs.conf.5.html).

### License

MIT License, Copyright (c) 2020-2023, Sergey Bronnikov
BSD-3-Clause, Copyright (C) 2009-2020, Ben Hoyt