X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftimothy_tests%2Fmirror_tests%2Fmirror_tests.c;h=641ceeb210e7959eda5632e5a27df9b8da73c2bf;hp=319eb9359dc6e253615ee96bf40d62646e5ee1ad;hb=03d4cddfabaa24b55be2f805643e7323f9fc2612;hpb=137f935f6d622bffdef2fece0c5194e85f5174e9 diff --git a/direct/timothy_tests/mirror_tests/mirror_tests.c b/direct/timothy_tests/mirror_tests/mirror_tests.c index 319eb93..641ceeb 100644 --- a/direct/timothy_tests/mirror_tests/mirror_tests.c +++ b/direct/timothy_tests/mirror_tests/mirror_tests.c @@ -16,7 +16,7 @@ int random_seed; int simulate_power_failure = 0; - +int num_of_random_tests=1; @@ -31,14 +31,18 @@ typedef struct test_temp2 { }test_temp; test_temp yaffs_tests={ - 0, - {{"yaffs_test_open",yaffs_test_open} + 3, + {{"yaffs_test_open",yaffs_test_open}, + {"yaffs_test_truncate",yaffs_test_truncate}, + {"yaffs_test_unlink",yaffs_test_unlink} } }; test_temp linux_tests={ - 0, - {{"linux_test_open",linux_test_open} + 3, + {{"linux_test_open",linux_test_open}, + {"linux_test_truncate",linux_test_truncate}, + {"linux_test_unlink",linux_test_unlink} } }; @@ -46,9 +50,9 @@ test_temp linux_tests={ int main(int argc, char *argv[]) { char message[100]; - - yaffs_tests.num_of_tests=(sizeof(yaffs_tests)/sizeof(test_temp)); - linux_tests.num_of_tests=(sizeof(linux_tests)/sizeof(test_temp)); + int x; +// yaffs_tests.num_of_tests=(sizeof(yaffs_tests)/sizeof(test_temp)); +// linux_tests.num_of_tests=(sizeof(linux_tests)/sizeof(test_temp)); init(argc,argv); print_message(1,"running mirror_tests\n"); @@ -61,7 +65,9 @@ int main(int argc, char *argv[]) sprintf(message,"yaffs_num_of_tests: %d\n",yaffs_tests.num_of_tests); print_message(3,message); - run_random_test(); + run_random_test(num_of_random_tests); + compare_linux_and_yaffs(); + yaffs_unmount("yaffs2"); return 0; } @@ -71,6 +77,9 @@ void init(int argc, char *argv[]) dir[0]='\0'; int x=-1; char message[100]; + + srand((unsigned)time(NULL)); + yaffs_set_trace(0); linux_struct.type_of_test =LINUX; yaffs_struct.type_of_test =YAFFS; @@ -78,7 +87,7 @@ void init(int argc, char *argv[]) print_message(3,message); strcpy(dir,getcwd(dir,200)); - strcat(dir,"/test"); + strcat(dir,"/test/"); printf("dir: %s\n",dir); strcpy(linux_struct.root_path,dir); strcpy(yaffs_struct.root_path,"yaffs2/test/"); @@ -93,6 +102,10 @@ void init(int argc, char *argv[]) printf("\t-p [NUMBER] //sets the print level for mirror_tests.\n"); printf("\t-v //verbose mode everything is printed\n"); printf("\t-q //quiet mode nothing is printed.\n"); + printf("\t-n [number] //sets the number of random tests to run.\n"); + printf("\t-s [number] //seeds rand with the number\n"); + printf("\t-t [number] //sets yaffs_trace to the number\n"); + printf("\t-clean //removes emfile and test dir\n"); exit(0); } else if (strcmp(argv[x],"-yaffs_path")==0){ strcpy(yaffs_struct.root_path, argv[x+1]); @@ -104,11 +117,20 @@ void init(int argc, char *argv[]) set_print_level(5); } else if (strcmp(argv[x],"-q")==0){ set_print_level(-1); - } + } else if (strcmp(argv[x],"-n")==0){ + num_of_random_tests=atoi(argv[x+1]); + } else if (strcmp(argv[x],"-s")==0){ + srand(atoi(argv[x+1])); + } else if (strcmp(argv[x],"-t")==0){ + yaffs_set_trace(atoi(argv[x+1])); + } else if (strcmp(argv[x],"-clean")==0){ + clean_dir(); + exit(0); + } } - + clean_dir(); yaffs_start_up(); - print_message(message,"\nmounting yaffs\n"); + print_message(2,"\nmounting yaffs\n"); x=yaffs_mount("yaffs2"); if (x<0) { print_message(3,"failed to mount yaffs\n"); @@ -137,35 +159,101 @@ void init(int argc, char *argv[]) } } -int run_random_test(void) +int run_random_test(int num_of_random_tests) { + int y=0; int x=-1; int id=0; int test_id=-1; - int num_of_tests=1; - char message[15]; + int num_of_tests_before_check=10; + char message[100]; arg_temp args_struct; - for (x=0;xd_name); + } + } + yaffs_closedir(yaffs_open_dir); + } + + linux_open_dir = opendir(linux_struct.root_path); + if (linux_open_dir){ + for (x=0;NULL!=readdir(linux_open_dir);x++){} + printf("number of files in linux dir= %d\n",(x-2)); + //the -2 is because linux shows 2 extra files which are automaticly created. + + char linux_file_list[x][100]; + + for (x=0 ;NULL!=linux_current_file;x++) + { + linux_current_file =readdir(linux_open_dir); + if (NULL!=linux_current_file){ + strcpy(linux_file_list[x],linux_current_file->d_name); + } + } + closedir(linux_open_dir); + } + + + + + + //printf("file_name %s\n", yaffs_current_file->d_name); // generate_array_of_objects_in_yaffs(); // generate_array_of_objects_in_linux(); //first do a check to see if both sides have the same objects on both sides. @@ -178,26 +266,29 @@ int compare_linux_and_yaffs(void) void generate_random_numbers(arg_temp *args_struct) { + char string[51]; args_struct->char1= (rand() % 255); args_struct->char2= (rand() % 255); args_struct->int1= (rand() % 100000); args_struct->int2= (rand() % 100000); - strcpy(args_struct->string1, "apple"); - strcpy(args_struct->string2, "apple"); + generate_random_string(string,50); + strcpy(args_struct->string1, string); + generate_random_string(string,50); + strcpy(args_struct->string2, string); } void run_yaffs_test(int id,arg_temp *args_struct) { - char message[30]; + char message[200]; int output =0; - print_message(2,"\n"); + print_message(3,"\n"); + //printf("id = %d\n",id); sprintf(message,"running_test %s\n",yaffs_tests.test_list[id].test_name); print_message(3,message); output=yaffs_tests.test_list[id].test_pointer(args_struct); if (output<0) { sprintf(message,"test_failed %s\n",yaffs_tests.test_list[id].test_name); - print_message(1,message); - get_error_yaffs(); + print_message(3,message); } else { print_message(3,"test_passed\n"); } @@ -205,16 +296,16 @@ void run_yaffs_test(int id,arg_temp *args_struct) void run_linux_test(int id,arg_temp *args_struct) { - char message[30]; + char message[200]; int output =0; - print_message(2,"\n"); + print_message(3,"\n"); + //printf("id = %d\n",id); sprintf(message,"running_test %s\n",linux_tests.test_list[id].test_name); print_message(3,message); output=linux_tests.test_list[id].test_pointer(args_struct); if (output<0) { sprintf(message,"test_failed %s\n",linux_tests.test_list[id].test_name); - print_message(1,message); - get_error_linux(); + print_message(3,message); } else { print_message(3,"test_passed\n"); } @@ -248,3 +339,38 @@ void get_error_linux(void) print_message(1,message); } +void clean_dir(void) +{ + char string[200]; + char file[200]; + char message[200]; + DIR *linux_open_dir; + struct dirent *linux_current_file; + int x=0; + + getcwd(string,200); + strcat(string,"/emfile-2k-0"); + sprintf(message,"\n\nunlinking emfile at this path: %s\n",string); + print_message(3,message); + unlink(string); + + + linux_open_dir = opendir(linux_struct.root_path); + if (linux_open_dir){ + for (x=0 ;NULL!=linux_current_file ;x++) + { + linux_current_file =readdir(linux_open_dir); + if (NULL!=linux_current_file){ + + strcpy(file,linux_struct.root_path); + strcat(file,linux_current_file->d_name); + sprintf(message,"unlinking file %d\n",linux_current_file->d_name); + print_message(3,message); + unlink(file); + } + } + closedir(linux_open_dir); + rmdir(linux_struct.root_path); + } + +}