X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fdtest.c;h=24f5ad28a2b5001162a480df1afafd7c5b148f69;hp=fd4f9666dd4fb6adb44754da61dc9743dbd77568;hb=0c0fee7366b8a5a26ce11cf44675f22ab818cbc8;hpb=49942b13d7cfbdba72c18de0f37d16d81b4372a8 diff --git a/direct/dtest.c b/direct/dtest.c index fd4f966..24f5ad2 100644 --- a/direct/dtest.c +++ b/direct/dtest.c @@ -22,7 +22,6 @@ #include "yaffsfs.h" -#include "nor_stress.h" void dumpDir(const char *dname); @@ -423,7 +422,7 @@ void fill_disk_and_delete(const char *path, int nfiles, int ncycles) } -void fill_files(char *path,int flags, int maxIterations,int siz) +void fill_files(const char *path,int flags, int maxIterations,int siz) { int i; int j; @@ -435,7 +434,6 @@ void fill_files(char *path,int flags, int maxIterations,int siz) do{ sprintf(str,"%s/%d",path,i); h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE); - yaffs_close(h); if(h >= 0) { @@ -1399,6 +1397,96 @@ void fill_disk_test(const char *mountpt) } +void fill_files_test(const char *mountpt) +{ + int i; + yaffs_StartUp(); + + for(i = 0; i < 5; i++) + { + yaffs_mount(mountpt); + fill_files(mountpt,2,3,100); + yaffs_unmount(mountpt); + } + +} + +void fill_empty_files_test(const char *mountpt) +{ + int i; + yaffs_StartUp(); + char name[100]; + int result = 0; + + int d,f; + + for(i = 0; i < 5; i++) + { + yaffs_mount(mountpt); + for(d = 0; result >= 0 && d < 1000; d++){ + sprintf(name,"%s/%d",mountpt,d); + result= yaffs_mkdir(name,0); + printf("creating directory %s result %d\n",name,result); + + for(f = 0; result >= 0 && f < 100; f++){ + sprintf(name,"%s/%d/%d",mountpt,d,f); + result= yaffs_open(name,O_CREAT, 0); + yaffs_close(result); + printf("creating file %s result %d\n",name,result); + } + } + yaffs_unmount(mountpt); + } + +} + +void long_name_test(const char *mountpt) +{ + int i; + yaffs_StartUp(); + char fullName[1000]; + char name[300]; + int result = 0; + + int d,f; + + // Make a 256 byte name + memset(name,0,sizeof(name)); + for(i = 0; i < 256; i++) + name[i] = '0' + i % 10; + + sprintf(fullName,"%s/%s",mountpt,name); + + for(i = 0; i < 1; i++) + { + yaffs_mount(mountpt); + + printf("Files at start\n"); + dumpDir(mountpt); + + printf("Creating file %s\n",fullName); + + f = yaffs_open(fullName,O_CREAT | O_RDWR,0); + yaffs_close(f); + + printf("Result %d\n",f); + + printf("Files\n"); + dumpDir(mountpt); + + printf("Deleting %s\n",fullName); + result = yaffs_unlink(fullName); + printf("Result %d\n",result); + + printf("Files\n"); + + dumpDir(mountpt); + + yaffs_unmount(mountpt); + } + +} + void lookup_test(const char *mountpt) { @@ -1462,7 +1550,52 @@ void lookup_test(const char *mountpt) } -void link_test(const char *mountpt) +void link_test0(const char *mountpt) +{ + int i; + char namea[300]; + char nameb[300]; + int result = 0; + + + yaffs_StartUp(); + yaffs_mount(mountpt); + + + sprintf(namea,"%s/a",mountpt); + sprintf(nameb,"%s/b",mountpt); + + printf("mounted\n"); + dumpDir(mountpt); + + yaffs_unlink(namea); + printf("a unlinked\n"); + dumpDir(mountpt); + + yaffs_unlink(nameb); + printf("b unlinked\n"); + dumpDir(mountpt); + + result = yaffs_open(namea,O_CREAT| O_RDWR,0666); + yaffs_close(result); + printf("a created\n"); + dumpDir(mountpt); + + yaffs_link(namea,nameb); + printf("linked\n"); + dumpDir(mountpt); + yaffs_unlink(namea); + printf("a ulinked\n"); + dumpDir(mountpt); + yaffs_unlink(nameb); + printf("b unlinked\n"); + dumpDir(mountpt); + + yaffs_unmount(mountpt); +} + + +void link_test1(const char *mountpt) { int i; int h; @@ -1498,7 +1631,37 @@ void link_test(const char *mountpt) yaffs_mount(mountpt); printf("link test done\n"); +} + +void handle_test(const char *mountpt) +{ + int i; + int h; + int cycle; + char a[100]; + + sprintf(a,"%s/aaa",mountpt); + + yaffs_StartUp(); + + yaffs_mount(mountpt); + + for(cycle = 0; cycle < 5; cycle++){ + printf("Start cycle %d\n",cycle); + i = 0; + do { + h = yaffs_open(a, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); + printf("%d handle %d\n",i,h); + i++; + } while(h >= 0); + + while(i >= -1) { + yaffs_close(i); + i--; + } + } + yaffs_unmount(mountpt); } void freespace_test(const char *mountpt) @@ -2095,7 +2258,6 @@ void checkpoint_upgrade_test(const char *mountpt,int nmounts) printf("Create start condition\n"); yaffs_StartUp(); - SetCheckpointReservedBlocks(0); yaffs_mount(mountpt); yaffs_mkdir(a,0); sprintf(b,"%s/zz",a); @@ -2108,7 +2270,6 @@ void checkpoint_upgrade_test(const char *mountpt,int nmounts) printf("Umount/mount attempt full\n"); yaffs_unmount(mountpt); - SetCheckpointReservedBlocks(10); yaffs_mount(mountpt); printf("unlink small file\n"); @@ -2281,12 +2442,29 @@ void random_small_file_test(const char *mountpt,int iterations) yaffs_unmount(mountpt); } + +void rmdir_test(const char *mountpt) +{ + char name[100]; + yaffs_StartUp(); + + yaffs_mount(mountpt); + + strcpy(name,mountpt); + strcat(name,"/"); + strcat(name,"hello"); + yaffs_mkdir(name,0666); + yaffs_rmdir(name); + yaffs_unmount(mountpt); +} +int random_seed; +int simulate_power_failure; int main(int argc, char *argv[]) { - + random_seed = time(NULL); //return long_test(argc,argv); //return cache_read_test(); @@ -2299,8 +2477,12 @@ int main(int argc, char *argv[]) //yaffs_backward_scan_test("/flash/flash"); // yaffs_device_flush_test("/flash/flash"); - rename_over_test("//////////////////flash///////////////////yaffs1///////////"); + //rename_over_test("//////////////////flash///////////////////yaffs1///////////"); + fill_empty_files_test("/yaffs2/"); + //long_name_test("/yaffs2"); + //link_test0("/yaffs2"); + //link_test1("yaffs2"); //scan_pattern_test("/flash",10000,10); //short_scan_test("/flash/flash",40000,200); //small_mount_test("/flash/flash",1000); @@ -2314,7 +2496,7 @@ int main(int argc, char *argv[]) // huge_array_test("/flash/flash",10); - + handle_test("yaffs2/"); //long_test_on_path("/ram2k"); // long_test_on_path("/flash");