Module Name:    src
Committed By:   pooka
Date:           Fri Jan  7 10:45:46 UTC 2011

Modified Files:
        src/tests/fs/common: fstest_puffs.c h_fsmacros.h

Log Message:
Add a puffs-p2k-ffs file system type to automated tests.  Inspired
by the file handle problem in p2k.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/tests/fs/common/fstest_puffs.c
cvs rdiff -u -r1.24 -r1.25 src/tests/fs/common/h_fsmacros.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/fs/common/fstest_puffs.c
diff -u src/tests/fs/common/fstest_puffs.c:1.7 src/tests/fs/common/fstest_puffs.c:1.8
--- src/tests/fs/common/fstest_puffs.c:1.7	Wed Dec 29 22:56:59 2010
+++ src/tests/fs/common/fstest_puffs.c	Fri Jan  7 10:45:45 2011
@@ -1,7 +1,7 @@
-/*	$NetBSD: fstest_puffs.c,v 1.7 2010/12/29 22:56:59 yamt Exp $	*/
+/*	$NetBSD: fstest_puffs.c,v 1.8 2011/01/07 10:45:45 pooka Exp $	*/
 
 /*
- * Copyright (c) 2010 The NetBSD Foundation, Inc.
+ * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -242,14 +242,11 @@
 struct puffstestargs *theargs; /* XXX */
 
 /* XXX: we don't support size */
-int
-puffs_fstest_newfs(const atf_tc_t *tc, void **argp,
-	const char *image, off_t size, void *fspriv)
+static int
+donewfs(const atf_tc_t *tc, void **argp,
+	const char *image, off_t size, void *fspriv, char **theargv)
 {
 	struct puffstestargs *args;
-	char dtfs_path[MAXPATHLEN];
-	char *dtfsargv[6];
-	char **theargv;
 	pid_t childpid;
 	int *pflags;
 	char comfd[16];
@@ -266,24 +263,6 @@
 
 	pflags = &args->pta_pflags;
 
-	/* build dtfs exec path from atf test dir */
-	sprintf(dtfs_path, "%s/../puffs/h_dtfs/h_dtfs",
-	    atf_tc_get_config_var(tc, "srcdir"));
-
-	if (fspriv) {
-		theargv = fspriv;
-		theargv[0] = dtfs_path;
-	} else {
-		dtfsargv[0] = dtfs_path;
-		dtfsargv[1] = __UNCONST("-i");
-		dtfsargv[2] = __UNCONST("-s");
-		dtfsargv[3] = __UNCONST("dtfs");
-		dtfsargv[4] = __UNCONST("fictional");
-		dtfsargv[5] = NULL;
-
-		theargv = dtfsargv;
-	}
-
 	/* Create sucketpair for communication with the real file server */
 	if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sv) == -1)
 		return errno;
@@ -343,6 +322,59 @@
 }
 
 int
+puffs_fstest_newfs(const atf_tc_t *tc, void **argp,
+	const char *image, off_t size, void *fspriv)
+{
+	char dtfs_path[MAXPATHLEN];
+	char *dtfsargv[6];
+	char **theargv;
+
+	/* build dtfs exec path from atf test dir */
+	sprintf(dtfs_path, "%s/../puffs/h_dtfs/h_dtfs",
+	    atf_tc_get_config_var(tc, "srcdir"));
+
+	if (fspriv) {
+		theargv = fspriv;
+		theargv[0] = dtfs_path;
+	} else {
+		dtfsargv[0] = dtfs_path;
+		dtfsargv[1] = __UNCONST("-i");
+		dtfsargv[2] = __UNCONST("-s");
+		dtfsargv[3] = __UNCONST("dtfs");
+		dtfsargv[4] = __UNCONST("fictional");
+		dtfsargv[5] = NULL;
+
+		theargv = dtfsargv;
+	}
+
+	return donewfs(tc, argp, image, size, fspriv, theargv);
+}
+
+int
+p2k_ffs_fstest_newfs(const atf_tc_t *tc, void **argp,
+	const char *image, off_t size, void *fspriv)
+{
+	char *rumpffs_argv[5];
+	int rv;
+
+	rump_init();
+	if ((rv = ffs_fstest_newfs(tc, argp, image, size, fspriv)) != 0)
+		return rv;
+	if (mkdir("p2kffsfake", 0777) == -1)
+		return errno;
+
+	setenv("P2K_NODETACH", "1", 1);
+	rumpffs_argv[0] = __UNCONST("rump_ffs");
+	rumpffs_argv[1] = __UNCONST(image);
+	rumpffs_argv[2] = __UNCONST("p2kffsfake"); /* NOTUSED */
+	rumpffs_argv[3] = NULL;
+
+	if ((rv = donewfs(tc, argp, image, size, fspriv, rumpffs_argv)) != 0)
+		ffs_fstest_delfs(tc, argp);
+	return rv;
+}
+
+int
 puffs_fstest_mount(const atf_tc_t *tc, void *arg, const char *path, int flags)
 {
 	struct puffstestargs *pargs = arg;
@@ -374,6 +406,7 @@
 
 	return 0;
 }
