Skip to content

Commit

Permalink
tests: add basic overlayfs tests
Browse files Browse the repository at this point in the history
  • Loading branch information
snajpa committed Oct 6, 2019
1 parent 9964601 commit aba3a50
Show file tree
Hide file tree
Showing 7 changed files with 232 additions and 0 deletions.
1 change: 1 addition & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,7 @@ AC_CONFIG_FILES([
tests/zfs-tests/tests/functional/no_space/Makefile
tests/zfs-tests/tests/functional/nopwrite/Makefile
tests/zfs-tests/tests/functional/online_offline/Makefile
tests/zfs-tests/tests/functional/overlayfs/Makefile
tests/zfs-tests/tests/functional/pool_names/Makefile
tests/zfs-tests/tests/functional/pool_checkpoint/Makefile
tests/zfs-tests/tests/functional/poolversion/Makefile
Expand Down
4 changes: 4 additions & 0 deletions tests/runfiles/linux.run
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,10 @@ tests = ['online_offline_001_pos', 'online_offline_002_neg',
'online_offline_003_neg']
tags = ['functional', 'online_offline']

[tests/functional/overlayfs]
tests = ['overlayfs_basic', 'overlayfs_layered']
tags = ['functional', 'overlayfs']

[tests/functional/pool_checkpoint]
tests = ['checkpoint_after_rewind', 'checkpoint_big_rewind',
'checkpoint_capacity', 'checkpoint_conf_change', 'checkpoint_discard',
Expand Down
6 changes: 6 additions & 0 deletions tests/zfs-tests/tests/functional/overlayfs/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/overlayfs
dist_pkgdata_SCRIPTS = \
setup.ksh \
cleanup.ksh \
overlayfs_basic.ksh \
overlayfs_layered.ksh
34 changes: 34 additions & 0 deletions tests/zfs-tests/tests/functional/overlayfs/cleanup.ksh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/ksh -p
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#

#
# Copyright (c) 2013 by Delphix. All rights reserved.
#

. $STF_SUITE/include/libtest.shlib

default_cleanup
66 changes: 66 additions & 0 deletions tests/zfs-tests/tests/functional/overlayfs/overlayfs_basic.ksh
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/ksh -p
# SPDX-License-Identifier: CDDL-1.0 OR MPL-2.0

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright (C) 2019 Pavel Snajdr <snajpa@snajpa.net
# Copyright (C) 2019 vpsFree.cz
#

. $STF_SUITE/include/libtest.shlib

verify_runnable "both"

function cleanup
{
log_must umount -f $TESTDIR/overlay
log_must rm -rf $TESTDIR/*
}

log_assert "ZFS supports being upper/lower/mnt of overlayfs."
log_onexit cleanup

cd $TESTDIR
mkdir lower upper work overlay
touch lower/{a,b}
touch upper/{c,d}
echo "orig" > lower/testfile
echo "upper" > upper/testfile

# Basic overlayfs mount
log_must mount -t overlay \
-o lowerdir=lower/,upperdir=upper/,workdir=work/ \
none overlay/

# Does presented overlay have all the files we expect?
log_must stat overlay/{a,b,c,d,testfile}

# We'd expect content of the upper test file
log_must grep upper overlay/testfile

echo "new" > overlay/testfile

# We'd expect content of the upper test file changed now
log_must grep new upper/testfile

log_assert "ZFS supports being upper/lower/mnt of overlayfs as expected."
78 changes: 78 additions & 0 deletions tests/zfs-tests/tests/functional/overlayfs/overlayfs_layered.ksh
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/bin/ksh -p
# SPDX-License-Identifier: CDDL-1.0 OR MPL-2.0

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright (C) 2019 Pavel Snajdr <snajpa@snajpa.net
# Copyright (C) 2019 vpsFree.cz
#

. $STF_SUITE/include/libtest.shlib

verify_runnable "both"

function cleanup
{
log_must umount -f $TESTDIR/merge{2,1}
log_must rm -rf $TESTDIR/*
}

log_assert "ZFS supports multilayered overlayfs."
log_onexit cleanup

cd $TESTDIR
mkdir lower middle upper work1 work2 merge1 merge2
mkdir {lower,middle,upper}/{dira,dirb}
touch lower/{dira,dirb}/{a,b}
touch middle/{dira,dirb}/{c,d}
touch upper/{dira,dirb}/{e,f}
echo "orig" > lower/testfile
echo "mid" > middle/testfile
echo "upper" > upper/testfile

# 1st level overlayfs mount
log_must mount -t overlay \
-o lowerdir=lower/,upperdir=middle/,workdir=work1/ \
-o ro \
none merge1/

# 2st level overlayfs mount
log_must mount -t overlay \
-o lowerdir=merge1/,upperdir=upper/,workdir=work2/ \
none merge2/

# Does presented overlay have all the files we expect?
log_must stat merge2/{dira,dirb}/{a,b,c,d,e,f} merge2/testfile

# We'd expect content of the upper test file
log_must grep upper merge2/testfile

echo "new" > merge2/testfile

# We'd expect content of the lower test file not changed
log_must grep orig lower/testfile

# We'd expect content of the upper test file changed to new
log_must grep new upper/testfile

log_assert "ZFS supports multi-layered overlayfs as expected."
43 changes: 43 additions & 0 deletions tests/zfs-tests/tests/functional/overlayfs/setup.ksh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/ksh -p
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#

#
# Copyright (c) 2013 by Delphix. All rights reserved.
#

. $STF_SUITE/include/libtest.shlib

if ! is_linux ; then
log_unsupported "overlayfs is linux-only"
elif ! grep overlay /proc/filesystems; then
log_unsupported "kernel built without overlayfs or module not loaded"
elif ! renameat2 -C ; then
log_unsupported "renameat2 not supported on this (pre-3.15) linux kernel"
fi

DISK=${DISKS%% *}
default_setup $DISK

0 comments on commit aba3a50

Please sign in to comment.