X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=direct%2Fdtest.c;h=f22babd454fe0931ad4f550040454b48f6ce88b0;hb=a20eabd566c09b175df2b2d49ac328b8be114204;hp=6f6da7451081f62fba0595077e91bc11862f5e22;hpb=e8cfe05cf0d057f6978c37943e51b17bb14664e3;p=yaffs2.git diff --git a/direct/dtest.c b/direct/dtest.c index 6f6da74..f22babd 100644 --- a/direct/dtest.c +++ b/direct/dtest.c @@ -22,6 +22,7 @@ #include "yaffsfs.h" + void dumpDir(const char *dname); char xx[600]; @@ -433,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) { @@ -513,7 +513,7 @@ void dumpDirFollow(const char *dname) yaffs_stat(str,&s); - printf("%s length %d mode %X ",de->d_name,(int)s.st_size,s.st_mode); + printf("%s ino %d length %d mode %X ",de->d_name,(int)s.st_ino,(int)s.st_size,s.st_mode); switch(s.st_mode & S_IFMT) { case S_IFREG: printf("data file"); break; @@ -941,16 +941,27 @@ void rename_over_test(const char *mountpt) int i; char a[100]; char b[100]; + char c[100]; sprintf(a,"%s/a",mountpt); sprintf(b,"%s/b",mountpt); + sprintf(c,"%s/c",mountpt); yaffs_StartUp(); yaffs_mount(mountpt); - i = yaffs_open(a,O_CREAT | O_TRUNC | O_RDWR, 0); + + printf("Existing files\n"); + dumpDirFollow(mountpt); + + + + i = yaffs_open(c,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); + printf("File c handle is %d\n",i); + yaffs_close(i); + i = yaffs_open(a,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); yaffs_close(i); - i = yaffs_open(b,O_CREAT | O_TRUNC | O_RDWR, 0); + i = yaffs_open(b,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); yaffs_close(i); yaffs_rename(a,b); // rename over yaffs_rename(b,a); // rename back again (not renaimng over) @@ -961,6 +972,7 @@ void rename_over_test(const char *mountpt) } + int resize_stress_test(const char *path) { int a,b,i,j; @@ -1024,6 +1036,28 @@ int resize_stress_test(const char *path) } +int root_perm_remount(const char *path) +{ + struct yaffs_stat s; + + yaffs_StartUp(); + + yaffs_mount(path); + + yaffs_stat(path,&s); + printf("root perms after mount %x\n",s.st_mode); + + yaffs_chmod(path, 0777); + + yaffs_stat(path,&s); + printf("root perms after setting to 0777 is %x\n",s.st_mode); + + yaffs_unmount(path); + + return 0; + +} + int resize_stress_test_no_grow_complex(const char *path,int iters) { @@ -1363,6 +1397,97 @@ 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) { @@ -2245,23 +2370,46 @@ 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(); - resize_stress_test_no_grow("/flash/flash",20); + // resize_stress_test_no_grow("/flash/flash",20); + //root_perm_remount("/flash/flash"); //huge_directory_test_on_path("/ram2k"); //yaffs_backward_scan_test("/flash/flash"); // yaffs_device_flush_test("/flash/flash"); - + //rename_over_test("//////////////////flash///////////////////yaffs1///////////"); + + //fill_empty_files_test("/yaffs2/"); + long_name_test("/yaffs2"); + //scan_pattern_test("/flash",10000,10); //short_scan_test("/flash/flash",40000,200); //small_mount_test("/flash/flash",1000);