+__strong_alias(p2k_ffs_fstest_mount,puffs_fstest_mount);
 
 int
 puffs_fstest_delfs(const atf_tc_t *tc, void *arg)
@@ -384,6 +417,13 @@
 }
 
 int
+p2k_ffs_fstest_delfs(const atf_tc_t *tc, void *arg)
+{
+
+	return ffs_fstest_delfs(tc, arg);
+}
+
+int
 puffs_fstest_unmount(const atf_tc_t *tc, const char *path, int flags)
 {
 	struct puffstestargs *pargs = theargs;
@@ -410,5 +450,8 @@
 	usleep(500);
 	wait(&status);
 
+	rmdir("p2kffsfake");
+
 	return 0;
 }
+__strong_alias(p2k_ffs_fstest_unmount,puffs_fstest_unmount);

Index: src/tests/fs/common/h_fsmacros.h
diff -u src/tests/fs/common/h_fsmacros.h:1.24 src/tests/fs/common/h_fsmacros.h:1.25
--- src/tests/fs/common/h_fsmacros.h:1.24	Fri Dec 31 18:16:41 2010
+++ src/tests/fs/common/h_fsmacros.h	Fri Jan  7 10:45:45 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: h_fsmacros.h,v 1.24 2010/12/31 18:16:41 pooka Exp $	*/
+/*	$NetBSD: h_fsmacros.h,v 1.25 2011/01/07 10:45:45 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -55,6 +55,7 @@
 FSPROTOS(msdosfs);
 FSPROTOS(nfs);
 FSPROTOS(nfsro);
+FSPROTOS(p2k_ffs);
 FSPROTOS(puffs);
 FSPROTOS(rumpfs);
 FSPROTOS(sysvbfs);
@@ -171,6 +172,7 @@
   ATF_TC_FSADD(lfs,MOUNT_LFS,func,desc)					\
   ATF_TC_FSADD(msdosfs,MOUNT_MSDOS,func,desc)				\
   ATF_TC_FSADD(nfs,MOUNT_NFS,func,desc)					\
+  ATF_TC_FSADD(p2k_ffs,MOUNT_PUFFS,func,desc)				\
   ATF_TC_FSADD(puffs,MOUNT_PUFFS,func,desc)				\
   ATF_TC_FSADD(rumpfs,MOUNT_RUMPFS,func,desc)				\
   ATF_TC_FSADD(sysvbfs,MOUNT_SYSVBFS,func,desc)				\
@@ -182,6 +184,7 @@
   ATF_TP_FSADD(lfs,func);						\
   ATF_TP_FSADD(msdosfs,func);						\
   ATF_TP_FSADD(nfs,func);						\
+  ATF_TP_FSADD(p2k_ffs,func);						\
   ATF_TP_FSADD(puffs,func);						\
   ATF_TP_FSADD(rumpfs,func);						\
   ATF_TP_FSADD(sysvbfs,func);						\

Reply via email to