yaffs direct: Add more tests for valid paths.
[yaffs2.git] / direct / tests / yaffs_test.c
index 5a1e0c77d1c3243631706329e3fbc8d74ed788ef..b35c75025a821a99191b6593abc42553a4a9d770 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-2010 Aleph One Ltd.
  *   for Toby Churchill Ltd and Brightstar Engineering
  *
  * Created by Charles Manning <charles@aleph1.co.uk>
@@ -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;
 
@@ -71,7 +76,8 @@ void yaffs_bash_around(const char *mountpt, int n_cycles)
                
        while(n_cycles){
                if(cycle % 100 == 0){
-                       printf("CYCLE %8d mo %2d space %d ",cycle,op_max,yaffs_freespace(mountpt));
+                       printf("CYCLE %8d mo %2d inodes %d space %d ",cycle,op_max,
+                               yaffs_inodecount(mountpt),(int)yaffs_freespace(mountpt));
                        for(i = 0; i < BASH_HANDLES; i++)
                                printf("%2d ",h[i]);
                        printf("\n");
@@ -152,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);
 }
 
@@ -189,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':
@@ -219,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 */
@@ -227,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){
@@ -251,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){