diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-08-01 14:29:54 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-08-01 14:29:54 +0000 |
commit | 7336d4af629928eb8549d8d817fc76c1124188d9 (patch) | |
tree | 7f0603745cc7e78a6b0f7238ab32b6294e681a4f /testsuites/fstests/support | |
parent | 2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff) | |
download | rtems-7336d4af629928eb8549d8d817fc76c1124188d9.tar.bz2 |
2011-08-01 Xiang Cui <medivhc@gmail.com>
* Makefile.am, configure.ac, imfs_support/fs_config.h,
imfs_support/fs_support.c, mimfs_support/fs_config.h,
mimfs_support/fs_support.c: Add initial version of new filesystem
tests. There are multiple failures which need to be addressed by the
community.
* fsfchx/fsfchx.doc, fsfchx/init.c, fsfile01/fsfile01.doc,
fsfile01/test.c, fsfile01/test_cat.c, fsfile01/test_extend.c,
fsfile01/test_write.c, fsfile02/fsfile02.doc, fsfile02/init.c,
fsfstest/fs-test.c, fsfstest/fsfstest.doc, fsimfs01/fsimfs01.doc,
fsimfs01/init.c, fsimfs02/fsimfs02.doc, fsimfs02/init.c,
fslink/fslink.doc, fslink/test.c, fsmkdir/fsmkdir.doc,
fsmkdir/test.c, fsopen/fsopen.doc, fsopen/test.c,
fsrdwrv/fsrdwrv.doc, fsrdwrv/test.c, fsreaddir/fsreaddir.doc,
fsreaddir/test.c, fsrename/fsrename.doc, fsrename/test.c,
fsrmdir/test.c, fsrwfile/fsrwfile.doc, fsrwfile/init.c,
fsstat/fsstat.doc, fsstat/test.c, fssymlink/fssymlink.doc,
fssymlink/test.c, fstruncate/fstruncate.doc, fstruncate/test.c,
imfs_fsfchx/.cvsignore, imfs_fsfchx/Makefile.am,
imfs_fsfile01/.cvsignore, imfs_fsfile01/Makefile.am,
imfs_fsfile02/.cvsignore, imfs_fsfile02/Makefile.am,
imfs_fsfstest/.cvsignore, imfs_fsfstest/Makefile.am,
imfs_fsimfs01/.cvsignore, imfs_fsimfs01/Makefile.am,
imfs_fsimfs02/.cvsignore, imfs_fsimfs02/Makefile.am,
imfs_fslink/.cvsignore, imfs_fslink/Makefile.am,
imfs_fsmkdir/.cvsignore, imfs_fsmkdir/Makefile.am,
imfs_fsopen/.cvsignore, imfs_fsopen/Makefile.am,
imfs_fsrdwrv/.cvsignore, imfs_fsrdwrv/Makefile.am,
imfs_fsreaddir/.cvsignore, imfs_fsreaddir/Makefile.am,
imfs_fsrename/.cvsignore, imfs_fsrename/Makefile.am,
imfs_fsrmdir/.cvsignore, imfs_fsrmdir/Makefile.am,
imfs_fsrwfile/.cvsignore, imfs_fsrwfile/Makefile.am,
imfs_fsstat/.cvsignore, imfs_fsstat/Makefile.am,
imfs_fssymlink/.cvsignore, imfs_fssymlink/Makefile.am,
imfs_fstruncate/.cvsignore, imfs_fstruncate/Makefile.am,
mdosfs_fsfchx/.cvsignore, mdosfs_fsfchx/Makefile.am,
mdosfs_fsfile01/.cvsignore, mdosfs_fsfile01/Makefile.am,
mdosfs_fsfile02/.cvsignore, mdosfs_fsfile02/Makefile.am,
mdosfs_fsfstest/.cvsignore, mdosfs_fsfstest/Makefile.am,
mdosfs_fsimfs01/.cvsignore, mdosfs_fsimfs01/Makefile.am,
mdosfs_fsimfs02/.cvsignore, mdosfs_fsimfs02/Makefile.am,
mdosfs_fslink/.cvsignore, mdosfs_fslink/Makefile.am,
mdosfs_fsmkdir/.cvsignore, mdosfs_fsmkdir/Makefile.am,
mdosfs_fsopen/.cvsignore, mdosfs_fsopen/Makefile.am,
mdosfs_fsrdwrv/.cvsignore, mdosfs_fsrdwrv/Makefile.am,
mdosfs_fsreaddir/.cvsignore, mdosfs_fsreaddir/Makefile.am,
mdosfs_fsrename/.cvsignore, mdosfs_fsrename/Makefile.am,
mdosfs_fsrmdir/.cvsignore, mdosfs_fsrmdir/Makefile.am,
mdosfs_fsrwfile/.cvsignore, mdosfs_fsrwfile/Makefile.am,
mdosfs_fsstat/.cvsignore, mdosfs_fsstat/Makefile.am,
mdosfs_fssymlink/.cvsignore, mdosfs_fssymlink/Makefile.am,
mdosfs_fstruncate/.cvsignore, mdosfs_fstruncate/Makefile.am,
mdosfs_support/fs_config.h, mdosfs_support/fs_support.c,
mimfs_fsfchx/.cvsignore, mimfs_fsfchx/Makefile.am,
mimfs_fsfile01/.cvsignore, mimfs_fsfile01/Makefile.am,
mimfs_fsfile02/.cvsignore, mimfs_fsfile02/Makefile.am,
mimfs_fsfstest/.cvsignore, mimfs_fsfstest/Makefile.am,
mimfs_fsimfs01/.cvsignore, mimfs_fsimfs01/Makefile.am,
mimfs_fsimfs02/.cvsignore, mimfs_fsimfs02/Makefile.am,
mimfs_fslink/.cvsignore, mimfs_fslink/Makefile.am,
mimfs_fsmkdir/.cvsignore, mimfs_fsmkdir/Makefile.am,
mimfs_fsopen/.cvsignore, mimfs_fsopen/Makefile.am,
mimfs_fsrdwrv/.cvsignore, mimfs_fsrdwrv/Makefile.am,
mimfs_fsreaddir/.cvsignore, mimfs_fsreaddir/Makefile.am,
mimfs_fsrename/.cvsignore, mimfs_fsrename/Makefile.am,
mimfs_fsrmdir/.cvsignore, mimfs_fsrmdir/Makefile.am,
mimfs_fsrwfile/.cvsignore, mimfs_fsrwfile/Makefile.am,
mimfs_fsstat/.cvsignore, mimfs_fsstat/Makefile.am,
mimfs_fssymlink/.cvsignore, mimfs_fssymlink/Makefile.am,
mimfs_fstruncate/.cvsignore, mimfs_fstruncate/Makefile.am,
mrfs_fsfchx/.cvsignore, mrfs_fsfchx/Makefile.am,
mrfs_fsfile01/.cvsignore, mrfs_fsfile01/Makefile.am,
mrfs_fsfile02/.cvsignore, mrfs_fsfile02/Makefile.am,
mrfs_fsfstest/.cvsignore, mrfs_fsfstest/Makefile.am,
mrfs_fsimfs01/.cvsignore, mrfs_fsimfs01/Makefile.am,
mrfs_fsimfs02/.cvsignore, mrfs_fsimfs02/Makefile.am,
mrfs_fslink/.cvsignore, mrfs_fslink/Makefile.am,
mrfs_fsmkdir/.cvsignore, mrfs_fsmkdir/Makefile.am,
mrfs_fsopen/.cvsignore, mrfs_fsopen/Makefile.am,
mrfs_fsrdwrv/.cvsignore, mrfs_fsrdwrv/Makefile.am,
mrfs_fsreaddir/.cvsignore, mrfs_fsreaddir/Makefile.am,
mrfs_fsrename/.cvsignore, mrfs_fsrename/Makefile.am,
mrfs_fsrmdir/.cvsignore, mrfs_fsrmdir/Makefile.am,
mrfs_fsrwfile/.cvsignore, mrfs_fsrwfile/Makefile.am,
mrfs_fsstat/.cvsignore, mrfs_fsstat/Makefile.am,
mrfs_fssymlink/.cvsignore, mrfs_fssymlink/Makefile.am,
mrfs_fstruncate/.cvsignore, mrfs_fstruncate/Makefile.am,
mrfs_support/fs_config.h, mrfs_support/fs_support.c,
support/fstest.h, support/fstest_support.c, support/fstest_support.h,
support/ramdisk_support.c, support/ramdisk_support.h: New files.
Diffstat (limited to 'testsuites/fstests/support')
-rw-r--r-- | testsuites/fstests/support/fstest.h | 23 | ||||
-rw-r--r-- | testsuites/fstests/support/fstest_support.c | 98 | ||||
-rw-r--r-- | testsuites/fstests/support/fstest_support.h | 33 | ||||
-rw-r--r-- | testsuites/fstests/support/ramdisk_support.c | 46 | ||||
-rw-r--r-- | testsuites/fstests/support/ramdisk_support.h | 26 |
5 files changed, 226 insertions, 0 deletions
diff --git a/testsuites/fstests/support/fstest.h b/testsuites/fstests/support/fstest.h new file mode 100644 index 0000000000..bc5b591873 --- /dev/null +++ b/testsuites/fstests/support/fstest.h @@ -0,0 +1,23 @@ +/* + * + * $Id$ + */ + +#ifndef __FSTEST_H +#define __FSTEST_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <pmacros.h> + +#include "fs_config.h" + +#define TIME_PRECISION (2) +#define time_equal(x,y) (abs((x)-(y))<TIME_PRECISION) +#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) +#endif + + + diff --git a/testsuites/fstests/support/fstest_support.c b/testsuites/fstests/support/fstest_support.c new file mode 100644 index 0000000000..c1dac4399e --- /dev/null +++ b/testsuites/fstests/support/fstest_support.c @@ -0,0 +1,98 @@ +#include <stdio.h> +#include <errno.h> +#include <fcntl.h> +#include <string.h> +#include <unistd.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include "rtems.h" + +#include "fstest_support.h" +#include "fs_config.h" + +#define TEMP_DIR "waterbuffalo" + + +/* Break out of a chroot() environment in C */ +void break_out_of_chroot(void) +{ + + int x; /* Used to move up a directory tree */ + int done=0; /* Are we done yet ? */ + int dir_fd; /* File descriptor to directory */ + struct stat sbuf; /* The stat() buffer */ + chdir("/"); + + if (stat(TEMP_DIR,&sbuf)<0) { + if (errno==ENOENT) { + if (mkdir(TEMP_DIR,0755)<0) { + fprintf(stderr,"Failed to create %s - %s\n", TEMP_DIR, + strerror(errno)); + exit(1); + } + } else { + fprintf(stderr,"Failed to stat %s - %s\n", TEMP_DIR, + strerror(errno)); + exit(1); + } + } else if (!S_ISDIR(sbuf.st_mode)) { + fprintf(stderr,"Error - %s is not a directory!\n",TEMP_DIR); + exit(1); + } + + if ((dir_fd=open(".",O_RDONLY))<0) { + fprintf(stderr,"Failed to open \".\" for reading - %s\n", strerror(errno)); + exit(1); + } + + if (chroot(TEMP_DIR)<0) { + fprintf(stderr,"Failed to chroot to %s - %s\n",TEMP_DIR, + strerror(errno)); + exit(1); + } + + if (fchdir(dir_fd)<0) { + fprintf(stderr,"Failed to fchdir - %s\n", + strerror(errno)); + exit(1); + } + close(dir_fd); + chdir(".."); + chroot("."); + +} + + +/* + * Main entry point of every filesystem test + */ + +rtems_task Init( + rtems_task_argument ignored) +{ + int rc=0; + puts( "\n\n*** FILE SYSTEM TEST ( " FILESYSTEM " ) ***" ); + + puts( "Initializing filesystem " FILESYSTEM ); + test_initialize_filesystem(); + rc=chdir(BASE_FOR_TEST); + rtems_test_assert(rc==0); + + rc=chroot(BASE_FOR_TEST); + rtems_test_assert(rc==0); + + test(); + + break_out_of_chroot(); + chdir("/"); + + + puts( "\n\nShutting down filesystem " FILESYSTEM ); + test_shutdown_filesystem(); + + puts( "*** END OF FILE SYSTEM TEST ( " FILESYSTEM " ) ***" ); + rtems_test_exit(0); + +} + diff --git a/testsuites/fstests/support/fstest_support.h b/testsuites/fstests/support/fstest_support.h new file mode 100644 index 0000000000..16972710a1 --- /dev/null +++ b/testsuites/fstests/support/fstest_support.h @@ -0,0 +1,33 @@ + +/* + * + * $Id$ + */ +#ifndef __FSTEST_SUPPORT_H +#define __FSTEST_SUPPORT_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "pmacros.h" + +#include "rtems.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern rtems_task Init( + rtems_task_argument ignored +); + +extern void test(void); + +extern void test_initialize_filesystem(void); + +extern void test_shutdown_filesystem(void); +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/testsuites/fstests/support/ramdisk_support.c b/testsuites/fstests/support/ramdisk_support.c new file mode 100644 index 0000000000..2945b3456e --- /dev/null +++ b/testsuites/fstests/support/ramdisk_support.c @@ -0,0 +1,46 @@ + +/* + * + * $Id$ + */ +#include <rtems/ramdisk.h> +#include <rtems/blkdev.h> +#include <rtems/libio.h> + +#include "ramdisk_support.h" +/* + * Ramdisk information + */ + +dev_t dev = 0; + +void init_ramdisk(void) +{ + + int rc=0; + rc =rtems_disk_io_initialize(); + rtems_test_assert( rc == 0 ); + rc =ramdisk_register(RAMDISK_BLOCK_SIZE,RAMDISK_BLOCK_COUNT,\ + false,RAMDISK_PATH,&dev); + rtems_test_assert( rc == 0 ); + +} +void del_ramdisk(void ) +{ + int rc=0; + rtems_device_major_number major=0; + rtems_device_minor_number minor=0; + + rc=rtems_disk_delete (dev); + rtems_test_assert( rc == 0 ); + + rtems_filesystem_split_dev_t(dev,major,minor); + + rc=rtems_io_unregister_driver(major); + rtems_test_assert( rc == 0 ); + + rc=rtems_disk_io_done(); + rtems_test_assert( rc == 0 ); +} + + diff --git a/testsuites/fstests/support/ramdisk_support.h b/testsuites/fstests/support/ramdisk_support.h new file mode 100644 index 0000000000..f3e0836cce --- /dev/null +++ b/testsuites/fstests/support/ramdisk_support.h @@ -0,0 +1,26 @@ +/* + * + * $Id$ + */ +#ifndef __RAMDISK_SUPPORT_H +#define __RAMDISK_SUPPORT_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "fstest_support.h" + +#define RAMDISK_BLOCK_SIZE (512) +#define RAMDISK_BLOCK_COUNT (1024) +#define RAMDISK_PATH "/dev/ramdisk" +#ifdef __cplusplus +extern "C" { +#endif +extern void init_ramdisk(void); +extern void del_ramdisk(void ); +#ifdef __cplusplus +}; +#endif + +#endif |