Commits


tests: add missed pytest.ini config Commit "test: initial regression test suite" (b6eb75dfbb096742e0ae744ba8f04d07c8c4a47c) added initial regression test suite using pytest. However pytest should be use pytest.ini that was missed in described commit. This commit fixes it. Closes #80


readme: describe packages Closes #79


readme: add references and similar projects Closes #47


Add error injection with operation slowdown Closes #29


Add error injection that returns random errno Add a new fault injection that returns random errno supported by performed FUSE operation. The source of errnos for a POSIX function is a POSIX standard. Source of errnos for other functions are Linux, macOS, FreeBSD and OpenBSD manual pages. Closes #6


Use code instead of name for FUSE operation In upcoming patch with implementation of fault injection that returns random errno we need to resolve FUSE operation and to make it easier error_inject() switched from using FUSE operation name to using operation code. Part of: #6


Add error injection that kills caller Closes #28


Fix problem with GPG key


Check probability first


Skip error injections for config file


Fix bug with unsupported error injection type


Fix return code on regex matching


Fix set correct type for probability variable


Fix no-op fault injection Follows up: #18


Add configuration support Patch adds command line options and configuration file support to unreliablefs. unreliablefs can be managed in runtime using simple .INI configuration file. unreliablefs config uses configuration language which provides a structure similar to what's found in Microsoft Windows INI files or used by configparser Python module [2]. To make it possible third-party C library [1] has been imported. There is only one supported error injection - "errinj_noop" that replaces file operation with no operation. More error injections are coming. 1. https://github.com/benhoyt/inih 2. https://docs.python.org/3/library/configparser.html Closes #3 Closes #18 Closes #1 Closes #7 Closes #12 Closes #60


cmake: add ASAN and UBSAN sanitizers Disabled by default


Remove unused headers


cmake: set CFLAGS using target_compile_options() Using target_compile_options() is one of the best practice for CMake so replaced CMAKE_C_FLAGS and CMAKE_CXX_FLAGS by target_compile_options(). Also patch adds options -Wall and -Wextra.


gitignore: ignore .swp files


ci: remove macOS 10.15 brew install --cask osxfuse ==> Tapping homebrew/cask Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'... Error: Invalid cask: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/emacs.rb Cask ''/Applications/Emacs.app/Contents/Resources/man/man1/ebrowse.1.gz' is not a valid man page name' definition is invalid. Error: Cannot tap homebrew/cask: invalid syntax in tap! 1. https://cirrus-ci.com/task/6024547758505984


FUSE_USE_VERSION - FreeBSD https://cirrus-ci.com/task/6438581582430208?command=build - MacOS https://cirrus-ci.com/task/5031206698876928?command=build


style: alignment


readme: add cirrus ci status badge


Add license


Disable FUSE wrapper for ioctl() on OpenBSD OpenBSD has it's own FUSE implementation that doesn't support ioctl() operation. In file included from /home/sergeyb/source/unreliablefs/unreliablefs.c:10: /home/sergeyb/source/unreliablefs/unreliablefs_ops.h:55:47: warning: declaration of 'struct fuse_bufvec' will not be visible outside of this function [-Wvisibility] int unreliable_write_buf(const char *, struct fuse_bufvec *buf, off_t off, ^ /home/sergeyb/source/unreliablefs/unreliablefs_ops.h:57:46: warning: declaration of 'struct fuse_bufvec' will not be visible outside of this function [-Wvisibility] int unreliable_read_buf(const char *, struct fuse_bufvec **bufp, ^ /home/sergeyb/source/unreliablefs/unreliablefs.c:51:6: error: field designator 'ioctl' does not refer to any field in type 'struct fuse_operations' .ioctl = unreliable_ioctl, ^ 2 warnings and 1 error generated. Disable ioctl() enabled in commit c96dbe41b2f53fb5a9ac1e0fc798775c9cd01596 ("Use check_function_exists() to detect functions support").