Have updated yaffs direct tests and added README files to the tests.
[yaffs2.git] / direct / tests / yaffs_test.c
index faf5bef0f73df94685b0388d0544c6c4ddd6151b..5df17f84eca00f0dd14e22a731f6a523600cb017 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * YAFFS: Yet another FFS. A NAND-flash specific file system. 
  *
- * Copyright (C) 2002 Aleph One Ltd.
+ * Copyright (C) 2002-2011 Aleph One Ltd.
  *   for Toby Churchill Ltd and Brightstar Engineering
  *
  * Created by Charles Manning <charles@aleph1.co.uk>
@@ -42,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;
 
@@ -74,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");
@@ -155,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);
 }
 
@@ -192,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:t:u"))
+       while ((ch = getopt(argc,argv, "bfilmn:ps:t:uz"))
               != EOF)
                switch (ch) {
                case 's':
@@ -223,7 +227,9 @@ int main(int argc, char **argv)
                        n_cycles = atoi(optarg);
                        break;
                case 't':
-                       yaffs_traceMask = strtol(optarg,NULL,0);
+                       yaffs_trace_mask = strtol(optarg,NULL,0);
+                       break;
+               case 'z':fuzz_test=1;
                        break;
                default:
                        BadUsage();
@@ -233,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){
@@ -257,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){