Skip to content

Commit

Permalink
sysutils/fusefs-unreliablefs: Add new port
Browse files Browse the repository at this point in the history
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, but applicable to any file operation).
- errinj_slowdown - slowdown invoked file operation.

WWW: https://github.com/ligurio/unreliablefs
  • Loading branch information
0mp committed Jul 4, 2021
1 parent d65b482 commit c46bf27
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 0 deletions.
1 change: 1 addition & 0 deletions sysutils/Makefile
Expand Up @@ -419,6 +419,7 @@
SUBDIR += fusefs-squashfuse
SUBDIR += fusefs-sshfs
SUBDIR += fusefs-unionfs
SUBDIR += fusefs-unreliablefs
SUBDIR += fusefs-webdavfs
SUBDIR += fusefs-zip
SUBDIR += fvcool
Expand Down
48 changes: 48 additions & 0 deletions sysutils/fusefs-unreliablefs/Makefile
@@ -0,0 +1,48 @@
PORTNAME= unreliablefs
DISTVERSION= 0.1.0
CATEGORIES= sysutils
PKGNAMEPREFIX= fusefs-

MAINTAINER= 0mp@FreeBSD.org
COMMENT= FUSE-based fault injection filesystem

LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE

RUN_DEPENDS= fusefs-libs>=0:fusefs-libs
TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR} \
fio:benchmarks/fio

USES= cmake:testing fuse pkgconfig python:env
USE_CSTD= c11
USE_GITHUB= yes
GH_ACCOUNT= ligurio

CFLAGS+= -fcommon

PLIST_FILES= bin/${PORTNAME} \
share/man/man1/${PORTNAME}.1.gz \
share/man/man5/${PORTNAME}.conf.5.gz

post-patch:
# Upstream hardcodes FreeBSD release versions in order to skip some tests. We
# need to adjust those to values as not all supported FreeBSD releases are
# listed there.
${REINPLACE_CMD} 's|freebsd12|freebsd${OSREL:R}|' \
${WRKSRC}/tests/util.py \
${WRKSRC}/tests/test_unreliablefs.py

do-install:
${INSTALL_PROGRAM} ${INSTALL_WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin
${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/share/man/man1
${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.conf.5 ${STAGEDIR}${PREFIX}/share/man/man5

do-test:
# The test suite assumes that the binaries are available in the ${WRKSRC}/build
# directory, which is not the case here.
${MKDIR} ${WRKSRC}/build/tests
${RLN} ${INSTALL_WRKSRC}/${PORTNAME} ${WRKSRC}/build/
${RLN} ${INSTALL_WRKSRC}/tests/fsx ${WRKSRC}/build/tests
cd ${WRKSRC} && ${SETENV} ${TEST_ENV} pytest --verbose -rxXs tests/

.include <bsd.port.mk>
3 changes: 3 additions & 0 deletions sysutils/fusefs-unreliablefs/distinfo
@@ -0,0 +1,3 @@
TIMESTAMP = 1625398764
SHA256 (ligurio-unreliablefs-0.1.0_GH0.tar.gz) = 4fc13b4cc4e947c72bd02c891b3be135083d57fba245a35808f9b2e039574074
SIZE (ligurio-unreliablefs-0.1.0_GH0.tar.gz) = 33789
12 changes: 12 additions & 0 deletions sysutils/fusefs-unreliablefs/pkg-descr
@@ -0,0 +1,12 @@
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, but applicable to any file operation).
- errinj_slowdown - slowdown invoked file operation.

WWW: https://github.com/ligurio/unreliablefs

0 comments on commit c46bf27

Please sign in to comment.