On Thu, Feb 13, 2020 at 2:05 AM Mauricio Faria de Oliveira <mfo@xxxxxxxxxxxxx> wrote: > > Recently looking for an aufs test suite. The author clarified that > 'There is no public test suite specific to aufs.' [1] at this time, > and it looks like 'xfstests/tests/generic' should be enough [1, 2], > and is clearly an improvement in terms of publicly available tests. > > Thus, building on top of the existing infrastructure for overlay, > just introduce OVL_ALT_FSTYP that can be set to "aufs" to use it. > (using overlay's upperdir as rw-branch and lowerdir as ro-branch). > > This is indeed a workaround^W simple change that does the job vs. > creating a new FSTYP "aufs" and mechanically changing the number > of places that check for "overlay" to just handle "aufs" as well. > (so the effort is still small as aufs has no specific tests now.) Very nice! Please update README.overlay. FYI, I made a similar small change to enable testing of fuse.overlay with unionmount-testsuite: https://github.com/amir73il/unionmount-testsuite/commit/a72c274e0f5d6d05ad7c563fc7eff42356bffd15 Therefore: 1. Your changes could be useful for testing fuse.overlay with xfstests 2. You can just as easily test aufs with unionmount-testsuite - The test coverage is mostly orthogonal to that of xfstests (patches are welcome) > > Currently, running the generic + overlay (i.e., ./check -overlay) > tests (and excluding a few [3] which either hang or keep looping) > the numbers for aufs on loop devices on v5.4-based Ubuntu kernel > show a relatively good starting base in terms of exercising code: > > - Ran: 645 tests > - Not run: 483 tests > - Failures: 21 tests I'd be interested to know the stats for the overlay/* tests. > > So, hopefully this may be a starting point as an aufs test suite. > > [1] https://sourceforge.net/p/aufs/mailman/message/36918721/ > [2] https://sourceforge.net/p/aufs/mailman/message/36918932/ > [3] Steps: > > $ export OVL_ALT_FSTYP=aufs > $ export FSTYP=ext4 > $ export TEST_DEV=/dev/loop0 > $ export TEST_DIR=/mnt/test > $ export SCRATCH_DEV=/dev/loop1 > $ export SCRATCH_MNT=/mnt/scratch > > $ sudo mkfs.$FSTYP -F $TEST_DEV > $ sudo mkfs.$FSTYP -F $SCRATCH_DEV > $ sudo mkdir $TEST_DIR $SCRATCH_MNT > > $ cat <<EOF >/tmp/exclude-tests > generic/013 > generic/070 > generic/075 > generic/112 > generic/127 > generic/461 > generic/476 > generic/522 > generic/530 > overlay/019 > EOF > > $ sudo -E ./check -overlay -E /tmp/exclude-tests > --- > common/overlay | 6 ++++++ > common/rc | 4 ++++ > 2 files changed, 10 insertions(+) > > diff --git a/common/overlay b/common/overlay > index 65c639e9c6d8..3b3351ed040e 100644 > --- a/common/overlay > +++ b/common/overlay > @@ -20,6 +20,12 @@ _overlay_mount_dirs() > local workdir=$3 > shift 3 > > + if [ -n "$OVL_ALT_FSTYP" -a "$OVL_ALT_FSTYP" = "aufs" ]; then > + $MOUNT_PROG -t aufs -o br=$upperdir=rw:$lowerdir=ro \ > + `_common_dev_mount_options $*` > + return $? > + fi > + > $MOUNT_PROG -t overlay -o lowerdir=$lowerdir -o upperdir=$upperdir \ > -o workdir=$workdir `_common_dev_mount_options $*` I think it would be better to define (in common/config): export OVL_FSTYP=${OVL_FSTYP:="overlay"} And make sure to always mount -t $OVL_FSTYP then you won't need to check if OVL_ALT_FSTYP is non empty. and setting OVL_FSTYP to "fuse.overlay" should mostly work. I did find 5 overlay tests that do mount -t overlay not via any of the common helpers, so you'll need to handle those, possibly with another common helper that supports middle layers: tests/overlay/011 tests/overlay/035 tests/overlay/052 tests/overlay/053 tests/overlay/062 Thanks, Amir.