X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fbasic-test%2Fdtest.c;h=3739acac2ae30b145a8a0f08133bd000ff1aeeff;hp=247aa480c69dee4303ae8b63618dc7fa8f06130f;hb=87166dff2586aa5d844c86945a80b098861b2b23;hpb=0ed6086affa15e1537da1b16d2ab3af654713a15 diff --git a/direct/basic-test/dtest.c b/direct/basic-test/dtest.c index 247aa48..3739aca 100644 --- a/direct/basic-test/dtest.c +++ b/direct/basic-test/dtest.c @@ -9,7 +9,6 @@ * 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. - * */ @@ -2756,6 +2755,111 @@ void link_follow_test(const char *mountpt) } +void max_files_test(const char *mountpt) +{ + char fn[100]; + char sn[100]; + char hn[100]; + int result; + int h; + int i; + + yaffs_trace_mask = 0; + + yaffs_start_up(); + + yaffs_mount(mountpt); + + for(i = 0; i < 5000; i++) { + sprintf(fn,"%s/file%d", mountpt, i); + yaffs_unlink(fn); + h = yaffs_open(fn,O_CREAT| O_RDWR, S_IREAD | S_IWRITE); + if(h < 0) + printf("File %s not created\n", fn); + yaffs_write(h,fn,100); + result = yaffs_close(h); + } + for(i = 0; i < 5; i++){ + sprintf(fn,"%s/file%d",mountpt, i); + yaffs_unlink(fn); + } + + for(i = 1000; i < 1010; i++){ + sprintf(fn,"%s/file%d",mountpt, i); + h = yaffs_open(fn,O_CREAT| O_RDWR, S_IREAD | S_IWRITE); + yaffs_write(h,fn,100); + if(h < 0) + printf("File %s not created\n", fn); + result = yaffs_close(h); + } + + h =yaffs_open(hn,O_RDWR,0); + +} +void case_insensitive_test(const char *mountpt) +{ + char fn[100]; + char fn2[100]; + char buffer[100]; + int ret; + struct yaffs_stat s; + int h; + char *x; + + yaffs_trace_mask = 0; + + yaffs_start_up(); + + yaffs_mount(mountpt); + dump_directory_tree(mountpt); + + sprintf(fn,"%s/Abc.Txt",mountpt); + yaffs_unlink(fn); + h = yaffs_open(fn, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); + + ret = yaffs_write(h,fn, strlen(fn) + 1); + + ret = yaffs_close(h); + + dump_directory_tree(mountpt); + + + strcpy(fn2, fn); + x = fn2; + while(*x) { + *x = toupper(*x); + x++; + } + + h = yaffs_open(fn2, O_RDONLY, 0); + ret = yaffs_read(h, buffer, 100); + + if (ret != strlen(fn) + 1 || memcmp(buffer, fn, ret)){ + printf("wrong file read\n"); + } else { + printf("File %s is the same as file %s\n", fn, fn2); + } + + ret = yaffs_stat(fn2, &s); + + printf("renaming\n"); + + ret = yaffs_rename(fn, fn2); + dump_directory_tree(mountpt); + +} + +void start_twice(const char *mountpt) +{ + printf("About to do first yaffs_start\n"); + yaffs_start_up(); + printf("started\n"); + printf("First mount returns %d\n", yaffs_mount(mountpt)); + printf("About to do second yaffs_start\n"); + yaffs_start_up(); + printf("started\n"); + printf("Second mount returns %d\n", yaffs_mount(mountpt)); +} #define N_WRITES 2000 #define STRIDE 2000 @@ -2826,7 +2930,7 @@ void verify_big_sparse_file(int h) check_type = "buffer"; set_buffer(i/STRIDE); } - printf("%s checking %lld\n", check_type, offset); + //printf("%s checking %lld\n", check_type, offset); pos = yaffs_lseek(h, offset, SEEK_SET); if(pos != offset) { printf("mismatched seek pos %lld offset %lld\n", @@ -2872,8 +2976,11 @@ void verify_big_sparse_file(int h) void large_file_test(const char *mountpt) { + char xx_buffer[1000]; + int i; int handle; char fullname[100]; + loff_t file_end; yaffs_trace_mask = 0; @@ -2917,6 +3024,21 @@ void large_file_test(const char *mountpt) verify_big_sparse_file(handle); yaffs_unmount(mountpt); + /* Check resize by adding to the end, resizing back and verifying. */ + yaffs_mount_common(mountpt, 0, 1); + printf("checking resize\n"); + dumpDir(mountpt); + handle = yaffs_open(fullname, O_RDWR, 0); + + file_end = yaffs_lseek(handle, 0, SEEK_END); + printf("file_end %lld\n", file_end); + for(i = 0; i < 10000; i++) + yaffs_write(handle, xx_buffer, sizeof(xx_buffer)); + yaffs_ftruncate(handle, file_end); + + verify_big_sparse_file(handle); + yaffs_unmount(mountpt); + } @@ -2956,7 +3078,7 @@ int main(int argc, char *argv[]) //checkpoint_upgrade_test("/flash/flash",20); //small_overwrite_test("/flash/flash",1000); //checkpoint_fill_test("/flash/flash",20); - // random_small_file_test("/flash/flash",10000); + //random_small_file_test("/flash/flash",10000); // huge_array_test("/flash/flash",10); @@ -2985,10 +3107,16 @@ int main(int argc, char *argv[]) //test_flash_traffic("yaffs2"); // link_follow_test("/yaffs2"); + //basic_utime_test("/yaffs2"); + + //max_files_test("/yaffs2"); + + //start_twice("/yaffs2"); large_file_test("/yaffs2"); //basic_utime_test("/yaffs2"); + //case_insensitive_test("/yaffs2"); return 0;