X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fdtest.c;h=a93e1d05071a135a036591468720730368b7442e;hp=638cf4a515d580f069a8c4608ed87b81c846e0de;hb=b0173df3b2c8cc1f68d877a5a64e0f0ca93c0bd6;hpb=77179ba56322261acd43fd0543b88dc455df7cda diff --git a/direct/dtest.c b/direct/dtest.c index 638cf4a..a93e1d0 100644 --- a/direct/dtest.c +++ b/direct/dtest.c @@ -1,7 +1,7 @@ /* * YAFFS: Yet another FFS. A NAND-flash specific file system. * - * Copyright (C) 2002 Aleph One Ltd. + * Copyright (C) 2002-2010 Aleph One Ltd. * for Toby Churchill Ltd and Brightstar Engineering * * Created by Charles Manning @@ -1036,6 +1036,36 @@ int resize_stress_test(const char *path) } + +int overwrite_test(const char *path) +{ + char aname[100]; + char bname[100]; + int i; + int j; + int a; + int b; + yaffs_StartUp(); + + yaffs_mount(path); + + sprintf(aname,"%s%s",path,"/a"); + sprintf(bname,"%s%s",path,"/b"); + + b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); + for(j= 0; j < 500; j++){ + yaffs_write(b,bname,100); + a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); + for(i = 0; i < rand() % 20000; i++) + yaffs_write(a,&a,sizeof(a)); + yaffs_close(a); + } + + return 0; + +} + + int root_perm_remount(const char *path) { struct yaffs_stat s; @@ -1631,7 +1661,37 @@ void link_test1(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) @@ -2228,7 +2288,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); @@ -2241,7 +2300,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"); @@ -2452,9 +2510,12 @@ int main(int argc, char *argv[]) //rename_over_test("//////////////////flash///////////////////yaffs1///////////"); //fill_empty_files_test("/yaffs2/"); + //resize_stress_test("/yaffs2"); + overwrite_test("/yaffs2"); + //long_name_test("/yaffs2"); - link_test0("/yaffs2"); - link_test1("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); @@ -2468,7 +2529,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");