- Description:
- A FUSE-based fault injection filesystem.
- Last Change:
- Clone URL:
Commit Briefs
Load FUSE kernel module before running testing (ligurio/fix-tests-on-ubuntu)
Regression tests skipped when running on Ubuntu in Cirrus CI. JUnit report contains a reason of skip - Seem a problem exist because FUSE kernel module is not loaded before a testing. https://cirrus-ci.org/guide/linux/
Fix disabled tests on FreeBSD
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 manual pages paths
Closes #90
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
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