aboutsummaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Collapse)AuthorLines
2024-12-17tests: Add debug messages to some tests and umountBernd Schubert-15/+97
On my nfs mount the tests were hanging and it was impossible to diagnoze what is actually the issue. Also get rid of 'looseversion' python package dependency, as that package is not in ubuntu - add a handcode kernel version parser.
2024-11-27support FUSE_TMPFILE in the low level APIHorst Birthelmer-0/+101
Note that name hashes and using paths as parameters makes it very hard to support anonymous files in the high level API. Known Issues: - tests have to bail out when O_TMPFILE is not supported. This will always be the case with high level passthrough implementations. - test_create_and_link_tmpfile has to be skipped due to unidentified problems with github runner
2024-06-25Use off_t instead of loff_tCismonX-3/+1
Since we're already enforcing 64-bit off_t, using loff_t makes no difference. Also loff_t is Linux-only, which breaks compatibility for *BSD.
2024-03-27Install all test/build python packages from requirements.txtAshley Pittman-12/+3
Have GitHub actions setup python on runners and install all python dependencies via pip. Signed-off-by: Ashley Pittman <ashley@pittman.co.uk>
2024-03-20ci-build.sh: Fix checking for function arguments (#909)Bernd Schubert-1/+1
Checking for an emtpy string actually doesn't work for $@, so just check for number of arguments. Co-authored-by: Bernd Schubert <bschubert@ddn.com>
2024-03-20/test_ctests / test_notify1: Print cmdline on failureBernd Schubert-0/+1
Tests sometimes fail with pytest.fail('file system process terminated prematurely') And it is not clear what actually happens.
2024-03-20ci-build.sh: Add back test without versioned symbolsBernd Schubert-6/+15
Commit b1cdc497 ("ci-build.sh: Run ASAN and UBSAN at the same time") also accidentally removed the test for versioned symbols. Also export clang/clang++ to make sure new shells get it.
2024-03-20Build clang/sanitized build firstBernd Schubert-37/+45
This was stalling - easier to check what happens when it fails fast. And in general, sanitized builds are faster than valgrind and detect almost as much errors as valgrind (same level would be achieved with MSAN, but that is hard to use), so failures can be detected faster whan sanitizers run first.
2024-03-20Add back s-bit for compiled fusermountBernd Schubert-0/+8
This is also needed by some tests and was accidentally removed in commit aab146eea8877ee744a1b5a0da8bbbf31d14bad1
2024-03-20Fix test failures: Create missing mount dirBernd Schubert-2/+14
Tests were failing because mount dir was missing. Unclear to me why this became only recently an issue (github internal - out of the sudden tests were hanging).
2024-03-20ci-build.sh: Reduce pytest --maxfail from 99 to 1Bernd Schubert-1/+3
We want to see errors - reduce allowed errors. With --maxfail=99 tests out of the sudden started to hang in github, without a change in libfuse (I had actually tested to previous release tags). With --maxfail=1 pytest aborts and we see failing github. Also increase python log level to NOTSET - NOTSET should print all messages. Also use "pytest" has wrapper for "python3 -m"
2024-03-07Merge pull request #901 from bsbernd/posix_spawnBernd Schubert-25/+33
Switch from fork to posix_spawn
2024-03-07ci-build.sh: Always install and add s-bit for fusermount3Bernd Schubert-6/+14
As per pull #898, fusermount3 had a severe issue that should have been detected by ASAN. I guess tests used the system default and not the sanitized binary. Order of execution of fusermount3 is to try 1) full install path if that fails 2) just fusermount3 So tests should be fixed by installing libfuse, setting the s-bit on fusermount3 and then to run the tests.
2024-03-07ci-build.sh: Run ASAN and UBSAN at the same timeBernd Schubert-20/+20
Also set halt_on_error=1 to make UBSAN to fail if it would find something.
2024-03-06Fix undefined loff_t in test_write_cache.c on alpineBernd Schubert-0/+2
This fixes #899. Seems that Alpine (and maybe Fedora) need _GNU_SOURCE to get loff_t.
2024-02-26Fix tests/test_write_cache in write back mode (#892)Bernd Schubert-8/+33
This test could fail whenever a something (kernel, userspace) decides to flush in between of two 2048B writes. These two writes are supposed to be merged into a single 4906 byte write by the kernel writeback cache, but _sometimes_ the test fails because 2048 byte writes get through. Fixes #882 Solution here is a modification how the test works - instead of requiring an exact aggregation of 2x2048B into 4096B, it now writes 64x2048B and requires in write-back modes the number of received writes requests is lower than 64 - we can expect that at least some writes get aggregated, but we do know how many. Co-authored-by: Bernd Schubert <bschubert@ddn.com>
2024-01-29make FUSE_CAP_EXPIRE_ONLY test depend on available cap and not on versionHereThereBeDragons-2/+2
2023-12-17Allow *xattr operations on root directory (ino 1)amitgeron-2/+3
2023-07-01Reduce default write size by halfNikolaus Rath-1/+1
Hopefully this will reduce test flakiness on CI.
2023-07-01Add missing include.Nikolaus Rath-0/+1
2023-06-30Make expire only function fail if no kernel support (#789)HereThereBeDragons-0/+2
2023-05-11Fix issue #746. (#782)Peri-0/+173
Added a secondary check in fuse_lib_unlink() after hide_node() to check again under a lock if the (now hidden) file is still open. If not then delete it. This should synchronise fuse_lib_unlink() with fuse_lib_release(), when nullpath_ok is set.
2023-04-12Disable leak suppression (#773)Matthias Görgens-10/+0
2023-04-12Fuse mount: make auto_unmount compatible with suid/dev mount options (#762)Matthias Görgens-0/+31
* Fuse mount: make auto_unmount compatible with suid/dev mount options > When you run as root, fuse normally does not call fusermount but uses > the mount system call directly. When you specify auto_unmount, it goes > through fusermount instead. However, fusermount is a setuid binary that > is normally called by regular users, so it cannot in general accept suid > or dev options. In this patch, we split up how fuse mounts as root when `auto_unmount` is specified. First, we mount using system calls directly, then we reach out to fusermount to set up auto_unmount only (with no actual mounting done in fusermount). Fixes: #148
2023-04-11Migrate away from deprecated distutilsMatthias Goergens-3/+3
Before: ``` =============================== warnings summary =============================== test/test_ctests.py:12 /tmp/libfuse-build-mB50ZC/build-gcc-9/test/test_ctests.py:12: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives from distutils.version import LooseVersion -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ```
2023-04-11Fix typoMatthias Goergens-1/+1
2023-04-07Fix PytestReturnNotNoneWarningMatthias Goergens-2/+4
``` test_examples.py::test_printcap /usr/local/lib/python3.9/dist-packages/_pytest/python.py:199: PytestReturnNotNoneWarning: Expected None, but test_examples.py::test_printcap returned ((7, 38), {'FUSE_CAP_READDIRPLUS_AUTO', 'FUSE_CAP_ASYNC_DIO', 'FUSE_CAP_SPLICE_READ', 'FUSE_CAP_CACHE_SYMLINKS', 'FUSE_CAP_IOCTL_DIR', 'FUSE_CAP_NO_OPENDIR_SUPPORT', 'FUSE_CAP_NO_OPEN_SUPPORT', 'FUSE_CAP_POSIX_LOCKS', 'FUSE_CAP_READDIRPLUS', 'FUSE_CAP_POSIX_ACL', 'FUSE_CAP_ATOMIC_O_TRUNC', 'FUSE_CAP_SPLICE_MOVE', 'FUSE_CAP_EXPORT_SUPPORT', 'FUSE_CAP_FLOCK_LOCKS', 'FUSE_CAP_EXPLICIT_INVAL_DATA', 'FUSE_CAP_EXPIRE_ONLY', 'FUSE_CAP_DONT_MASK', 'FUSE_CAP_WRITEBACK_CACHE', 'FUSE_CAP_AUTO_INVAL_DATA', 'FUSE_CAP_PARALLEL_DIROPS', 'FUSE_CAP_SPLICE_WRITE', 'FUSE_CAP_ASYNC_READ'}), which will be an error in a future version of pytest. Did you mean to use `assert` instead of `return`? warnings.warn( ```
2023-04-07Fix deprecated @pytest.mark.hookwrapperMatthias Goergens-1/+1
``` PytestDeprecationWarning: The hookimpl pytest_pyfunc_call uses old-style configuration options (marks or attributes). Please use the pytest.hookimpl(hookwrapper=True) decorator instead to configure the hooks. See https://docs.pytest.org/en/latest/deprecations.html#configuring-hook-specs-impls-using-markers @pytest.mark.hookwrapper ```
2023-04-07Fix meson deprecation warningMatthias Goergens-2/+2
Also for rest of CI
2023-04-07Upgrade meson version in CIMatthias Goergens-2/+1
2023-04-01Add unit tests for setxattr() et alNikolaus Rath-3/+11
Hopefully, this will catch issues as in commit 024eccbf3
2023-02-20Migrate from Travis to Github actionsNikolaus Rath-1/+5
With current Ubuntu, Valgrind apparently does not like clang debug info, so do not run valgrind with clang-compiled binaries.
2023-01-28Install a the configure_file (config.h) and use in headersBernd Schubert-4/+4
This addresses: https://github.com/libfuse/libfuse/issues/724 HAVE_LIBC_VERSIONED_SYMBOLS configures the library if to use versioned symbols and is set at meson configuration time. External filesystems (the main target, actually) include fuse headers and the preprocessor then acts on HAVE_LIBC_VERSIONED_SYMBOLS. Problem was now that 'config.h' was not distributed with libfuse and so HAVE_LIBC_VERSIONED_SYMBOLS was never defined with external tools and the preprocessor did the wrong decision. This commit also increases the the minimal meson version, as this depends on meson feature only available in 0.50 <quote 'meson' > WARNING: Project specifies a minimum meson_ version '>= 0.42' but uses features which were added in newer versions: * 0.50.0: {'install arg in configure_file'} </quote> Additionally the config file has been renamed to "fuse_config.h" to avoid clashes - 'config.h' is not very specific.
2023-01-28Update travis to ubuntu jammy (22.04)Bernd Schubert-1/+1
A newer ubuntu version is required to get a more recent meson (at least 0.50 now)
2023-01-13passthrough_hp: Add options for clone_fd, max_threads, daemonizeBernd Schubert-0/+2
This is useful for benchmarking. Note: This changes behavior - passthrough_hp runs in background by default now.
2023-01-10Support application-defined I/O functions for FUSE fdTofik Sonono-1/+82
The io for FUSE requests and responses can now be further customized by allowing to write custom functions for reading/writing the responses. This includes overriding the splice io. The reason for this addition is that having a custom file descriptor is not sufficient to allow custom io. Different types of file descriptor require different mechanisms of io interaction. For example, some file descriptor communication has boundaries (SOCK_DGRAM, EOF, etc...), while other types of fd:s might be unbounded (SOCK_STREAMS, ...). For unbounded communication, you have to read the header of the FUSE request first, and then read the remaining packet data. Furthermore, the one read call does not necessarily return all the data expected, requiring further calls in a loop.
2023-01-06Test for fuse_lowlevel_notify_expire_entry.HereThereBeDragons-1/+4
This test is too simple to check for all functionalities of notify_expire as it always successfully passes when libfuse supports the function (even if kernel does not support it - it just takes it as notify_inval)
2023-01-04Fixes when HAVE_LIBC_VERSIONED_SYMBOLS is not definedBernd Schubert-8/+29
fuse_loop_mt and fuse_new had not been defined when HAVE_LIBC_VERSIONED_SYMBOLS had not been set and additionally, fuse_new_31 was missing in the version script and was therefore an unusable symbol. This also adds a test for unset HAVE_LIBC_VERSIONED_SYMBOLS.
2022-05-06Fix a test strncpy compilation warning with recent gccBernd Schubert-2/+4
meson configure -D buildtype=debugoptimized meson configure -D b_sanitize=address,undefined Results in '-fsanitize=address,undefined ... -O2 -g' that made compilation to give errors with recent gcc versions. bernd@t1700bs build-ubuntu>ninja -v [1/2] ccache gcc -Itest/test_syscalls.p -Itest -I../test -Iinclude -I../include -Ilib -I../lib -I. -I.. -fdiagnostics-color=always -fsanitize=address,undefined -fno-omit-frame-pointer -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -O2 -g -D_REENTRANT -DHAVE_CONFIG_H -Wno-sign-compare -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -fno-strict-aliasing -Wno-unused-result -DHAVE_SYMVER_ATTRIBUTE -MD -MQ test/test_syscalls.p/test_syscalls.c.o -MF test/test_syscalls.p/test_syscalls.c.o.d -o test/test_syscalls.p/test_syscalls.c.o -c ../test/test_syscalls.c FAILED: test/test_syscalls.p/test_syscalls.c.o ccache gcc -Itest/test_syscalls.p -Itest -I../test -Iinclude -I../include -Ilib -I../lib -I. -I.. -fdiagnostics-color=always -fsanitize=address,undefined -fno-omit-frame-pointer -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -O2 -g -D_REENTRANT -DHAVE_CONFIG_H -Wno-sign-compare -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -fno-strict-aliasing -Wno-unused-result -DHAVE_SYMVER_ATTRIBUTE -MD -MQ test/test_syscalls.p/test_syscalls.c.o -MF test/test_syscalls.p/test_syscalls.c.o.d -o test/test_syscalls.p/test_syscalls.c.o -c ../test/test_syscalls.c In file included from /usr/include/string.h:519, from ../test/test_syscalls.c:7: In function ‘strncpy’, inlined from ‘test_socket’ at ../test/test_syscalls.c:1885:2, inlined from ‘main’ at ../test/test_syscalls.c:2030:9: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:10: error: ‘__builtin_strncpy’ output may be truncated copying 107 bytes from a string of length 1023 [-Werror=stringop-truncation] 95 | return __builtin___strncpy_chk (__dest, __src, __len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 | __glibc_objsize (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~ I disagree a bit on the gcc sanity here, as the code was behaving correctly and even already checked the string length. But sice the string length is already verified, that length can be used for the final strncpy.
2022-01-05Add test for FOPEN_NOFLUSH flagAmir Goldstein-1/+65
Simulate write() delay and verify that close(rofd) does not block waiting on pending writes. The support for the flag was added in kernel v5.16-rc1. Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-11-20test/test_syscalls.c: allow EBADF in fcheck_stat() (#631)Luis Henriques-1/+2
Test test/test_examples.py::test_passthrough_hp[False] fails because, on kernels >= 5.14, fstat() will return -EBADF: 3 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor 4 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor 5 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor 9 [check_unlinked_testfile] fcheck_stat() - fstat: Bad file descriptor ... This patch simply whitelists the EBADF errno code. Signed-off-by: Luís Henriques <lhenriques@suse.de> Co-authored-by: Luís Henriques <lhenriques@suse.de>
2021-06-24Travis-CI: Make sure lsan supppressions file can be read by root.Nikolaus Rath-5/+8
2021-06-23Do not run unlinked files test on passthrough_hp with old kernelsAmir Goldstein-3/+19
test_syscalls unlinked testfiles check fails on passthourhg_hp without the kernel commit "fuse: fix illegal access to inode with reused nodeid" queued for kernel 5.14 [1]. Make this check opt-in and do not run it with kernel version before 5.14. [1] https://lore.kernel.org/linux-fsdevel/CAJfpegtGKjeK8E5QsHKF0=re1J9wVHuGRVgg9NDJ_OOwQdCUNg@mail.gmail.com/ Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-06-14test/test_syscalls.c: check unlinked testfiles at the end of the testAmir Goldstein-16/+129
On some tests on regular files, open an O_PATH fd of the testfile and record it along side the size and mode and inode. At the end of all tests, use recorded testfiles info to re-check the size mode and inode of the unlinked testfiles. With O_PATH fd, the server does not have to keep the inode alive so FUSE inode may be stale or bad. Therefore, ESTALE and EIO are valid results for fstat() on the old testfile fd's, but returning the wrong size or mode is an invalid result. Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-06-14test/test_syscalls.c: refactor fcheck_* helpersAmir Goldstein-68/+45
Avoid multiple fstat() calls and consolidate all fcheck_* helpers into fcheck_stat(). Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-06-14test/test_syscalls.c: use unique filename per testAmir Goldstein-13/+37
Generate unique filename per test (only for regular file for now). Make sure to unlink the unique filename after each test. realpath variable was renamed to basepath_r to fix build warning on conflicting symbols with realpath() function. Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-06-09Cuse example: Fix memory leak (#607)Christian Menges-3/+1
* cuse example: fix memory leak * Travis CI: re-enable leak checking
2021-06-02test/test_syscalls.c: fix test failure on xfs src dir (#611)Amir Goldstein-1/+1
rename dir loop test fails when test tmp dir is xfs with an error test_rename_dir_loop() - rename : File exists That is because xfs returns EEXIST for the case of renaming over a non-empty directory. According to rename(2) man page, EEXIST and ENOTEMPTY are both valid error code in this case. Signed-off-by: Amir Goldstein <amir73il@gmail.com>
2021-03-18Fix returning d_ino and d_type by readdir(3) in non-plus modeJean-Pierre André-7/+25
When not using the readdir_plus mode, the d_type was not returned, and the use_ino flag was not used for returning d_ino. This patch fixes the returned values for d_ino and d_type by readdir(3) The test for the returned value of d_ino has been adjusted to also take the d_type into consideration and to check the returned values in both basic readdir and readdir_plus modes. This is done by executing the passthrough test twice. Co-authored-by: Jean-Pierre André <jpandre@users.sourceforge.net>
2021-02-03Fix returning inode numbers from readdir() in offset==0 mode. (#584)Martin Pärtel-1/+66
- Test added for all passthrough examples. - passthrough.c uses offset==0 mode. The others don't. - passthrough.c changed to set FUSE_FILL_DIR_PLUS to make the test pass. - This fixes #583.