X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftest-framework%2Ftimothy_tests%2Flinux_tests%2Flinux_test.c;fp=direct%2Ftest-framework%2Ftimothy_tests%2Flinux_tests%2Flinux_test.c;h=0000000000000000000000000000000000000000;hp=b32dab6a1f5849369e6e9ca92f0e16f91cbf23fe;hb=e12e51da5815d80399ec8f5b0da69c7cd7a0f42e;hpb=ebc54da9e29be1de79d77c72c0d8eb91833c641b diff --git a/direct/test-framework/timothy_tests/linux_tests/linux_test.c b/direct/test-framework/timothy_tests/linux_tests/linux_test.c deleted file mode 100644 index b32dab6..0000000 --- a/direct/test-framework/timothy_tests/linux_tests/linux_test.c +++ /dev/null @@ -1,318 +0,0 @@ -/* - * YAFFS: Yet another FFS. A NAND-flash specific file system. - * - * Copyright (C) 2002-2018 Aleph One Ltd. - * - * Created by Timothy Manning - * - * 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. - */ - -#include "linux_test.h" - -int random_seed; -int simulate_power_failure = 1; - -char message[400]; //this is used for storing print messages. - - - -const struct option long_options[]={ - {"help", 0,NULL,'h'}, - - - {"print_level", 1,NULL,'p'}, - {"quiet", 0,NULL,'q'}, - - {"seed", 1,NULL,'s'}, - - {"verbose", 0,NULL,'v'} -}; - -const char short_options[]="hp:qs:v"; - - -void init(int argc, char *argv[]) -{ - char dir[200]; - dir[0]='\0'; - int x=-1; - char message[100]; - int new_option; - - x=(unsigned)time(NULL); - sprintf(message,"seeding srand with: %d\n",x); - print_message(2,message); - srand(x); - - - - do { - new_option=getopt_long(argc,argv,short_options,long_options,NULL); - if (new_option=='h'){ - printf("mirror_tests help\n"); - printf("arguments:\n"); - 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-s [number] //seeds rand with the number\n"); - - exit(0); - - } else if (new_option=='p'){ - set_print_level(atoi(optarg)); - } else if (new_option=='v'){ - set_print_level(5); - } else if (new_option=='q'){ - set_print_level(-1); - } else if (new_option=='s'){ - srand(atoi(argv[x+1])); - - } else if (new_option==-1){ - - } else if (new_option=='?') { - printf("bad argument\n"); - exit(0); - } - }while(new_option!=-1); -} - -int main(int argc, char *argv[]) -{ - dir_struct *scanned_dir=NULL; - int output=0; - int break_bool=0; - int x=5; - - init(argc,argv); - while( 1){ - while (break_bool!=1){ - //printf("x %d\n",x); - x--; - if (x<0 &&(break_bool!=1)){ - output=mkdir_test(); - break_bool=1; - } - x--; - if (x<0 &&(break_bool!=1)){ - output=rmdir_test(); - break_bool=1; - } - x--; - if (x<0 &&(break_bool!=1)){ - output=mknod_test(); - break_bool=1; - } - x--; - if (x<0 &&(break_bool!=1)){ - output=symlink_test(); - break_bool=1; - } - x--; - if (x<0 &&(break_bool!=1)){ - output=link_test(); - break_bool=1; - } - x--; - if (x<0 &&(break_bool!=1)){ - output=rename_test(); - break_bool=1; - } - x--; - if (x<0 &&(break_bool!=1)){ - scanned_dir=scan_dir(); - - output=remount_test(); - check_dir(scanned_dir); - scanned_dir=NULL; //the scanned dir has been freed in check_dir. - break_bool=1; - } - } - //printf("resetting x\n"); - check_function(output); - break_bool=0; - x=(rand()% 99); - } - return 0; -} - -dir_struct * scan_dir(void) -{ - struct dirent *dir_data; - dir_struct *dir=NULL; - dir=malloc(sizeof(dir_struct)); - memset(dir, 0, sizeof(dir_struct)); - DIR *open_dir=NULL; - - - open_dir=opendir(ROOT_PATH); - if (open_dir < 0){ - sprintf(message,"failed to find the directory: %s",ROOT_PATH); - print_message(1,message); - } - dir_data=readdir(open_dir); - while(dir_data){ - dir->path_list=linked_list_add_node(HEAD,dir->path_list); - dir->path_list->string=malloc(strlen(dir_data->d_name)+1); - strcpy(dir->path_list->string,dir_data->d_name); - sprintf(message,"opened file: %s\n",dir->path_list->string); - print_message(5,message); - dir_data=readdir(open_dir); - } - closedir(open_dir); - //node_print_pointers(dir->path_list); - return dir; -} - -int check_dir(dir_struct *old_dir) -{ - print_message(3,"scanning new dir\n"); - dir_struct *new_dir=scan_dir(); - node *new_list=new_dir->path_list; - node *old_list=old_dir->path_list; - int exit_loop=0,error=0; - print_message(3,"checking dir\n"); - for (;old_list!= NULL;old_list=old_list->next){ - //sprintf(message,"new_list=!NULL= %d, exit_loop !=1 = %d\n",(new_list!=NULL),(exit_loop !=1)); - //print_message(3,message); - for (;(new_list!=NULL) && (exit_loop !=1);new_list=new_list->next){ - //sprintf(message,"comparing %s and %s\n",old_list->string,new_list->string); - //print_message(3,message); - if (strcmp( new_list->string ,old_list->string)==0){ - //files match -now compare the modes and contents of the files. - //and set the paths to NULL. - exit_loop=1; - } - /*if (new_list->next==NULL){ - print_message(3,"next is null\n"); - - }*/ - } - if (exit_loop !=1){ - //failed to find a matching file - sprintf(message,"a file has disappeared: %s\n",old_list->string); - print_message(3,message); - error=1; - - } - new_list=new_dir->path_list; - exit_loop=0; - } - //now check if there are any old unmatched files - - //free both data structs - delete_linked_list(old_dir->path_list); - delete_linked_list(new_dir->path_list); - new_dir->path_list=NULL; - old_dir->path_list=NULL; - free(old_dir); - free(new_dir); - if (error ==1){ - print_message(3,"checking dir failed\n"); - if (get_exit_on_error()==1){ - print_message(3,"exiting_program\n"); - exit(0); - } - } - - else if (error !=1){ - print_message(3,"checking dir passed\n"); - } - return error; -} - -int remount_test(void) -{ - int output; - print_message(3,"\nunmounting\n"); - output=umount2("/mnt/y",1); - check_function(output); - print_message(3,"mounting\n"); - mount("/dev/mtdblock0","/mnt/y","yaffs2",0,NULL); - check_function(output); - return output; -} - -int mkdir_test(void) -{ - - char string[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - int mode=0,output=0; - strcpy(string,ROOT_PATH); - strcat(string,generate_random_string(FILE_NAME_LENGTH)); - mode = ((S_IREAD|S_IWRITE)&random_int()); - sprintf(message,"\nmaking directory: %s, with mode %d\n",string,mode); - print_message(3,message); - output= mkdir(string,mode); - return output; -} - -int rmdir_test(void) -{ - char string[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - int output=0; - strcpy(string,ROOT_PATH); - strcat(string,generate_random_string(FILE_NAME_LENGTH)); - - sprintf(message,"\nremoving directory: %s\n",string); - print_message(3,message); - output= rmdir(string); - return output; -} -int symlink_test(void) -{ - char string[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - char string2[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - int output; - strcpy(string,ROOT_PATH); - strcat(string,generate_random_string(FILE_NAME_LENGTH)); - strcpy(string2,ROOT_PATH); - strcat(string2,generate_random_string(FILE_NAME_LENGTH)); - sprintf(message,"\nsymlink from: %s, to %s\n",string,string2); - print_message(3,message); - output= symlink(string,string2); - return output; -} -int rename_test(void) -{ - char string[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - char string2[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - int output; - strcpy(string,ROOT_PATH); - strcat(string,generate_random_string(FILE_NAME_LENGTH)); - strcpy(string2,ROOT_PATH); - strcat(string2,generate_random_string(FILE_NAME_LENGTH)); - sprintf(message,"\nrenaming from: %s, to %s\n",string,string2); - print_message(3,message); - output= rename(string,string2); - return output; -} -int link_test(void) -{ - char string[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - char string2[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - int output=0; - strcpy(string,ROOT_PATH); - strcat(string,generate_random_string(FILE_NAME_LENGTH)); - strcpy(string2,ROOT_PATH); - strcat(string2,generate_random_string(FILE_NAME_LENGTH)); - sprintf(message,"\nlink from: %s, to %s\n",string,string2); - print_message(3,message); - output= link(string,string2); - return output; -} -int mknod_test(void) -{ - char string[FILE_NAME_LENGTH+strlen(ROOT_PATH)]; - int mode=0,dev=0,output=0; - strcpy(string,ROOT_PATH); - strcat(string,generate_random_string(FILE_NAME_LENGTH)); - mode = ((S_IREAD|S_IWRITE)&random_int()); - dev = random_int(); - sprintf(message,"\nmaking node: %s, with mode %d, dev %d\n",string,mode,dev); - print_message(3,message); - output= mknod(string,mode,dev); - return output; -}