X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftests%2Fyaffs_test.c;h=b35c75025a821a99191b6593abc42553a4a9d770;hp=81eb1003b9fe321a8834c322ed447810d70f16ee;hb=22f31a41cbb9a08e67204279fb3b37e400309f1c;hpb=e2f8ff444638b4313431e85a38440b084ccfa937 diff --git a/direct/tests/yaffs_test.c b/direct/tests/yaffs_test.c index 81eb100..b35c750 100644 --- a/direct/tests/yaffs_test.c +++ b/direct/tests/yaffs_test.c @@ -1,7 +1,7 @@ /* * YAFFS: Yet another FFS. A NAND-flash specific file system. * - * Copyright (C) 2002 Aleph One Ltd. + * Copyright (C) 2002-2010 Aleph One Ltd. * for Toby Churchill Ltd and Brightstar Engineering * * Created by Charles Manning @@ -24,6 +24,8 @@ #include "yaffsfs.h" +#include "yaffs_trace.h" + #include "nor_stress.h" #include "yaffs_fsx.h" @@ -40,7 +42,10 @@ int do_bash_around; int init_test; int do_upgrade; int n_cycles = -1; -int yaffs_test_maxMallocs; +int fuzz_test=0; + + +int yaffs_test_max_mallocs; extern int ops_multiplier; @@ -72,7 +77,7 @@ void yaffs_bash_around(const char *mountpt, int n_cycles) while(n_cycles){ if(cycle % 100 == 0){ printf("CYCLE %8d mo %2d inodes %d space %d ",cycle,op_max, - yaffs_inodecount(mountpt),yaffs_freespace(mountpt)); + yaffs_inodecount(mountpt),(int)yaffs_freespace(mountpt)); for(i = 0; i < BASH_HANDLES; i++) printf("%2d ",h[i]); printf("\n"); @@ -153,6 +158,7 @@ void BadUsage(void) printf(" s sss: set seed\n"); printf(" u: do upgrade test\n"); printf(" b: bash-about test\n"); + printf(" z: fuzz test - ignore verification errors\n"); exit(2); } @@ -190,7 +196,7 @@ int main(int argc, char **argv) signal(SIGBUS,bad_ptr_handler); signal(SIGABRT,bad_ptr_handler); #endif - while ((ch = getopt(argc,argv, "bfilmn:ps:u")) + while ((ch = getopt(argc,argv, "bfilmn:ps:t:uz")) != EOF) switch (ch) { case 's': @@ -220,6 +226,11 @@ int main(int argc, char **argv) case 'n': n_cycles = atoi(optarg); break; + case 't': + yaffs_trace_mask = strtol(optarg,NULL,0); + break; + case 'z':fuzz_test=1; + break; default: BadUsage(); /* NOTREACHED */ @@ -228,23 +239,35 @@ int main(int argc, char **argv) argv += optind; if(random_mallocs){ - yaffs_test_maxMallocs = 0xFFF & random_seed; + yaffs_test_max_mallocs = 0xFFF & random_seed; } if(argc == 1) { + int result; + strcpy(mount_point,argv[0]); if(simulate_power_failure) n_cycles = -1; - printf("Running test %s %s %s %s seed %d cycles %d\n", + printf("Running test %s %s %s %s %s seed %d cycles %d\n", do_upgrade ? "fw_upgrade" : "", init_test ? "initialise":"", + fuzz_test ? "fuzz-test" : "", do_fsx ? "fsx" :"", simulate_power_failure ? "power_fail" : "", random_seed, n_cycles); - yaffs_StartUp(); - yaffs_mount(mount_point); + yaffs_start_up(); + result = yaffs_mount(mount_point); + if(result < 0){ + printf("Mount of %s failed\n",mount_point); + printf("pid %d sleeping\n",getpid()); + + while(!sleep_exit){ + sleep(1); + sleep_time++; + } + } printf("Mount complete\n"); if(do_upgrade && init_test){ @@ -252,7 +275,7 @@ int main(int argc, char **argv) NorStressTestInitialise(mount_point); } else if(do_upgrade){ printf("Running stress on %s with seed %d\n",mount_point,random_seed); - NorStressTestRun(mount_point,n_cycles,do_fsx); + NorStressTestRun(mount_point,n_cycles,do_fsx,fuzz_test); } else if(do_fsx){ yaffs_fsx_main(mount_point,n_cycles); } else if(do_bash_around){