MFp4: Add regression tests for tmpfs.
Obtained from: NetBSD via p4 Submitted by: Howard Su
This commit is contained in:
parent
d1fa59e9e1
commit
f8c94cec4b
39
tools/regression/tmpfs/Makefile
Normal file
39
tools/regression/tmpfs/Makefile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# $NetBSD: Makefile,v 1.4 2006/11/09 15:25:37 jmmv Exp $
|
||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
tests= t_mount
|
||||||
|
tests+= t_statvfs
|
||||||
|
tests+= t_mkdir
|
||||||
|
tests+= t_vnode_leak
|
||||||
|
tests+= t_setattr
|
||||||
|
tests+= t_rmdir
|
||||||
|
tests+= t_id_gen
|
||||||
|
tests+= t_trail_slash
|
||||||
|
tests+= t_dots
|
||||||
|
tests+= t_create
|
||||||
|
tests+= t_remove
|
||||||
|
tests+= t_link
|
||||||
|
tests+= t_rename
|
||||||
|
tests+= t_read_write
|
||||||
|
tests+= t_exec
|
||||||
|
tests+= t_truncate
|
||||||
|
tests+= t_sizes
|
||||||
|
tests+= t_times
|
||||||
|
tests+= t_symlink
|
||||||
|
tests+= t_pipes
|
||||||
|
tests+= t_sockets
|
||||||
|
tests+= t_readdir
|
||||||
|
tests+= t_vnd
|
||||||
|
|
||||||
|
regress: ${tests}
|
||||||
|
.for t in ${tests}
|
||||||
|
@SUBRDIR=${.CURDIR} /bin/sh ${.CURDIR}/${t} ${TEST_ARGS}
|
||||||
|
.endfor
|
||||||
|
|
||||||
|
PROG= h_tools
|
||||||
|
NO_MAN= # defined
|
||||||
|
WARNS= 4
|
||||||
|
|
||||||
|
t_sizes t_sockets t_statvfs: h_tools
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
191
tools/regression/tmpfs/h_funcs.subr
Normal file
191
tools/regression/tmpfs/h_funcs.subr
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: h_funcs.subr,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Helper functions for tests written in shell script.
|
||||||
|
#
|
||||||
|
|
||||||
|
Prog_Name=${0##*/}
|
||||||
|
Src_Dir=$(pwd)
|
||||||
|
Unprived_User=
|
||||||
|
Verbose=2
|
||||||
|
Work_Dir=$(pwd)/tmp
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# die
|
||||||
|
#
|
||||||
|
# Called by tests when a command fails unexpectedly. Terminates
|
||||||
|
# execution and tries to clean up the mount point.
|
||||||
|
#
|
||||||
|
die() {
|
||||||
|
if [ -d ${Work_Dir} ]; then
|
||||||
|
cd ${Src_Dir}
|
||||||
|
umount ${Work_Dir}
|
||||||
|
rmdir ${Work_Dir}
|
||||||
|
fi
|
||||||
|
[ ${Verbose} -eq 2 ] && err "Test ended unexpectedly"
|
||||||
|
[ ${Verbose} -eq 1 ] && echo " failed."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# err message
|
||||||
|
#
|
||||||
|
# Shows the given error message and terminates the program.
|
||||||
|
#
|
||||||
|
err() {
|
||||||
|
echo "${Prog_Name}: $*" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# test_mount [args]
|
||||||
|
#
|
||||||
|
# Mounts tmpfs over ${Work_Dir} and changes the current directory
|
||||||
|
# to the mount point. Optional arguments may be passed to the
|
||||||
|
# mount command.
|
||||||
|
#
|
||||||
|
test_mount() {
|
||||||
|
mkdir ${Work_Dir} || die
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
mount -t tmpfs "$@" tmpfs ${Work_Dir} || die
|
||||||
|
else
|
||||||
|
mount -t tmpfs tmpfs ${Work_Dir} || die
|
||||||
|
fi
|
||||||
|
cd ${Work_Dir}
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# test_name message
|
||||||
|
#
|
||||||
|
# Prints a message about what a test is going to do.
|
||||||
|
#
|
||||||
|
test_name() {
|
||||||
|
[ ${Verbose} -gt 1 ] && echo " $*..."
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# test_unmount
|
||||||
|
#
|
||||||
|
# Unmounts the file system mounted by test_mount.
|
||||||
|
#
|
||||||
|
test_unmount() {
|
||||||
|
cd -
|
||||||
|
umount ${Work_Dir} || die
|
||||||
|
rmdir ${Work_Dir} || die
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# kqueue_monitor expected_nevents file1 [.. fileN]
|
||||||
|
#
|
||||||
|
# Monitors the commands given through stdin (one per line) using
|
||||||
|
# kqueue and stores the events raised in a log that can be later
|
||||||
|
# verified with kqueue_check.
|
||||||
|
#
|
||||||
|
kqueue_monitor() {
|
||||||
|
nev=${1}; shift
|
||||||
|
test_name "Running kqueue-monitored commands and expecting" \
|
||||||
|
"${nev} events"
|
||||||
|
${Src_Dir}/h_tools kqueue ${*} >kqueue.log || return 1
|
||||||
|
got=$(wc -l kqueue.log | awk '{ print $1 }')
|
||||||
|
test ${got} -eq ${nev}
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# kqueue_check file event
|
||||||
|
#
|
||||||
|
# Checks if kqueue raised the given event when monitoring the
|
||||||
|
# given file.
|
||||||
|
#
|
||||||
|
kqueue_check() {
|
||||||
|
grep "^${1} - ${2}$" kqueue.log >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local args
|
||||||
|
|
||||||
|
[ $(id -un) = root ] || err "Must be run as root"
|
||||||
|
|
||||||
|
args=$(getopt u:v:w: $*)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Usage: ${Prog_Name} [-u unprived_user] [-v level] " \
|
||||||
|
"[-w root_dir]" 1>&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
set -- ${args}
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
-u)
|
||||||
|
Unprived_User="$2"; shift
|
||||||
|
;;
|
||||||
|
-v)
|
||||||
|
Verbose="$2"; shift
|
||||||
|
;;
|
||||||
|
-w)
|
||||||
|
Work_Dir="$2"; shift
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift; break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
[ ${Verbose} -eq 1 ] && echo -n "${Prog_Name}:"
|
||||||
|
[ ${Verbose} -eq 2 ] && echo "${Prog_Name}: Running tests"
|
||||||
|
test_run
|
||||||
|
[ ${Verbose} -eq 1 ] && echo " ok."
|
||||||
|
[ ${Verbose} -eq 2 ] && echo "${Prog_Name}: All tests were successful"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
283
tools/regression/tmpfs/h_tools.c
Normal file
283
tools/regression/tmpfs/h_tools.c
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
/* $NetBSD: h_tools.c,v 1.7 2006/11/09 16:20:06 jmmv Exp $ */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
* by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
* 2005 program.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the NetBSD
|
||||||
|
* Foundation, Inc. and its contributors.
|
||||||
|
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper tools for several tests. These are kept in a single file due
|
||||||
|
* to the limitations of bsd.prog.mk to build a single program in a
|
||||||
|
* given directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/event.h>
|
||||||
|
#include <sys/mount.h>
|
||||||
|
#include <sys/statvfs.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/un.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <err.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
static int getfh_main(int, char **);
|
||||||
|
static int kqueue_main(int, char **);
|
||||||
|
static int rename_main(int, char **);
|
||||||
|
static int sockets_main(int, char **);
|
||||||
|
static int statvfs_main(int, char **);
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int
|
||||||
|
getfh_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int error;
|
||||||
|
fhandle_t fh;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
error = getfh(argv[1], &fh);
|
||||||
|
if (error == 0)
|
||||||
|
err(EXIT_FAILURE, "can not getfh");
|
||||||
|
|
||||||
|
error = write(STDOUT_FILENO, &fh, sizeof(fh));
|
||||||
|
if (error == -1) {
|
||||||
|
perror("write");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int
|
||||||
|
kqueue_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *line;
|
||||||
|
int i, kq;
|
||||||
|
size_t len;
|
||||||
|
struct kevent *changes, event;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
|
||||||
|
changes = malloc(sizeof(struct kevent) * (argc - 1));
|
||||||
|
if (changes == NULL)
|
||||||
|
errx(EXIT_FAILURE, "not enough memory");
|
||||||
|
|
||||||
|
for (i = 0; i < argc; i++) {
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
fd = open(argv[i], O_RDONLY);
|
||||||
|
if (fd == -1)
|
||||||
|
err(EXIT_FAILURE, "cannot open %s", argv[i]);
|
||||||
|
|
||||||
|
EV_SET(&changes[i], fd, EVFILT_VNODE,
|
||||||
|
EV_ADD | EV_ENABLE | EV_ONESHOT,
|
||||||
|
NOTE_ATTRIB | NOTE_DELETE | NOTE_EXTEND | NOTE_LINK |
|
||||||
|
NOTE_RENAME | NOTE_REVOKE | NOTE_WRITE,
|
||||||
|
0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
kq = kqueue();
|
||||||
|
if (kq == -1)
|
||||||
|
err(EXIT_FAILURE, "kqueue");
|
||||||
|
|
||||||
|
while ((line = fgetln(stdin, &len)) != NULL) {
|
||||||
|
int ec, nev;
|
||||||
|
struct timespec to;
|
||||||
|
|
||||||
|
to.tv_sec = 0;
|
||||||
|
to.tv_nsec = 100000;
|
||||||
|
|
||||||
|
(void)kevent(kq, changes, argc, &event, 1, &to);
|
||||||
|
|
||||||
|
assert(len > 0);
|
||||||
|
assert(line[len - 1] == '\n');
|
||||||
|
line[len - 1] = '\0';
|
||||||
|
ec = system(line);
|
||||||
|
if (ec != EXIT_SUCCESS)
|
||||||
|
errx(ec, "%s returned %d", line, ec);
|
||||||
|
|
||||||
|
do {
|
||||||
|
nev = kevent(kq, changes, argc, &event, 1, &to);
|
||||||
|
if (nev == -1)
|
||||||
|
err(EXIT_FAILURE, "kevent");
|
||||||
|
else if (nev > 0) {
|
||||||
|
for (i = 0; i < argc; i++)
|
||||||
|
if (event.ident == changes[i].ident)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (event.fflags & NOTE_ATTRIB)
|
||||||
|
printf("%s - NOTE_ATTRIB\n", argv[i]);
|
||||||
|
if (event.fflags & NOTE_DELETE)
|
||||||
|
printf("%s - NOTE_DELETE\n", argv[i]);
|
||||||
|
if (event.fflags & NOTE_EXTEND)
|
||||||
|
printf("%s - NOTE_EXTEND\n", argv[i]);
|
||||||
|
if (event.fflags & NOTE_LINK)
|
||||||
|
printf("%s - NOTE_LINK\n", argv[i]);
|
||||||
|
if (event.fflags & NOTE_RENAME)
|
||||||
|
printf("%s - NOTE_RENAME\n", argv[i]);
|
||||||
|
if (event.fflags & NOTE_REVOKE)
|
||||||
|
printf("%s - NOTE_REVOKE\n", argv[i]);
|
||||||
|
if (event.fflags & NOTE_WRITE)
|
||||||
|
printf("%s - NOTE_WRITE\n", argv[i]);
|
||||||
|
}
|
||||||
|
} while (nev > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < argc; i++)
|
||||||
|
close(changes[i].ident);
|
||||||
|
free(changes);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int
|
||||||
|
rename_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (argc < 3)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
return rename(argv[1], argv[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int
|
||||||
|
sockets_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int error, fd;
|
||||||
|
struct sockaddr_un addr;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
fd = socket(PF_LOCAL, SOCK_STREAM, 0);
|
||||||
|
if (fd == -1) {
|
||||||
|
perror("socket");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)strlcpy(addr.sun_path, argv[1], sizeof(addr.sun_path));
|
||||||
|
addr.sun_family = PF_UNIX;
|
||||||
|
|
||||||
|
error = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
|
||||||
|
if (error == -1) {
|
||||||
|
perror("connect");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int
|
||||||
|
statvfs_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int error;
|
||||||
|
struct statfs buf;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
memset(&buf, 0, sizeof(buf));
|
||||||
|
buf.f_version = STATFS_VERSION;
|
||||||
|
error = statfs(argv[1], &buf);
|
||||||
|
if (error != 0) {
|
||||||
|
perror("statvfs");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)printf("f_bsize=%llu\n", buf.f_bsize);
|
||||||
|
(void)printf("f_blocks=%llu\n", buf.f_blocks);
|
||||||
|
(void)printf("f_bfree=%llu\n", buf.f_bfree);
|
||||||
|
(void)printf("f_files=%llu\n", buf.f_files);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int error;
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
argc -= 1;
|
||||||
|
argv += 1;
|
||||||
|
|
||||||
|
if (strcmp(argv[0], "getfh") == 0)
|
||||||
|
error = getfh_main(argc, argv);
|
||||||
|
else if (strcmp(argv[0], "kqueue") == 0)
|
||||||
|
error = kqueue_main(argc, argv);
|
||||||
|
else if (strcmp(argv[0], "rename") == 0)
|
||||||
|
error = rename_main(argc, argv);
|
||||||
|
else if (strcmp(argv[0], "sockets") == 0)
|
||||||
|
error = sockets_main(argc, argv);
|
||||||
|
else if (strcmp(argv[0], "statvfs") == 0)
|
||||||
|
error = statvfs_main(argc, argv);
|
||||||
|
else
|
||||||
|
error = EXIT_FAILURE;
|
||||||
|
|
||||||
|
return error;
|
||||||
|
}
|
98
tools/regression/tmpfs/t_create
Normal file
98
tools/regression/tmpfs/t_create
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_create,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the create operation works.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Files can be created"
|
||||||
|
umask 022 || die
|
||||||
|
test -f a && die
|
||||||
|
touch a || die
|
||||||
|
test -f a || die
|
||||||
|
test_name "New files get proper attributes"
|
||||||
|
eval $(stat -s . | sed -e 's|st_|dst_|g')
|
||||||
|
eval $(stat -s a)
|
||||||
|
test ${st_flags} -eq 0 || die
|
||||||
|
test ${st_size} -eq 0 || die
|
||||||
|
test ${st_uid} -eq $(id -u) || die
|
||||||
|
test ${st_gid} -eq ${dst_gid} || die
|
||||||
|
test ${st_mode} = 0100644 || die
|
||||||
|
|
||||||
|
if [ -n "${Unprived_User}" ]; then
|
||||||
|
test_name "New files by users get proper attributes"
|
||||||
|
|
||||||
|
mkdir b c || die
|
||||||
|
|
||||||
|
chown ${Unprived_User}:0 b || die
|
||||||
|
eval $(stat -s b)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 0 ] || die
|
||||||
|
|
||||||
|
chown ${Unprived_User}:100 c || die
|
||||||
|
eval $(stat -s c)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 100 ] || die
|
||||||
|
|
||||||
|
su ${Unprived_User} -c 'touch b/a'
|
||||||
|
eval $(stat -s b/a)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 0 ] || die
|
||||||
|
|
||||||
|
su ${Unprived_User} -c 'touch c/a'
|
||||||
|
eval $(stat -s c/a)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 100 ] || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
echo 'touch dir/a' | kqueue_monitor 1 dir || die
|
||||||
|
test_name "Creating a file raises NOTE_WRITE on the parent directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
63
tools/regression/tmpfs/t_dots
Normal file
63
tools/regression/tmpfs/t_dots
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_dots,v 1.4 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that '.' and '..' lookups work.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "'.' and '..' entries of a directory work."
|
||||||
|
mkdir a
|
||||||
|
test -d ./a || die
|
||||||
|
test -d a/../a || die
|
||||||
|
|
||||||
|
test_name "'.' and '..' entries of nested directories work."
|
||||||
|
mkdir a/b
|
||||||
|
test -d a/b/../b || die
|
||||||
|
test -d a/b/../../a || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
62
tools/regression/tmpfs/t_exec
Normal file
62
tools/regression/tmpfs/t_exec
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_exec,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that binary files can be executed from within the file system
|
||||||
|
# (i.e., whether getpages works).
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Copy of existing binary program"
|
||||||
|
cp /bin/cp . || die
|
||||||
|
test_name "Data written is correct"
|
||||||
|
[ $(md5 cp | cut -d ' ' -f 4) = $(md5 /bin/cp | cut -d ' ' -f 4) ] || \
|
||||||
|
die
|
||||||
|
test_name "Execution of binary program"
|
||||||
|
./cp cp foo || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
75
tools/regression/tmpfs/t_id_gen
Normal file
75
tools/regression/tmpfs/t_id_gen
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_id_gen,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that node identifiers and generation numbers are assigned
|
||||||
|
# correctly.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Creation of directory"
|
||||||
|
mkdir a || die
|
||||||
|
test_name "Node ID should be 3"
|
||||||
|
eval $(stat -s a | sed -e 's|st_|ost_|g') || die
|
||||||
|
ofhsum=$(${Src_Dir}/h_tools getfh a | md5) || die
|
||||||
|
[ ${ost_ino} -eq 3 ] || die
|
||||||
|
|
||||||
|
test_name "Deletion of directory"
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "Creation of directory (reuse node)"
|
||||||
|
mkdir b || die
|
||||||
|
test_name "Node ID should be 3"
|
||||||
|
eval $(stat -s b) || die
|
||||||
|
fhsum=$(${Src_Dir}/h_tools getfh b | md5) || die
|
||||||
|
[ ${st_ino} -eq 3 ] || die
|
||||||
|
|
||||||
|
#Failed Case
|
||||||
|
#test_name "File handle is different (thanks to generation)"
|
||||||
|
#[ ${ofhsum} != ${fhsum} ] || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
108
tools/regression/tmpfs/t_link
Normal file
108
tools/regression/tmpfs/t_link
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_link,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the link operation works.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Link operation works"
|
||||||
|
touch a || die
|
||||||
|
touch z || die
|
||||||
|
eval $(stat -s a | sed -e 's|st_|sta_|g')
|
||||||
|
eval $(stat -s z | sed -e 's|st_|stz_|g')
|
||||||
|
test ${sta_ino} != ${stz_ino} || die
|
||||||
|
test ${sta_nlink} -eq 1 || die
|
||||||
|
ln a b || die
|
||||||
|
test_name "Link count is correct after links are created"
|
||||||
|
eval $(stat -s a | sed -e 's|st_|sta_|g')
|
||||||
|
eval $(stat -s b | sed -e 's|st_|stb_|g')
|
||||||
|
test ${sta_ino} = ${stb_ino} || die
|
||||||
|
test ${sta_nlink} -eq 2 || die
|
||||||
|
test ${stb_nlink} -eq 2 || die
|
||||||
|
test_name "Link count is correct after links are deleted"
|
||||||
|
rm a || die
|
||||||
|
eval $(stat -s b | sed -e 's|st_|stb_|g')
|
||||||
|
test ${stb_nlink} -eq 1 || die
|
||||||
|
rm b || die
|
||||||
|
|
||||||
|
test_name "Link operation works in subdirectories"
|
||||||
|
touch a || die
|
||||||
|
mkdir c || die
|
||||||
|
ln a c/b || die
|
||||||
|
test_name "Link count is correct after links are created"
|
||||||
|
eval $(stat -s a | sed -e 's|st_|sta_|g')
|
||||||
|
eval $(stat -s c/b | sed -e 's|st_|stb_|g')
|
||||||
|
test ${sta_ino} = ${stb_ino} || die
|
||||||
|
test ${sta_nlink} -eq 2 || die
|
||||||
|
test ${stb_nlink} -eq 2 || die
|
||||||
|
test_name "Link count is correct after links are deleted"
|
||||||
|
rm a || die
|
||||||
|
eval $(stat -s c/b | sed -e 's|st_|stb_|g')
|
||||||
|
test ${stb_nlink} -eq 1 || die
|
||||||
|
rm c/b || die
|
||||||
|
rmdir c || die
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
touch dir/a || die
|
||||||
|
echo 'ln dir/a dir/b' | kqueue_monitor 2 dir dir/a || die
|
||||||
|
test_name "Creating a link raises NOTE_LINK on the source file"
|
||||||
|
kqueue_check dir/a NOTE_LINK || die
|
||||||
|
test_name "Creating a link raises NOTE_WRITE on the parent directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
|
||||||
|
echo 'rm dir/a' | kqueue_monitor 2 dir dir/b || die
|
||||||
|
# XXX According to the (short) kqueue(2) documentation, the following
|
||||||
|
# should raise a NOTE_LINK but FFS raises a NOTE_DELETE...
|
||||||
|
test_name "Deleting a link raises NOTE_DELETE on one other link"
|
||||||
|
kqueue_check dir/b NOTE_DELETE || die
|
||||||
|
test_name "Deleting a link raises NOTE_WRITE on the parent directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
rm dir/b || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
110
tools/regression/tmpfs/t_mkdir
Normal file
110
tools/regression/tmpfs/t_mkdir
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_mkdir,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that mkdir works by creating some nested directories. It also
|
||||||
|
# checks, in part, the lookup operation.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Directories can be created"
|
||||||
|
mkdir a
|
||||||
|
test_name "Link count is updated after directory creation"
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_nlink} = 3 ] || die
|
||||||
|
|
||||||
|
test_name "Create many directories"
|
||||||
|
for d in $(jot 100); do
|
||||||
|
test -d ${d} && die
|
||||||
|
mkdir ${d}
|
||||||
|
test -d ${d} || die
|
||||||
|
done
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_nlink} = 103 ] || die
|
||||||
|
|
||||||
|
test_name "Nested directories can be created"
|
||||||
|
test -d a/b/c/d/e && die
|
||||||
|
mkdir -p a/b/c/d/e || die
|
||||||
|
test -d a/b/c/d/e || die
|
||||||
|
|
||||||
|
if [ -n "${Unprived_User}" ]; then
|
||||||
|
test_name "New directories by users get proper attributes"
|
||||||
|
mkdir b c || die
|
||||||
|
|
||||||
|
chown ${Unprived_User}:0 b || die
|
||||||
|
eval $(stat -s b)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 0 ] || die
|
||||||
|
|
||||||
|
chown ${Unprived_User}:100 c || die
|
||||||
|
eval $(stat -s c)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 100 ] || die
|
||||||
|
|
||||||
|
su ${Unprived_User} -c 'mkdir b/a'
|
||||||
|
eval $(stat -s b/a)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 0 ] || die
|
||||||
|
|
||||||
|
su ${Unprived_User} -c 'mkdir c/a'
|
||||||
|
eval $(stat -s c/a)
|
||||||
|
[ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
|
||||||
|
[ ${st_gid} -eq 100 ] || die
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
echo 'mkdir dir/a' | kqueue_monitor 2 dir || die
|
||||||
|
test_name "Creating a directory raises NOTE_LINK on the parent" \
|
||||||
|
"directory"
|
||||||
|
kqueue_check dir NOTE_LINK || die
|
||||||
|
test_name "Creating a directory raises NOTE_WRITE on the parent" \
|
||||||
|
"directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
rmdir dir/a || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
85
tools/regression/tmpfs/t_mount
Normal file
85
tools/regression/tmpfs/t_mount
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_mount,v 1.7 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that an execution of mount and umount works correctly without
|
||||||
|
# causing errors and that the root node gets correct attributes.
|
||||||
|
# Also verifies command line parsing from mount_tmpfs.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_name "File-system can be mounted"
|
||||||
|
test_mount
|
||||||
|
test_name "Root directory has two links"
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_nlink} = 2 ] || die
|
||||||
|
test_name "File-system can be unmounted"
|
||||||
|
test_unmount
|
||||||
|
|
||||||
|
test_name "File-system mount options work"
|
||||||
|
test_mount -o ro
|
||||||
|
mount | grep ${Work_Dir} | grep -q read-only || die
|
||||||
|
test_unmount
|
||||||
|
|
||||||
|
test_name "Root directory attributes are set correctly"
|
||||||
|
test_mount -o "uid=1000,gid=100,mode=755"
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_uid} = 1000 ] || die
|
||||||
|
[ ${st_gid} = 100 ] || die
|
||||||
|
[ ${st_mode} = 040755 ] || die
|
||||||
|
test_unmount
|
||||||
|
|
||||||
|
test_name "Negative values are correctly handled"
|
||||||
|
test_mount -o "size=-10"
|
||||||
|
test_unmount
|
||||||
|
|
||||||
|
test_name "Extremely large values are correctly handled"
|
||||||
|
test_mount -o size=9223372036854775807
|
||||||
|
test_unmount
|
||||||
|
mount -t tmpfs -o size=9223372036854775808 tmpfs ${Work_Dir} \
|
||||||
|
2>/dev/null && die
|
||||||
|
mount -t tmpfs -o size=9223372036854775808g tmpfs ${Work_Dir} \
|
||||||
|
2>/dev/null && die
|
||||||
|
rmdir ${Work_Dir}
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
62
tools/regression/tmpfs/t_pipes
Normal file
62
tools/regression/tmpfs/t_pipes
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_pipes,v 1.5 2006/12/07 10:00:39 pooka Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that pipes created inside tmpfs work.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
umask 022 || die
|
||||||
|
|
||||||
|
test_name "Creation of named pipe"
|
||||||
|
mkfifo pipe || die
|
||||||
|
|
||||||
|
test_name "Writing to pipe and waiting for response"
|
||||||
|
echo -n foo >pipe &
|
||||||
|
[ "$(cat pipe)" = foo ] || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
81
tools/regression/tmpfs/t_read_write
Normal file
81
tools/regression/tmpfs/t_read_write
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_read_write,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the read and write operations work.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Write to new file works"
|
||||||
|
echo foo >a || die
|
||||||
|
test_name "Data written is correct"
|
||||||
|
[ $(md5 a | cut -d ' ' -f 4) = d3b07384d113edec49eaa6238ad5ff00 ] || die
|
||||||
|
|
||||||
|
test_name "Append to existing file works"
|
||||||
|
echo bar >>a || die
|
||||||
|
test_name "Data written is correct"
|
||||||
|
[ $(md5 a | cut -d ' ' -f 4) = f47c75614087a8dd938ba4acff252494 ] || die
|
||||||
|
|
||||||
|
test_name "Write to long file (bigger than a page) works"
|
||||||
|
jot 10000 >b || die
|
||||||
|
test_name "Data written is correct"
|
||||||
|
[ $(md5 b | cut -d ' ' -f 4) = 72d4ff27a28afbc066d5804999d5a504 ] || die
|
||||||
|
|
||||||
|
dd if=/dev/zero of=c bs=1k count=10 >/dev/null 2>&1 || die
|
||||||
|
echo 'dd if=/dev/zero of=c seek=2 bs=1k count=1 conv=notrunc' \
|
||||||
|
'>/dev/null 2>&1' | kqueue_monitor 1 c || die
|
||||||
|
test_name "Writing to a file raises NOTE_WRITE"
|
||||||
|
kqueue_check c NOTE_WRITE || die
|
||||||
|
|
||||||
|
echo foo >d
|
||||||
|
echo 'echo bar >>d' | kqueue_monitor 2 d || die
|
||||||
|
test_name "Appending to a file raises NOTE_EXTEND"
|
||||||
|
kqueue_check d NOTE_EXTEND || die
|
||||||
|
test_name "Appending to a file raises NOTE_WRITE"
|
||||||
|
kqueue_check d NOTE_WRITE || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
93
tools/regression/tmpfs/t_readdir
Normal file
93
tools/regression/tmpfs/t_readdir
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_readdir,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the readdir operation works.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Directory has '.' and '..' entries"
|
||||||
|
/bin/ls -a | grep '^\.$' >/dev/null || die
|
||||||
|
/bin/ls -a | grep '^\..$' >/dev/null || die
|
||||||
|
|
||||||
|
test_name "Creation of files of all possible types"
|
||||||
|
mkdir dir || die
|
||||||
|
touch reg || die
|
||||||
|
ln -s reg lnk || die
|
||||||
|
mknod b blk 0 0 || die
|
||||||
|
mknod c chr 0 0 || die
|
||||||
|
mkfifo fifo || die
|
||||||
|
${Src_Dir}/h_tools sockets sock || die
|
||||||
|
|
||||||
|
test_name "Read of directory"
|
||||||
|
ls >/dev/null || die
|
||||||
|
rm -rf * || die
|
||||||
|
|
||||||
|
# Catch a bug caused by incorrect invalidation of readdir caching
|
||||||
|
# variables.
|
||||||
|
test_name "Populate directory"
|
||||||
|
touch $(jot 10) || die
|
||||||
|
test_name "Clean it"
|
||||||
|
rm * || die
|
||||||
|
test_name "Repopulate directory"
|
||||||
|
touch $(jot 20) || die
|
||||||
|
test_name "Listing should return all entries"
|
||||||
|
ls >/dev/null || die
|
||||||
|
|
||||||
|
test_name "Creation of many files"
|
||||||
|
mkdir a || die
|
||||||
|
for f in $(jot 500); do
|
||||||
|
touch a/$f || die
|
||||||
|
done
|
||||||
|
|
||||||
|
test_name "Removal of all files using a wildcard"
|
||||||
|
rm a/* || die
|
||||||
|
|
||||||
|
test_name "Removal of should-be-empty directory"
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
83
tools/regression/tmpfs/t_remove
Normal file
83
tools/regression/tmpfs/t_remove
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_remove,v 1.7.2.1 2007/01/04 20:29:50 bouyer Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the remove operation works.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Files can be removed"
|
||||||
|
test -f a && die
|
||||||
|
touch a || die
|
||||||
|
test -f a || die
|
||||||
|
rm a || die
|
||||||
|
test -f a && die
|
||||||
|
|
||||||
|
test_name "Files with uchg flags cannot be removed"
|
||||||
|
touch a || die
|
||||||
|
chflags uchg a || die
|
||||||
|
#Not valid case in FreeBSD
|
||||||
|
#rm -f a 2>/dev/null && die
|
||||||
|
chflags nouchg a || die
|
||||||
|
rm a || die
|
||||||
|
test -f a && die
|
||||||
|
|
||||||
|
test_name "The node . cannot be unlinked"
|
||||||
|
mkdir a || die
|
||||||
|
unlink a/. 2>/dev/null && die
|
||||||
|
rmdir a
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
touch dir/a || die
|
||||||
|
echo 'rm dir/a' | kqueue_monitor 2 dir dir/a || die
|
||||||
|
test_name "Deleting a file raises NOTE_DELETE on it"
|
||||||
|
kqueue_check dir/a NOTE_DELETE || die
|
||||||
|
test_name "Deleting a file raises NOTE_WRITE on the parent directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
150
tools/regression/tmpfs/t_rename
Normal file
150
tools/regression/tmpfs/t_rename
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_rename,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the rename operation works (either by renaming entries or
|
||||||
|
# by moving them).
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "'.' and '..' entries cannot be renamed"
|
||||||
|
mkdir a || die
|
||||||
|
mv a/. c 2>/dev/null && die
|
||||||
|
mv a/.. c 2>/dev/null && die
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "Cross device renames do not work"
|
||||||
|
mkdir a || die
|
||||||
|
${Src_Dir}/h_tools rename a /var/tmp/a && die
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "Directories can be renamed"
|
||||||
|
mkdir a || die
|
||||||
|
mv a c || die
|
||||||
|
test -d a && die
|
||||||
|
test -d c || die
|
||||||
|
rmdir c || die
|
||||||
|
|
||||||
|
test_name "The '..' entry is updated after moves"
|
||||||
|
mkdir a || die
|
||||||
|
mkdir b || die
|
||||||
|
mv b a || die
|
||||||
|
test -d a/b/../b || die
|
||||||
|
test -d a/b/../../a || die
|
||||||
|
eval $(stat -s a/b)
|
||||||
|
[ ${st_nlink} = 2 ] || die
|
||||||
|
eval $(stat -s a)
|
||||||
|
[ ${st_nlink} = 3 ] || die
|
||||||
|
rmdir a/b || die
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "The '..' entry is correct after renames"
|
||||||
|
mkdir a || die
|
||||||
|
mkdir b || die
|
||||||
|
mv b a || die
|
||||||
|
mv a c || die
|
||||||
|
test -d c/b/../b || die
|
||||||
|
test -d c/b/../../c || die
|
||||||
|
rmdir c/b || die
|
||||||
|
rmdir c || die
|
||||||
|
|
||||||
|
test_name "The '..' entry is correct after multiple moves"
|
||||||
|
mkdir a || die
|
||||||
|
mkdir b || die
|
||||||
|
mv b a || die
|
||||||
|
mv a c || die
|
||||||
|
mv c/b d || die
|
||||||
|
test -d d/../c || die
|
||||||
|
rmdir d || die
|
||||||
|
rmdir c || die
|
||||||
|
|
||||||
|
test_name "Rename works if the target file exists"
|
||||||
|
touch a || die
|
||||||
|
touch b || die
|
||||||
|
mv a b || die
|
||||||
|
test -f a && die
|
||||||
|
test -f b || die
|
||||||
|
rm b
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
touch dir/a
|
||||||
|
echo 'mv dir/a dir/b' | kqueue_monitor 2 dir dir/a || die
|
||||||
|
test_name "Renaming a file raises NOTE_RENAME on the old file"
|
||||||
|
kqueue_check dir/a NOTE_RENAME || die
|
||||||
|
test_name "Renaming a file raises NOTE_WRITE on the parent directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
rm dir/b || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
touch dir/a
|
||||||
|
touch dir/b
|
||||||
|
echo 'mv dir/a dir/b' | kqueue_monitor 3 dir dir/a dir/b || die
|
||||||
|
test_name "Renaming a file raises NOTE_RENAME on the old file"
|
||||||
|
kqueue_check dir/a NOTE_RENAME || die
|
||||||
|
test_name "Renaming a file raises NOTE_WRITE on the parent directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
test_name "Renaming a file raises NOTE_DELETE on the target file"
|
||||||
|
kqueue_check dir/b NOTE_DELETE || die
|
||||||
|
rm dir/b || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
mkdir dir1 || die
|
||||||
|
mkdir dir2 || die
|
||||||
|
touch dir1/a
|
||||||
|
echo 'mv dir1/a dir2/a' | kqueue_monitor 3 dir1 dir1/a dir2 || die
|
||||||
|
test_name "Moving a file raises NOTE_RENAME on the old file"
|
||||||
|
kqueue_check dir1/a NOTE_RENAME || die
|
||||||
|
test_name "Moving a file raises NOTE_WRITE on the source directory"
|
||||||
|
kqueue_check dir1 NOTE_WRITE || die
|
||||||
|
test_name "Moving a file raises NOTE_WRITE on the target directory"
|
||||||
|
kqueue_check dir2 NOTE_WRITE || die
|
||||||
|
rm dir2/a || die
|
||||||
|
rmdir dir1 || die
|
||||||
|
rmdir dir2 || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
114
tools/regression/tmpfs/t_rmdir
Normal file
114
tools/regression/tmpfs/t_rmdir
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_rmdir,v 1.6 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that rmdir works by creating and removing directories. Also
|
||||||
|
# checks multiple error conditions.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "The mount point cannot be removed"
|
||||||
|
rmdir 2>/dev/null && die
|
||||||
|
|
||||||
|
test_name "Non-existing directories cannot be removed"
|
||||||
|
rmdir non-existent 2>/dev/null && die
|
||||||
|
|
||||||
|
test_name "Removal of a single directory works"
|
||||||
|
mkdir a || die
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_nlink} = 3 ] || die
|
||||||
|
rmdir a || die
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_nlink} = 2 ] || die
|
||||||
|
|
||||||
|
test_name "Removal of nested directories works"
|
||||||
|
mkdir -p a/b/c || die
|
||||||
|
rmdir a/b/c || die
|
||||||
|
rmdir a/b || die
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "'.' and '..' directories cannot be removed"
|
||||||
|
mkdir a || die
|
||||||
|
rmdir a/. 2>/dev/null && die
|
||||||
|
rmdir a/.. 2>/dev/null && die
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "Non-empty directories cannot be removed"
|
||||||
|
mkdir a || die
|
||||||
|
mkdir a/b || die
|
||||||
|
mkdir a/c || die
|
||||||
|
rmdir a 2>/dev/null && die
|
||||||
|
rmdir a/b || die
|
||||||
|
rmdir a/c || die
|
||||||
|
rmdir a || die
|
||||||
|
|
||||||
|
test_name "Root directory has two links after all removes"
|
||||||
|
eval $(stat -s ${Work_Dir})
|
||||||
|
[ ${st_nlink} = 2 ] || die
|
||||||
|
|
||||||
|
test_name "Removal of current directory"
|
||||||
|
mkdir a || die
|
||||||
|
# Catch a bug that would panic the system when accessing the
|
||||||
|
# current directory after being deleted: vop_open cannot assume
|
||||||
|
# that open files are still linked to a directory.
|
||||||
|
( cd a && rmdir ../a && ls >/dev/null 2>&1 ) && die
|
||||||
|
test -e a && die
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
mkdir dir/a || die
|
||||||
|
echo 'rmdir dir/a' | kqueue_monitor 3 dir dir/a || die
|
||||||
|
test_name "Deleting a directory raises NOTE_DELETE on it"
|
||||||
|
kqueue_check dir/a NOTE_DELETE || die
|
||||||
|
test_name "Deleting a directory raises NOTE_LINK on the parent" \
|
||||||
|
"directory"
|
||||||
|
kqueue_check dir NOTE_LINK || die
|
||||||
|
test_name "Deleting a directory raises NOTE_WRITE on the parent" \
|
||||||
|
"directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
115
tools/regression/tmpfs/t_setattr
Normal file
115
tools/regression/tmpfs/t_setattr
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_setattr,v 1.6 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the setattr vnode operation works, using several commands
|
||||||
|
# that require this function.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "File owner can be changed on its own"
|
||||||
|
mkdir own || die
|
||||||
|
eval $(stat -s own | sed -e 's|st_|ost_|g')
|
||||||
|
chown 1234 own || die
|
||||||
|
eval $(stat -s own)
|
||||||
|
[ ${st_uid} -eq 1234 ] || die
|
||||||
|
[ ${st_gid} -eq ${ost_gid} ] || die
|
||||||
|
|
||||||
|
mkdir ownq || die
|
||||||
|
echo 'chown 1234 ownq' | kqueue_monitor 1 ownq || die
|
||||||
|
test_name "Changing a file's owner raises NOTE_ATTRIB on it"
|
||||||
|
kqueue_check ownq NOTE_ATTRIB || die
|
||||||
|
|
||||||
|
test_name "File group can be changed on its own"
|
||||||
|
mkdir grp || die
|
||||||
|
eval $(stat -s grp | sed -e 's|st_|ost_|g')
|
||||||
|
chgrp 5678 grp || die
|
||||||
|
eval $(stat -s grp)
|
||||||
|
[ ${st_uid} -eq ${ost_uid} ] || die
|
||||||
|
[ ${st_gid} -eq 5678 ] || die
|
||||||
|
|
||||||
|
mkdir grpq || die
|
||||||
|
echo 'chgrp 1234 grpq' | kqueue_monitor 1 grpq || die
|
||||||
|
test_name "Changing a file's group raises NOTE_ATTRIB on it"
|
||||||
|
kqueue_check grpq NOTE_ATTRIB || die
|
||||||
|
|
||||||
|
test_name "File owner and group can be changed at once"
|
||||||
|
mkdir owngrp || die
|
||||||
|
chown 1234:5678 owngrp || die
|
||||||
|
eval $(stat -s owngrp)
|
||||||
|
[ ${st_uid} -eq 1234 ] || die
|
||||||
|
[ ${st_gid} -eq 5678 ] || die
|
||||||
|
|
||||||
|
mkdir owngrpp || die
|
||||||
|
echo 'chown 1234:5678 owngrpp' | kqueue_monitor 1 owngrpp || die
|
||||||
|
test_name "Changing a file's owner and group raises NOTE_ATTRIB on it"
|
||||||
|
kqueue_check owngrpp NOTE_ATTRIB || die
|
||||||
|
|
||||||
|
test_name "File mode can be changed"
|
||||||
|
mkdir mode || die
|
||||||
|
chmod 0000 mode || die
|
||||||
|
eval $(stat -s mode)
|
||||||
|
[ ${st_mode} -eq 40000 ] || die
|
||||||
|
|
||||||
|
mkdir modeq || die
|
||||||
|
echo 'chmod 0000 modeq' | kqueue_monitor 1 modeq || die
|
||||||
|
test_name "Updating a file's mode raises NOTE_ATTRIB on it"
|
||||||
|
kqueue_check modeq NOTE_ATTRIB || die
|
||||||
|
|
||||||
|
test_name "File times can be changed"
|
||||||
|
mkdir times || die
|
||||||
|
TZ=GMT touch -t 200501010101 times || die
|
||||||
|
eval $(stat -s times)
|
||||||
|
[ ${st_atime} = ${st_mtime} ] || die
|
||||||
|
[ ${st_atime} = 1104541260 ] || die
|
||||||
|
|
||||||
|
mkdir timesq || die
|
||||||
|
echo 'touch timesq' | kqueue_monitor 1 timesq || die
|
||||||
|
test_name "Updating a file's times raises NOTE_ATTRIB on it"
|
||||||
|
kqueue_check timesq NOTE_ATTRIB || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
99
tools/regression/tmpfs/t_sizes
Normal file
99
tools/regression/tmpfs/t_sizes
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_sizes,v 1.6 2007/03/11 10:09:17 pooka Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the file system controls memory usage correctly.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount -o size=10485760
|
||||||
|
|
||||||
|
pagesize=$(sysctl hw.pagesize | cut -d ' ' -f 2)
|
||||||
|
|
||||||
|
test_name "Get status of clean filesystem"
|
||||||
|
eval $(${Src_Dir}/h_tools statvfs . | sed -e 's|^f_|cf_|')
|
||||||
|
cf_bused=$((${cf_blocks} - ${cf_bfree}))
|
||||||
|
|
||||||
|
test_name "Creation of small file"
|
||||||
|
echo a >a || die
|
||||||
|
test_name "statvfs(2) reports correct block accounting"
|
||||||
|
eval $(${Src_Dir}/h_tools statvfs .)
|
||||||
|
f_bused=$((${f_blocks} - ${f_bfree}))
|
||||||
|
[ ${f_bused} -gt 1 ] || die
|
||||||
|
rm a || die
|
||||||
|
|
||||||
|
test_name "Creation of big file"
|
||||||
|
dd if=/dev/zero of=a bs=1m count=5 >/dev/null 2>&1 || die
|
||||||
|
test_name "statvfs(2) reports correct block accounting"
|
||||||
|
eval $(${Src_Dir}/h_tools statvfs .)
|
||||||
|
f_bused=$((${f_blocks} - ${f_bfree}))
|
||||||
|
[ ${f_bused} -ne ${cf_bused} ] || die
|
||||||
|
[ ${f_bused} -gt $((5 * 1024 * 1024 / ${pagesize})) ] || die
|
||||||
|
of_bused=${f_bused}
|
||||||
|
rm a || die
|
||||||
|
eval $(${Src_Dir}/h_tools statvfs .)
|
||||||
|
f_bused=$((${f_blocks} - ${f_bfree}))
|
||||||
|
[ ${f_bused} -lt ${of_bused} ] || die
|
||||||
|
|
||||||
|
test_name "Creation of big file that overflows the filesystem"
|
||||||
|
of_bused=${f_bused}
|
||||||
|
dd if=/dev/zero of=a bs=1m count=15 >/dev/null 2>&1 && die
|
||||||
|
rm a || die
|
||||||
|
test_name "statvfs(2) reports correct block accounting"
|
||||||
|
eval $(${Src_Dir}/h_tools statvfs .)
|
||||||
|
f_bused=$((${f_blocks} - ${f_bfree}))
|
||||||
|
[ ${f_bused} -ge ${of_bused} -a ${f_bused} -le $((${of_bused} + 1)) ] \
|
||||||
|
|| die
|
||||||
|
|
||||||
|
test_name "Write to middle of a file does not change size"
|
||||||
|
dd if=/dev/zero of=a bs=1024 count=10 >/dev/null 2>&1 || die
|
||||||
|
sync
|
||||||
|
dd if=/dev/zero of=a bs=1024 conv=notrunc seek=1 count=1 \
|
||||||
|
>/dev/null 2>&1 || die
|
||||||
|
sync
|
||||||
|
eval $(stat -s a)
|
||||||
|
[ ${st_size} -eq 10240 ] || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
63
tools/regression/tmpfs/t_sockets
Normal file
63
tools/regression/tmpfs/t_sockets
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_sockets,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that sockets can be created using socket/bind.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Sockets can be created"
|
||||||
|
${Src_Dir}/h_tools sockets a
|
||||||
|
rm a || die
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
echo "${Src_Dir}/h_tools sockets dir/a" | kqueue_monitor 1 dir || die
|
||||||
|
test_name "Creating a socket raises NOTE_WRITE on the parent" \
|
||||||
|
"directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
62
tools/regression/tmpfs/t_statvfs
Normal file
62
tools/regression/tmpfs/t_statvfs
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_statvfs,v 1.4 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the statvfs system call works properly (returning the
|
||||||
|
# correct values) over a tmpfs mount point.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount -o size=10485760
|
||||||
|
|
||||||
|
test_name "statvfs(2) returns correct values"
|
||||||
|
pagesize=$(sysctl hw.pagesize | cut -d ' ' -f 2)
|
||||||
|
eval $(${Src_Dir}/h_tools statvfs .)
|
||||||
|
[ ${pagesize} -eq ${f_bsize} ] || die
|
||||||
|
[ $((${f_bsize} * ${f_blocks})) -ge $((10 * 1024 * 1024)) ] || die
|
||||||
|
[ $((${f_bsize} * ${f_blocks})) -le \
|
||||||
|
$((10 * 1024 * 1024 + ${pagesize})) ] || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
88
tools/regression/tmpfs/t_symlink
Normal file
88
tools/regression/tmpfs/t_symlink
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_symlink,v 1.6 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the symlink and readlink operations work.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Creation of an empty file"
|
||||||
|
touch a || die
|
||||||
|
test_name "Creation of a symlink pointing to it"
|
||||||
|
ln -s a b || die
|
||||||
|
test_name "Symlink points to correct file"
|
||||||
|
[ $(md5 b | cut -d ' ' -f 4) = d41d8cd98f00b204e9800998ecf8427e ] || die
|
||||||
|
|
||||||
|
test_name "Changing original file"
|
||||||
|
echo foo >a || die
|
||||||
|
test_name "Symlink reflects the changes"
|
||||||
|
[ $(md5 b | cut -d ' ' -f 4) = d3b07384d113edec49eaa6238ad5ff00 ] || die
|
||||||
|
|
||||||
|
test_name "Creation of symlink to a known system file"
|
||||||
|
ln -s /bin/cp cp || die
|
||||||
|
test_name "Trying to see if it works"
|
||||||
|
./cp b c || die
|
||||||
|
[ -f c ] || die
|
||||||
|
|
||||||
|
test_name "Symlinking directories works"
|
||||||
|
mkdir d || die
|
||||||
|
[ -f d/foo ] && die
|
||||||
|
[ -f e/foo ] && die
|
||||||
|
ln -s d e || die
|
||||||
|
touch d/foo || die
|
||||||
|
[ -f d/foo ] || die
|
||||||
|
[ -f e/foo ] || die
|
||||||
|
|
||||||
|
mkdir dir || die
|
||||||
|
echo 'ln -s non-existent dir/a' | kqueue_monitor 1 dir || die
|
||||||
|
test_name "Creating a symlink raises NOTE_WRITE on the parent" \
|
||||||
|
"directory"
|
||||||
|
kqueue_check dir NOTE_WRITE || die
|
||||||
|
rm dir/a || die
|
||||||
|
rmdir dir || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
114
tools/regression/tmpfs/t_times
Normal file
114
tools/regression/tmpfs/t_times
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_times,v 1.6 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that node times are properly handled.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Creation of empty file"
|
||||||
|
touch a || die
|
||||||
|
eval $(stat -s a | sed -e 's|st_|ost_|g') || die
|
||||||
|
[ ${ost_birthtime} -eq ${ost_atime} ] || die
|
||||||
|
[ ${ost_birthtime} -eq ${ost_ctime} ] || die
|
||||||
|
[ ${ost_birthtime} -eq ${ost_mtime} ] || die
|
||||||
|
|
||||||
|
test_name "Read of empty file"
|
||||||
|
sleep 1
|
||||||
|
cat a >/dev/null || die
|
||||||
|
eval $(stat -s a) || die
|
||||||
|
[ ${st_atime} -gt ${ost_atime} ] || die
|
||||||
|
[ ${st_ctime} -eq ${ost_ctime} ] || die
|
||||||
|
[ ${st_mtime} -eq ${ost_mtime} ] || die
|
||||||
|
|
||||||
|
test_name "Write to (and extension of) empty file"
|
||||||
|
sleep 1
|
||||||
|
echo foo >a || die
|
||||||
|
eval $(stat -s a) || die
|
||||||
|
[ ${st_atime} -gt ${ost_atime} ] || die
|
||||||
|
[ ${st_ctime} -gt ${ost_ctime} ] || die
|
||||||
|
[ ${st_mtime} -gt ${ost_mtime} ] || die
|
||||||
|
|
||||||
|
test_name "Creation of non-empty file"
|
||||||
|
echo foo >b || die
|
||||||
|
eval $(stat -s b | sed -e 's|st_|ost_|g') || die
|
||||||
|
|
||||||
|
test_name "Read of non-empty file"
|
||||||
|
sleep 1
|
||||||
|
cat b >/dev/null || die
|
||||||
|
eval $(stat -s b) || die
|
||||||
|
[ ${st_atime} -gt ${ost_atime} ] || die
|
||||||
|
[ ${st_ctime} -eq ${ost_ctime} ] || die
|
||||||
|
[ ${st_mtime} -eq ${ost_mtime} ] || die
|
||||||
|
|
||||||
|
test_name "Creation of non-empty file"
|
||||||
|
echo foo >c || die
|
||||||
|
eval $(stat -s c | sed -e 's|st_|ost_|g') || die
|
||||||
|
|
||||||
|
test_name "New link to non-empty file"
|
||||||
|
sleep 1
|
||||||
|
ln c d || die
|
||||||
|
eval $(stat -s c) || die
|
||||||
|
[ ${st_atime} -eq ${ost_atime} ] || die
|
||||||
|
[ ${st_ctime} -gt ${ost_ctime} ] || die
|
||||||
|
[ ${st_mtime} -eq ${ost_mtime} ] || die
|
||||||
|
|
||||||
|
test_name "File renaming does not change times"
|
||||||
|
mkdir e || die
|
||||||
|
echo foo >e/a || die
|
||||||
|
eval $(stat -s e | sed -e 's|st_|dost_|g') || die
|
||||||
|
eval $(stat -s e/a | sed -e 's|st_|ost_|g') || die
|
||||||
|
sleep 1
|
||||||
|
mv e/a e/b || die
|
||||||
|
eval $(stat -s e | sed -e 's|st_|dst_|g') || die
|
||||||
|
eval $(stat -s e/b) || die
|
||||||
|
[ ${st_atime} -eq ${ost_atime} ] || die
|
||||||
|
[ ${st_ctime} -gt ${ost_ctime} ] || die
|
||||||
|
[ ${st_mtime} -eq ${ost_mtime} ] || die
|
||||||
|
[ ${dst_mtime} -gt ${dost_mtime} ] || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
61
tools/regression/tmpfs/t_trail_slash
Normal file
61
tools/regression/tmpfs/t_trail_slash
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_trail_slash,v 1.4 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that trailing slashes are not stored in directory names and that
|
||||||
|
# they do not cause crashes.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Trailing slashes are not taken into account"
|
||||||
|
mkdir a/ || die
|
||||||
|
touch a/b || die
|
||||||
|
[ -f a/b ] || die
|
||||||
|
rm a/b || die
|
||||||
|
rmdir a/ || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
64
tools/regression/tmpfs/t_truncate
Normal file
64
tools/regression/tmpfs/t_truncate
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_truncate,v 1.4 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that the truncate operations work.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Write to new file works"
|
||||||
|
jot 10000 >a || die
|
||||||
|
test_name "Truncate the file to smaller size works"
|
||||||
|
echo foo >a || die
|
||||||
|
[ $(md5 a | cut -d ' ' -f 4) = d3b07384d113edec49eaa6238ad5ff00 ] || die
|
||||||
|
|
||||||
|
test_name "Truncate to zero size"
|
||||||
|
>a || die
|
||||||
|
test_name "Truncate to zero size, second try"
|
||||||
|
>a || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
95
tools/regression/tmpfs/t_vnd
Normal file
95
tools/regression/tmpfs/t_vnd
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_vnd,v 1.1 2006/11/09 15:25:37 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that vnd works with files stored in tmpfs.
|
||||||
|
#
|
||||||
|
|
||||||
|
die_mounted() {
|
||||||
|
umount mnt
|
||||||
|
die_configured
|
||||||
|
}
|
||||||
|
|
||||||
|
die_configured() {
|
||||||
|
mdconfig -d -u 3
|
||||||
|
die
|
||||||
|
}
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
test_mount
|
||||||
|
|
||||||
|
test_name "Creation of disk image"
|
||||||
|
dd if=/dev/zero of=disk.img bs=1m count=10 >/dev/null 2>&1 || die
|
||||||
|
|
||||||
|
test_name "Configuration of vnd"
|
||||||
|
mdconfig -a -f disk.img -u 3 -x 32 -y 2 ||die
|
||||||
|
|
||||||
|
test_name "Labelling the md"
|
||||||
|
bsdlabel -m i386 -w /dev/md3 || die_configured
|
||||||
|
|
||||||
|
test_name "Formatting of disk image"
|
||||||
|
newfs -n -U -m 0 -O 1 /dev/md3a >/dev/null 2>&1 || die_configured
|
||||||
|
|
||||||
|
test_name "Mounting of disk image"
|
||||||
|
mkdir mnt || die
|
||||||
|
mount /dev/md3a mnt || die_configured
|
||||||
|
|
||||||
|
test_name "Creation of several files"
|
||||||
|
for f in $(jot 100); do
|
||||||
|
jot 1000 >mnt/$f || die_mounted
|
||||||
|
done
|
||||||
|
|
||||||
|
test_name "Verification of created files"
|
||||||
|
for f in $(jot 100); do
|
||||||
|
[ $(md5 mnt/$f | cut -d ' ' -f 4) = \
|
||||||
|
53d025127ae99ab79e8502aae2d9bea6 ] || die_mounted
|
||||||
|
done
|
||||||
|
|
||||||
|
test_name "Unmounting of disk image"
|
||||||
|
umount mnt || die_configured
|
||||||
|
|
||||||
|
test_name "Deconfiguration of vnd"
|
||||||
|
mdconfig -d -u 3 || die
|
||||||
|
|
||||||
|
test_unmount
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
63
tools/regression/tmpfs/t_vnode_leak
Normal file
63
tools/regression/tmpfs/t_vnode_leak
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: t_vnode_leak,v 1.5 2006/11/09 16:20:06 jmmv Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
|
||||||
|
# 2005 program.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. All advertising materials mentioning features or use of this software
|
||||||
|
# must display the following acknowledgement:
|
||||||
|
# This product includes software developed by the NetBSD
|
||||||
|
# Foundation, Inc. and its contributors.
|
||||||
|
# 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifies that vnodes are not leaked and that their reclaim operation works
|
||||||
|
# as expected: i.e., when all free vnodes are exhausted, unused ones have to
|
||||||
|
# be recycled, which is what the reclaim operation does.
|
||||||
|
#
|
||||||
|
|
||||||
|
test_run() {
|
||||||
|
oldvnodes=$(sysctl kern.maxvnodes | awk '{ print $2; }')
|
||||||
|
sysctl -w kern.maxvnodes=2000 >/dev/null || die
|
||||||
|
|
||||||
|
test_name "vnodes are properly reclaimed"
|
||||||
|
test_mount -o size=$(((4000 + 2) * 4096))
|
||||||
|
for f in $(jot 4000); do
|
||||||
|
mkdir ${f}
|
||||||
|
done
|
||||||
|
test_unmount
|
||||||
|
|
||||||
|
sysctl -w kern.maxvnodes=${oldvnodes} >/dev/null || die
|
||||||
|
}
|
||||||
|
|
||||||
|
. ${SUBRDIR}/h_funcs.subr
|
Loading…
x
Reference in New Issue
Block a user