From 559fc3d004f76e506ecb5e7efe56fdb5cceed943 Mon Sep 17 00:00:00 2001 From: Timothy Manning Date: Mon, 8 Nov 2010 12:41:12 +1300 Subject: [PATCH] yaffs More updates on quick tests Signed-off-by: Timothy Manning --- direct/timothy_tests/quick_tests/Makefile | 3 +- direct/timothy_tests/quick_tests/README.txt | 17 ++++-- .../timothy_tests/quick_tests/quick_tests.h | 8 ++- .../test_yaffs_mount_ENAMETOOLONG.c | 57 +++++++++++++++++++ .../test_yaffs_mount_ENAMETOOLONG.h | 24 ++++++++ .../quick_tests/test_yaffs_mount_ENODEV.c | 2 +- .../quick_tests/test_yaffs_mount_ENOTDIR.c | 42 -------------- .../quick_tests/test_yaffs_open.c | 1 - .../test_yaffs_unlink_ENAMETOOLONG.c | 2 +- .../quick_tests/test_yaffs_unmount.c | 26 +++++++++ ...s_mount_ENOTDIR.h => test_yaffs_unmount.h} | 11 ++-- 11 files changed, 134 insertions(+), 59 deletions(-) create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_mount_ENAMETOOLONG.c create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_mount_ENAMETOOLONG.h delete mode 100644 direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.c create mode 100644 direct/timothy_tests/quick_tests/test_yaffs_unmount.c rename direct/timothy_tests/quick_tests/{test_yaffs_mount_ENOTDIR.h => test_yaffs_unmount.h} (77%) diff --git a/direct/timothy_tests/quick_tests/Makefile b/direct/timothy_tests/quick_tests/Makefile index 8b2b008..0ff1c06 100644 --- a/direct/timothy_tests/quick_tests/Makefile +++ b/direct/timothy_tests/quick_tests/Makefile @@ -45,7 +45,8 @@ COMMONTESTOBJS = yaffscfg2k.o yaffs_ecc.o yaffs_fileem.o yaffs_fileem2k.o yaffsf # yaffs_checkptrwtest.o\ TESTFILES = quick_tests.o lib.o \ - test_yaffs_mount.o test_yaffs_mount_ENOTDIR.o test_yaffs_mount_ENODEV.o \ + test_yaffs_mount.o test_yaffs_mount_ENODEV.o test_yaffs_mount_ENAMETOOLONG.o \ + test_yaffs_unmount.o\ test_yaffs_open.o test_yaffs_open_ENOENT.o test_yaffs_open_ENOTDIR.o test_yaffs_open_EEXIST.o test_yaffs_open_EISDIR.o test_yaffs_open_ENAMETOOLONG.o \ test_yaffs_unlink.o test_yaffs_unlink_EISDIR.o test_yaffs_unlink_ENOENT.o test_yaffs_unlink_ENAMETOOLONG.o test_yaffs_unlink_ENOTDIR.o\ test_yaffs_ftruncate.o test_yaffs_truncate.o \ diff --git a/direct/timothy_tests/quick_tests/README.txt b/direct/timothy_tests/quick_tests/README.txt index fd8c377..7fc7d57 100644 --- a/direct/timothy_tests/quick_tests/README.txt +++ b/direct/timothy_tests/quick_tests/README.txt @@ -8,6 +8,7 @@ the yaffs_close function has been covered by tests tests made test_yaffs_mount test_yaffs_mount_ENODEV + test_yaffs_mount_ENAMETOOLONG test_yaffs_access test_yaffs_close_EBADF test_yaffs_ftruncate @@ -26,6 +27,7 @@ tests made test_yaffs_unlink_ENAMETOOLONG test_yaffs_unlink_ENOENT test_yaffs_unlink_ENOTDIR + test_yaffs_unmount test_yaffs_write @@ -34,9 +36,12 @@ tests to add test_yaffs_mount_EINVAL //Cannot be generated with yaffs. test_yaffs_mount_ELOOP //Cannot be generated with yaffs. test_yaffs_mount_EMFILE //Cannot be generated with yaffs. - test_yaffs_mount_ENAMETOOLONG + test_yaffs_mount_ENOENT test_yaffs_mount_ENOTDIR //Cannot be generated with yaffs. + test_yaffs_mount_EBUSY //called when trying to mount a new mount point with a mount point already mounted. + + test_yaffs_unmount ->all error test_yaffs_open_EACCES test_yaffs_open_ENOSPC @@ -113,20 +118,20 @@ How to add a test So add this line to the test_list[]: {test_yaffs_fish, test_yaffs_fish_clean, "test_yaffs_fish"}, Also include the test's .h file in the quick_test.h file: #include "test_yaffs_fish.h" - - The test file should now make and run. - - + The test file should now make and run(you may need to make clean first). PS: yaffs_fish() is a made up function for this README (in case you want to try and find this function in yaffs). -BUGS +BUGS AND WARNINGS + remove the printf which prints yaffs_mounting. bug with opening a file with a name of 1,000,000 char long with no errors. bug with unlinking a file with 1,000,000 get the error ENOENT but should be geting ENAMETOOLONG. + + WARNING- If yaffs is unmounted then most functions return ENODIR. FIXED-ENOSPC error in programs test_yaffs_open_ENOTDIR and test_yaffs_open_ENOENT. FIXED-ENOENT been returned by yaffs_read but the handle is good and the yaffs_open function does not return an error. diff --git a/direct/timothy_tests/quick_tests/quick_tests.h b/direct/timothy_tests/quick_tests/quick_tests.h index 9b9643f..8360e85 100644 --- a/direct/timothy_tests/quick_tests/quick_tests.h +++ b/direct/timothy_tests/quick_tests/quick_tests.h @@ -18,8 +18,10 @@ #include #include "test_yaffs_mount.h" -#include "test_yaffs_mount_ENOTDIR.h" #include "test_yaffs_mount_ENODEV.h" +#include "test_yaffs_mount_ENAMETOOLONG.h" + +#include "test_yaffs_unmount.h" #include "test_yaffs_open.h" #include "test_yaffs_open_EISDIR.h" @@ -61,8 +63,10 @@ typedef struct test { test_template test_list[]={ {test_yaffs_mount,test_yaffs_mount_clean,"test_yaffs_mount"}, -// {test_yaffs_mount_ENOTDIR,test_yaffs_mount_ENOTDIR_clean,"test_yaffs_mount_ENOTDIR"}, {test_yaffs_mount_ENODEV,test_yaffs_mount_ENODEV_clean,"test_yaffs_mount_ENODEV"}, + {test_yaffs_mount_ENAMETOOLONG,test_yaffs_mount_ENAMETOOLONG_clean,"test_yaffs_mount_ENAMETOOLONG"}, + + {test_yaffs_unmount,test_yaffs_unmount_clean,"test_yaffs_unmount"}, {test_yaffs_open,test_yaffs_open_clean,"test_yaffs_open"}, {test_yaffs_open_EISDIR,test_yaffs_open_EISDIR_clean,"test_yaffs_open_EISDIR"}, diff --git a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENAMETOOLONG.c b/direct/timothy_tests/quick_tests/test_yaffs_mount_ENAMETOOLONG.c new file mode 100644 index 0000000..a61d0b3 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_mount_ENAMETOOLONG.c @@ -0,0 +1,57 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_mount_ENAMETOOLONG.h" + + + + +int test_yaffs_mount_ENAMETOOLONG(void){ + int output=0; + int x; + int error_code=0; + int file_name_length=1000000; + char file_name[file_name_length]; + + strcat(file_name,YAFFS_MOUNT_POINT); + for (x=strlen(YAFFS_MOUNT_POINT); x + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +#ifndef __test_yaffs_mount_ENAMETOOLONG_h__ +#define __test_yaffs_mount_ENAMETOOLONG_h__ + +#include "lib.h" +#include "yaffsfs.h" + +int test_yaffs_mount_ENAMETOOLONG(void); +int test_yaffs_mount_ENAMETOOLONG_clean(void); +#endif diff --git a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENODEV.c b/direct/timothy_tests/quick_tests/test_yaffs_mount_ENODEV.c index 58e1baf..e0bc9f7 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENODEV.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_mount_ENODEV.c @@ -11,7 +11,7 @@ * published by the Free Software Foundation. */ -#include "test_yaffs_mount_ENOTDIR.h" +#include "test_yaffs_mount_ENODEV.h" static int handle=0; int test_yaffs_mount_ENODEV(void){ diff --git a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.c b/direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.c deleted file mode 100644 index 5afc3a7..0000000 --- a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * YAFFS: Yet another FFS. A NAND-flash specific file system. - * - * Copyright (C) 2002-2010 Aleph One Ltd. - * for Toby Churchill Ltd and Brightstar Engineering - * - * Created by Timothy Manning - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include "test_yaffs_mount_ENOTDIR.h" - -static int handle=0; -int test_yaffs_mount_ENOTDIR(void){ - int output=0; - int error_code=0; - /*printf("path %s\n",path); */ - handle=yaffs_mount("/nonexisting_mount_point/"); - if (handle==-1){ - error_code=yaffs_get_error(); - //printf("EISDIR def %d, Error code %d\n", ENOTDIR,error_code); - if (abs(error_code)==ENOTDIR){ - return 1; - } - else { - printf("different error than expected\n"); - return -1; - } - } - else if (output >=0){ - printf("non existant directory opened.(which is a bad thing)\n"); - return -1; - } - -} -int test_yaffs_mount_ENOTDIR_clean(void){ - return -1; -} - diff --git a/direct/timothy_tests/quick_tests/test_yaffs_open.c b/direct/timothy_tests/quick_tests/test_yaffs_open.c index 76ed67b..d7237a8 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_open.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_open.c @@ -23,7 +23,6 @@ int test_yaffs_open(void){ int test_yaffs_open_clean(void){ - handle=0; if (handle >=0){ return yaffs_close(handle); } diff --git a/direct/timothy_tests/quick_tests/test_yaffs_unlink_ENAMETOOLONG.c b/direct/timothy_tests/quick_tests/test_yaffs_unlink_ENAMETOOLONG.c index 1803c83..c5184a5 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_unlink_ENAMETOOLONG.c +++ b/direct/timothy_tests/quick_tests/test_yaffs_unlink_ENAMETOOLONG.c @@ -41,7 +41,7 @@ int test_yaffs_unlink_ENAMETOOLONG(void){ return -1; } } - else if (output >=0){ + else { printf("directory unlinked opened.(which is a bad thing)\n"); return -1; } diff --git a/direct/timothy_tests/quick_tests/test_yaffs_unmount.c b/direct/timothy_tests/quick_tests/test_yaffs_unmount.c new file mode 100644 index 0000000..b3ddba2 --- /dev/null +++ b/direct/timothy_tests/quick_tests/test_yaffs_unmount.c @@ -0,0 +1,26 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2010 Aleph One Ltd. + * for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "test_yaffs_unmount.h" + +int test_yaffs_unmount(void){ + int output=0; + output=yaffs_unmount(YAFFS_MOUNT_POINT); + /*printf("output %d",output);*/ + return output; +} + +int test_yaffs_unmount_clean(void){ + return test_yaffs_mount(); + +} diff --git a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.h b/direct/timothy_tests/quick_tests/test_yaffs_unmount.h similarity index 77% rename from direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.h rename to direct/timothy_tests/quick_tests/test_yaffs_unmount.h index 2d12fea..7b0562a 100644 --- a/direct/timothy_tests/quick_tests/test_yaffs_mount_ENOTDIR.h +++ b/direct/timothy_tests/quick_tests/test_yaffs_unmount.h @@ -13,12 +13,13 @@ * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. */ -#ifndef __test_yaffs_mount_ENOTDIR_h__ -#define __test_yaffs_mount_ENOTDIR_h__ +#ifndef __test_yaffs_unmount__ +#define __test_yaffs_unmount__ -#include "lib.h" #include "yaffsfs.h" +#include "lib.h" +#include "test_yaffs_mount.h" -int test_yaffs_mount_ENOTDIR(void); -int test_yaffs_mount_ENOTDIR_clean(void); +int test_yaffs_unmount(void); +int test_yaffs_unmount_clean(void); #endif -- 2.30.2