From 7336d4af629928eb8549d8d817fc76c1124188d9 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 1 Aug 2011 14:29:54 +0000 Subject: 2011-08-01 Xiang Cui * 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. --- testsuites/fstests/support/fstest.h | 23 +++++++ testsuites/fstests/support/fstest_support.c | 98 ++++++++++++++++++++++++++++ testsuites/fstests/support/fstest_support.h | 33 ++++++++++ testsuites/fstests/support/ramdisk_support.c | 46 +++++++++++++ testsuites/fstests/support/ramdisk_support.h | 26 ++++++++ 5 files changed, 226 insertions(+) create mode 100644 testsuites/fstests/support/fstest.h create mode 100644 testsuites/fstests/support/fstest_support.c create mode 100644 testsuites/fstests/support/fstest_support.h create mode 100644 testsuites/fstests/support/ramdisk_support.c create mode 100644 testsuites/fstests/support/ramdisk_support.h (limited to 'testsuites/fstests/support') 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 + +#include "fs_config.h" + +#define TIME_PRECISION (2) +#define time_equal(x,y) (abs((x)-(y)) +#include +#include +#include +#include +#include +#include + +#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 +#include +#include + +#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 -- cgit v1.2.3