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=578409eb633cd734dc145fb5d2e02ecf8e2a4907;hp=d87dff51fc6fc7a8ac1cf2730b24c0f211ce5a03;hb=ca74a1a9eca8779e4edad2fc1274b281dc008deb;hpb=3739438c9fe703d800c4a8654aee32ccc6fb96e3 diff --git a/direct/timothy_tests/mirror_tests/mirror_tests.c b/direct/timothy_tests/mirror_tests/mirror_tests.c index d87dff5..578409e 100644 --- a/direct/timothy_tests/mirror_tests/mirror_tests.c +++ b/direct/timothy_tests/mirror_tests/mirror_tests.c @@ -31,18 +31,20 @@ typedef struct test_temp2 { }test_temp; test_temp yaffs_tests={ - 3, + 4, {{"yaffs_test_open",yaffs_test_open}, {"yaffs_test_truncate",yaffs_test_truncate}, - {"yaffs_test_unlink",yaffs_test_unlink} + {"yaffs_test_unlink",yaffs_test_unlink}, + {"yaffs_test_write",yaffs_test_write} } }; test_temp linux_tests={ - 3, + 4, {{"linux_test_open",linux_test_open}, {"linux_test_truncate",linux_test_truncate}, - {"linux_test_unlink",linux_test_unlink} + {"linux_test_unlink",linux_test_unlink}, + {"linux_test_write",linux_test_write} } }; @@ -64,10 +66,9 @@ int main(int argc, char *argv[]) print_message(3,message); sprintf(message,"yaffs_num_of_tests: %d\n",yaffs_tests.num_of_tests); print_message(3,message); - for (x=0;x=4){ + get_error_yaffs(); + get_error_linux(); + } + + if ((abs(yaffs_get_error())!=abs(errno)) && + (abs(yaffs_get_error())!=EISDIR && abs(errno) != 0) && + (abs(yaffs_get_error())!=ENOENT && abs(errno) != EACCES)&& + (abs(yaffs_get_error())!=EINVAL && abs(errno) != EBADF) + ){ + print_message(2,"\ndifference in returned errors######################################\n"); + get_error_yaffs(); + get_error_linux(); + if (get_exit_on_error()){ + exit(0); + } } } - } - compare_linux_and_yaffs(); + //check_mode(&args_struct); + compare_linux_and_yaffs(&args_struct); + //check_mode(&args_struct); + + } + compare_linux_and_yaffs(&args_struct); } int select_test_id(int test_len) @@ -202,36 +223,219 @@ int select_test_id(int test_len) } -int compare_linux_and_yaffs(void) +int check_mode(arg_temp *args_struct) { - int x=0; + char path[200]; + char message[200]; + int output=0; + + struct yaffs_stat yaffs_stat_struct; + join_paths(yaffs_struct.root_path,args_struct->string1, path ); + sprintf(message,"\ntrying to stat to: %s\n",path); + print_message(3,message); + output=yaffs_stat(path,&yaffs_stat_struct); + if (output < 0){ + sprintf(message,"failed to stat the file\n"); + print_message(3,message); + get_error_yaffs(); + } else { + sprintf(message,"stated the file\n"); + print_message(3,message); + sprintf(message," yaffs file mode is %d\n",(yaffs_stat_struct.st_mode & (S_IREAD| S_IWRITE))); + print_message(3,message); + sprintf(message,"mode S_IREAD %d S_IWRITE %d\n",(yaffs_stat_struct.st_mode & S_IREAD),(yaffs_stat_struct.st_mode & S_IWRITE)); + print_message(3,message); + } + return 1; +} + +int check_mode_file(char *path) +{ + char message[200]; + int output=0; + + struct yaffs_stat yaffs_stat_struct; + + sprintf(message,"\ntrying to stat to: %s\n",path); + print_message(3,message); + output=yaffs_stat(path,&yaffs_stat_struct); + if (output < 0){ + sprintf(message,"failed to stat the file\n"); + print_message(3,message); + get_error_yaffs(); + } else { + sprintf(message,"stated the file\n"); + print_message(3,message); + sprintf(message," yaffs file mode is %d\n",(yaffs_stat_struct.st_mode & (S_IREAD| S_IWRITE))); + print_message(3,message); + sprintf(message,"mode S_IREAD %d S_IWRITE %d\n\n",(yaffs_stat_struct.st_mode & S_IREAD),(yaffs_stat_struct.st_mode & S_IWRITE)); + print_message(3,message); + } + return 1; +} + +int compare_linux_and_yaffs(arg_temp *args_struct) +{ + int x=0,y=0; + char l_path[200]; + char y_path[200]; + int exit_bool=0; + int number_of_files_in_yaffs=0; + int number_of_files_in_linux=0; + char message[200]; + + struct yaffs_stat yaffs_stat_struct; + struct stat linux_stat_struct; yaffs_DIR *yaffs_open_dir; yaffs_dirent *yaffs_current_file; DIR *linux_open_dir; struct dirent *linux_current_file; - - yaffs_open_dir = yaffs_opendir(yaffs_struct.root_path); - for (x=0;NULL!=yaffs_readdir(yaffs_open_dir);x++){}; - printf("number of files in yaffs dir= %d\n",x); + print_message(2,"\n\n\n comparing folders\n"); +// check_mode_file("yaffs2/test/YY"); + //find out the number of files in the directory + yaffs_open_dir = yaffs_opendir(yaffs_struct.root_path); + if (yaffs_open_dir) { + for (x=0;NULL!=yaffs_readdir(yaffs_open_dir);x++){} + number_of_files_in_yaffs=x; + sprintf(message,"number of files in yaffs dir= %d\n",number_of_files_in_yaffs); + print_message(2,message); + yaffs_rewinddir(yaffs_open_dir); + } else { + print_message(3,"failed to open yaffs test dir\n"); + } + //create array + char yaffs_file_list[x][200]; + //check_mode_file("yaffs2/test/YY"); + //copy file names into array + if (yaffs_open_dir){ - char yaffs_file_list[x][100]; - yaffs_rewinddir(yaffs_open_dir); - - for (x=0 ;NULL!=yaffs_current_file;x++) - { - yaffs_current_file =yaffs_readdir(yaffs_open_dir); - if (NULL!=yaffs_current_file){ - strcpy(yaffs_file_list[x],yaffs_current_file->d_name); + for (x=0 ;NULL!=yaffs_current_file;x++) + { + yaffs_current_file =yaffs_readdir(yaffs_open_dir); + if (NULL!=yaffs_current_file){ + strcpy(yaffs_file_list[x],yaffs_current_file->d_name); + } } + yaffs_closedir(yaffs_open_dir); + } else { + print_message(3,"failed to populate yaffs test list\n"); } + + //find out the number of files in the directory linux_open_dir = opendir(linux_struct.root_path); + if (linux_open_dir){ + for (x=0;NULL!=readdir(linux_open_dir);x++){} + number_of_files_in_linux=x-2; + sprintf(message,"number of files in linux dir= %d\n",(number_of_files_in_linux)); + print_message(2,message); + //the -2 is because linux shows 2 extra files which are automaticly created. + + rewinddir(linux_open_dir); + } else { + print_message(3,"failed to open linux test dir\n"); + } - 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. + //create array + char linux_file_list[x-2][200]; + //check_mode_file("yaffs2/test/YY"); + //copy file names into array + if (linux_open_dir){ + for (x=0, y=0 ;NULL!=linux_current_file;x++) + { + linux_current_file =readdir(linux_open_dir); + if (NULL!=linux_current_file){ + strcpy(message,linux_current_file->d_name); + print_message(7,"opened file: "); + print_message(7,message); + print_message(7,"\n"); + } + if (NULL!=linux_current_file && + 0!=strcmp(message,".")&& + 0!=strcmp(message,"..")){ + // strcpy(message,linux_current_file->d_name); + //sprintf("file opened: %s\n",linux_current_file->d_name); + //print_message(3,message); + print_message(7,"added file to list\n"); + strcpy(linux_file_list[y],message); + y++; + sprintf(message,"file added to list: %s\n",linux_file_list[x]); + print_message(7,message); + } + } + closedir(linux_open_dir); + } else { + print_message(3,"failed to populate linux test dir\n"); + } + + //match the files in both folders + for (x=0;x=0&& + stat(l_path,&linux_stat_struct)>=0){ + sprintf(message," yaffs file mode is %d\n",(yaffs_stat_struct.st_mode & (S_IREAD| S_IWRITE))); + print_message(3,message); + sprintf(message,"mode S_IREAD %d S_IWRITE %d\n",(yaffs_stat_struct.st_mode & S_IREAD),(yaffs_stat_struct.st_mode & S_IWRITE)); + print_message(3,message); + sprintf(message," linux file mode is %d\n",(linux_stat_struct.st_mode & (S_IREAD|S_IWRITE))); + print_message(3,message); + sprintf(message,"mode S_IREAD %d S_IWRITE %d\n",(linux_stat_struct.st_mode & S_IREAD),(linux_stat_struct.st_mode & S_IWRITE)); + print_message(3,message); + if ((yaffs_stat_struct.st_mode & (S_IREAD| S_IWRITE))== + ( linux_stat_struct.st_mode & (S_IREAD|S_IWRITE))){ + print_message(2,"file modes match\n"); + } else { + print_message(2,"file modes do not match\n"); + exit_bool=1; + } + } else { + print_message(2,"failed to stat one of the files\n"); + get_error_yaffs(); + get_error_linux(); + } + + //read file contents + + linux_file_list[y][0]=NULL; + yaffs_file_list[x][0]=NULL; + break; + } + } + } + + //print remaining files + for (x=0;xd_name); // generate_array_of_objects_in_yaffs(); // generate_array_of_objects_in_linux(); @@ -290,33 +494,6 @@ void run_linux_test(int id,arg_temp *args_struct) } } -void get_error_yaffs(void) -{ - int error_code=0; - char message[30]; - message[0]='\0'; - - error_code=yaffs_get_error(); - sprintf(message,"yaffs_error code %d\n",error_code); - print_message(1,message); - sprintf(message,"error is : %s\n",yaffs_error_to_str(error_code)); - print_message(1,message); -} - -void get_error_linux(void) -{ - int error_code=0; - char message[30]; - message[0]='\0'; - - error_code=errno; - sprintf(message,"linux_error code %d\n",error_code); - print_message(1,message); - strcpy(message,"error code"); - sprintf(message,"error is : %s\n",yaffs_error_to_str(error_code)); - //perror(message); - print_message(1,message); -} void clean_dir(void) { @@ -348,7 +525,8 @@ void clean_dir(void) unlink(file); } } - unlink(linux_struct.root_path); + closedir(linux_open_dir); + rmdir(linux_struct.root_path); } }