From 37b18d217aa98a02268c5fb175072ec80f0bcda1 Mon Sep 17 00:00:00 2001 From: Krzysztof Miesowicz Date: Sat, 1 Sep 2012 10:50:54 +0200 Subject: new fstest hitting fpathconf function --- testsuites/fstests/Makefile.am | 1 + testsuites/fstests/configure.ac | 1 + testsuites/fstests/fsfpathconf/fsfpathconf.doc | 21 ++++++ testsuites/fstests/fsfpathconf/fsfpathconf.scn | 22 ++++++ testsuites/fstests/fsfpathconf/test.c | 93 +++++++++++++++++++++++++ testsuites/fstests/mrfs_fsfpathconf/Makefile.am | 33 +++++++++ 6 files changed, 171 insertions(+) create mode 100644 testsuites/fstests/fsfpathconf/fsfpathconf.doc create mode 100644 testsuites/fstests/fsfpathconf/fsfpathconf.scn create mode 100644 testsuites/fstests/fsfpathconf/test.c create mode 100644 testsuites/fstests/mrfs_fsfpathconf/Makefile.am diff --git a/testsuites/fstests/Makefile.am b/testsuites/fstests/Makefile.am index f8b4520fdd..1b421152a1 100644 --- a/testsuites/fstests/Makefile.am +++ b/testsuites/fstests/Makefile.am @@ -28,6 +28,7 @@ SUBDIRS += mrfs_fspermission SUBDIRS += mrfs_fsrdwr SUBDIRS += mrfs_fssymlink SUBDIRS += mrfs_fstime +SUBDIRS += mrfs_fsfpathconf SUBDIRS += fsnofs01 SUBDIRS += fsimfsgeneric01 SUBDIRS += fsbdpart01 diff --git a/testsuites/fstests/configure.ac b/testsuites/fstests/configure.ac index c0599ca555..9b4c9f9903 100644 --- a/testsuites/fstests/configure.ac +++ b/testsuites/fstests/configure.ac @@ -104,6 +104,7 @@ mrfs_fspermission/Makefile mrfs_fsrdwr/Makefile mrfs_fssymlink/Makefile mrfs_fstime/Makefile +mrfs_fsfpathconf/Makefile fsnofs01/Makefile fsimfsgeneric01/Makefile fsbdpart01/Makefile diff --git a/testsuites/fstests/fsfpathconf/fsfpathconf.doc b/testsuites/fstests/fsfpathconf/fsfpathconf.doc new file mode 100644 index 0000000000..92af03b3a7 --- /dev/null +++ b/testsuites/fstests/fsfpathconf/fsfpathconf.doc @@ -0,0 +1,21 @@ +# COPYRIGHT (c) 2012-. +# Krzysztof Miesowicz krzysztof.miesowicz@gmail.com +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This file describes the directives and concepts tested by this test set. + +test set name: fsfpathconf + +directives: + + + fpathconf + + +concepts: + + + exercise all fpathconf branches - ask for every possible return values + diff --git a/testsuites/fstests/fsfpathconf/fsfpathconf.scn b/testsuites/fstests/fsfpathconf/fsfpathconf.scn new file mode 100644 index 0000000000..d4333a4190 --- /dev/null +++ b/testsuites/fstests/fsfpathconf/fsfpathconf.scn @@ -0,0 +1,22 @@ +*** FPATHCONF TEST *** + +fpathconf of non-existing file give -1 , expected -1 +... creating file "testfile.km" +*** file created succesfully + +request with _PC_LINK_MAX return : 5 +request with _PC_MAX_CANON return : 128 +request with _PC_MAX_INPUT return : 7 +request with _PC_NAME_MAX return : 255 +request with _PC_PATH_MAX return : 255 +request with _PC_PIPE_BUF return : 1024 +request with _PC_CHOWN_RESTRICTED return : 0 +request with _PC_NO_TRUNC return : 1 +request with _PC_VDISABLE return : 0 +request with _PC_ASYNC_IO return : 0 +request with _PC_PRIO_IO return : 0 +request with _PC_SYNC_IO return : 0 +request with bad argument return : -1 +*** END OF FPATHCONF TEST *** + + diff --git a/testsuites/fstests/fsfpathconf/test.c b/testsuites/fstests/fsfpathconf/test.c new file mode 100644 index 0000000000..a375d09a31 --- /dev/null +++ b/testsuites/fstests/fsfpathconf/test.c @@ -0,0 +1,93 @@ +/* + * COPYRIGHT (c) 2012 - . + * Krzysztof Miesowicz krzysztof.miesowicz@gmail.com + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "fstest.h" +#include "tmacros.h" + +static void fpathconf_test(void){ + + int rv = 0; + const char *fname = "testfile.km"; + int fd = -1; + +/* attempt to invoke fpathconf on non-existing file */ + rv = fpathconf(fd, _PC_LINK_MAX); + printf("\nfpathconf of non-existing file give %d , expected -1",rv); + + if (rv == -1) { + printf("\n... creating file \"%s\"\n",fname); + fd = open(fname,O_WRONLY | O_CREAT | O_TRUNC,S_IREAD|S_IWRITE); + + if (fd < 0) { + printf("*** file create failed, errno = %d(%s)\n",errno,strerror(errno)); + }else + printf("*** file created succesfully\n"); + +/* invoking fpathconf with request for every possible informations */ + rv = fpathconf(fd, _PC_LINK_MAX); + printf("\nrequest with _PC_LINK_MAX return : %d",rv); + rv = fpathconf(fd, _PC_MAX_CANON); + printf("\nrequest with _PC_MAX_CANON return : %d",rv); + rv = fpathconf(fd, _PC_MAX_INPUT); + printf("\nrequest with _PC_MAX_INPUT return : %d",rv); + rv = fpathconf(fd, _PC_NAME_MAX); + printf("\nrequest with _PC_NAME_MAX return : %d",rv); + rv = fpathconf(fd, _PC_PATH_MAX); + printf("\nrequest with _PC_PATH_MAX return : %d",rv); + rv = fpathconf(fd, _PC_PIPE_BUF); + printf("\nrequest with _PC_PIPE_BUF return : %d",rv); + rv = fpathconf(fd, _PC_CHOWN_RESTRICTED); + printf("\nrequest with _PC_CHOWN_RESTRICTED return : %d",rv); + rv = fpathconf(fd, _PC_NO_TRUNC); + printf("\nrequest with _PC_NO_TRUNC return : %d",rv); + rv = fpathconf(fd, _PC_VDISABLE); + printf("\nrequest with _PC_VDISABLE return : %d",rv); + rv = fpathconf(fd, _PC_ASYNC_IO); + printf("\nrequest with _PC_ASYNC_IO return : %d",rv); + rv = fpathconf(fd, _PC_PRIO_IO); + printf("\nrequest with _PC_PRIO_IO return : %d",rv); + rv = fpathconf(fd, _PC_SYNC_IO); + printf("\nrequest with _PC_SYNC_IO return : %d",rv); +/* invoking fpathconf with bad information requested - 255 */ + rv = fpathconf(fd, 255); + printf("\nrequest with bad argument return : %d",rv); + + close(fd); + fd = open("testfile.test", O_WRONLY); + + rv = fpathconf(fd, _PC_LINK_MAX); + } +} + +void test(void){ + + puts("\n\n*** FPATHCONF TEST ***" ); + fpathconf_test(); + puts( "\n*** END OF FPATHCONF TEST ***" ); + +} + +/* end of file */ diff --git a/testsuites/fstests/mrfs_fsfpathconf/Makefile.am b/testsuites/fstests/mrfs_fsfpathconf/Makefile.am new file mode 100644 index 0000000000..45e9537cdf --- /dev/null +++ b/testsuites/fstests/mrfs_fsfpathconf/Makefile.am @@ -0,0 +1,33 @@ + +rtems_tests_PROGRAMS = mrfs_fsfpathconf +mrfs_fsfpathconf_SOURCES = ../fsfpathconf/test.c +mrfs_fsfpathconf_SOURCES += ../support/ramdisk_support.c +mrfs_fsfpathconf_SOURCES += ../support/fstest_support.c +mrfs_fsfpathconf_SOURCES += ../support/fstest_support.h +mrfs_fsfpathconf_SOURCES += ../support/ramdisk_support.h +mrfs_fsfpathconf_SOURCES += ../support/fstest.h +mrfs_fsfpathconf_SOURCES += ../../psxtests/include/pmacros.h +mrfs_fsfpathconf_SOURCES += ../mrfs_support/fs_support.c +mrfs_fsfpathconf_SOURCES += ../mrfs_support/fs_config.h + +#dist_rtems_tests_DATA = mrfs_fsfpathconf.scn +#dist_rtems_tests_DATA += mrfs_fsfpathconf.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + + +AM_CPPFLAGS += -I$(top_srcdir)/support +AM_CPPFLAGS += -I$(top_srcdir)/mrfs_support +AM_CPPFLAGS += -I$(top_srcdir)/../support/include +AM_CPPFLAGS += -I$(top_srcdir)/../psxtests/include + +LINK_OBJS = $(mrfs_fsfpathconf_OBJECTS) +LINK_LIBS = $(mrfs_fsfpathconf_LDLIBS) + +mrfs_fsfpathconf$(EXEEXT): $(mrfs_fsfpathconf_OBJECTS) $(mrfs_fsfpathconf_DEPENDENCIES) + @rm -f mrfs_fsfpathconf$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am -- cgit v1.2.3