- Description:
- A FUSE-based fault injection filesystem.
- Last Change:
- Clone URL:
Commit Briefs
Fix disabled tests on FreeBSD (ligurio/gh-93)
Commit "Use generic os name in tests" (1f70f876d670704bd0422fe1e27d12177b189527) accidentally disabled testing on FreeBSD by adding double negation to condition that enables code for operating systems with fusermount(1). However fusermount(1) is not available on FreeBSD and therefore all regression tests were skipped. Fixes #93
Fix building on FreeBSD (tags/0.2.0)
Cirrus CI on FreeBSD failed because "No packages available to install matching 'py37-pip' have been found in the repositories"i [1]. Package 'py37-pip' has been replaced with 'py38-pip', see [2]. 1. https://cirrus-ci.com/task/6375178809638912 2. https://www.freshports.org/devel/py-pip/
Introduce Lua rockspec
Closes #88
cmake: add install target
Part of #88
Add Ubuntu 21.04 with Clang 12 and GCC 10
Follows up #77
Fix multiple definition of conf variable
FAILED: unreliablefs : && /usr/bin/cc -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fstack-protector-strong CMakeFiles/unreliablefs.dir/conf.c.o CMakeFiles/unreliablefs.dir/unreliablefs.c.o CMakeFiles/unreliablefs.dir/unreliablefs_errinj.c.o CMakeFiles/unreliablefs.dir/unreliablefs_ops.c.o -o unreliablefs -Wl,-rpath,/usr/local/lib /usr/local/lib/libfuse.so && : ld: error: duplicate symbol: conf >>> defined at unreliablefs.c >>> CMakeFiles/unreliablefs.dir/unreliablefs.c.o:(conf) >>> defined at unreliablefs_errinj.c >>> CMakeFiles/unreliablefs.dir/unreliablefs_errinj.c.o:(.bss+0x0) cc: error: linker command failed with exit code 1 (use -v to see invocation) Reported-by: Mateusz Piotrowski Closes #77
Publish test results on Cirrus CI
Cirrus CI allows to publish testing results in a web interface [1]. Patch specifies a path to JUnit report produced by PyTest in Cirrus CI config. 1. https://cirrus-ci.org/guide/writing-tasks/#artifact-parsing
Run regression tests using make target
Introduced `make pytest` that runs regression tests.
Exclude EINTEGRITY errno on FreeBSD < 12
EINTEGRITY errno is supported in FreeBSD release versions greater that 11.4 [1]. This patch excludes EINTEGRITY errno for FreeBSD versions that doesn't support it. To reduce a number of condition I keep a check of major version only. 1. https://reviews.freebsd.org/D18765 Closes #83
Branches
Tags
Tree
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