annotate packages/fs/yaffs/current/src/direct/tests/yaffs_test.c @ 425:dea4d7d250ad ecos

Move sources into packages/fs/yaffs/current/src/
author Ross Younger <wry@ecoscentric.com>
date Fri, 14 May 2010 16:03:09 +0100
parents direct/tests/yaffs_test.c@b5309c9b6d7f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
1 /*
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
2 * YAFFS: Yet another FFS. A NAND-flash specific file system.
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
3 *
409
b5309c9b6d7f yaffs Some cleanups.
Charles Manning <cdhmanning@gmail.com>
parents: 342
diff changeset
4 * Copyright (C) 2002-2010 Aleph One Ltd.
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
5 * for Toby Churchill Ltd and Brightstar Engineering
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
6 *
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
7 * Created by Charles Manning <charles@aleph1.co.uk>
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
8 *
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
10 * it under the terms of the GNU General Public License version 2 as
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
11 * published by the Free Software Foundation.
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
12 *
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
13 */
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
14
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
15
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
16
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
17
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
18 #include <stdio.h>
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
19 #include <string.h>
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
20 #include <unistd.h>
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
21 #include <fcntl.h>
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
22 #include <signal.h>
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
23 #include <stdlib.h>
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
24
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
25 #include "yaffsfs.h"
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
26
342
ce702882929d Move tracing out of yportenv.h
charles <charles>
parents: 324
diff changeset
27 #include "yaffs_trace.h"
ce702882929d Move tracing out of yportenv.h
charles <charles>
parents: 324
diff changeset
28
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
29 #include "nor_stress.h"
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
30 #include "yaffs_fsx.h"
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
31
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
32 void (*ext_fatal)(void);
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
33
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
34
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
35 int random_seed;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
36 int simulate_power_failure = 0;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
37
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
38
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
39 int do_fsx;
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
40 int do_bash_around;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
41
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
42 int init_test;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
43 int do_upgrade;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
44 int n_cycles = -1;
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
45 int yaffs_test_maxMallocs;
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
46
240
22b5cf141a53 More test fiddling
charles <charles>
parents: 237
diff changeset
47 extern int ops_multiplier;
22b5cf141a53 More test fiddling
charles <charles>
parents: 237
diff changeset
48
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
49 char mount_point[200];
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
50
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
51 #define BASH_HANDLES 20
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
52 void yaffs_bash_around(const char *mountpt, int n_cycles)
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
53 {
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
54 char name[200];
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
55 char name1[200];
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
56 int h[BASH_HANDLES];
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
57 int i;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
58 int op;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
59 int pos;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
60 int n;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
61 int n1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
62 int start_op;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
63 int op_max = 99;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
64
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
65 int cycle = 0;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
66
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
67 sprintf(name,"%s/bashdir",mountpt);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
68
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
69 yaffs_mkdir(name,0666);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
70
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
71 for(i = 0; i < BASH_HANDLES; i++)
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
72 h[i] = -1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
73
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
74 while(n_cycles){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
75 if(cycle % 100 == 0){
314
be5ba5777ba2 More test stuff
charles <charles>
parents: 313
diff changeset
76 printf("CYCLE %8d mo %2d inodes %d space %d ",cycle,op_max,
be5ba5777ba2 More test stuff
charles <charles>
parents: 313
diff changeset
77 yaffs_inodecount(mountpt),yaffs_freespace(mountpt));
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
78 for(i = 0; i < BASH_HANDLES; i++)
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
79 printf("%2d ",h[i]);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
80 printf("\n");
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
81 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
82 cycle++;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
83
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
84 if(n_cycles > 0)
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
85 n_cycles--;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
86 i = rand() % BASH_HANDLES;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
87 op = rand() % op_max;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
88 pos = rand() & 20000000;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
89 n = rand() % 100;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
90 n1 = rand() % 100;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
91
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
92 sprintf(name,"%s/bashdir/xx%d",mountpt,n);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
93 sprintf(name1,"%s/bashdir/xx%d",mountpt,n1);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
94
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
95 start_op = op;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
96
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
97 op-=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
98 if(op < 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
99 if(h[i]>= 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
100 yaffs_close(h[i]);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
101 h[i] = -1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
102 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
103 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
104 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
105 op-=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
106 if(op < 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
107 if(h[i] < 0)
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
108 h[i] = yaffs_open(name,O_CREAT| O_RDWR, 0666);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
109 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
110 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
111
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
112 op-=5;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
113 if(op< 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
114 yaffs_lseek(h[i],pos,SEEK_SET);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
115 yaffs_write(h[i],name,n);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
116 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
117 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
118 op-=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
119 if(op < 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
120 yaffs_unlink(name);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
121 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
122 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
123 op-=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
124 if(op < 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
125 yaffs_rename(name,name1);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
126 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
127 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
128 op-=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
129 if(op < 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
130 yaffs_mkdir(name,0666);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
131 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
132 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
133 op-=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
134 if(op < 0){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
135 yaffs_rmdir(name);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
136 continue;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
137 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
138
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
139 op_max = start_op-op;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
140 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
141
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
142
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
143 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
144
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
145 void BadUsage(void)
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
146 {
307
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
147 printf("Usage: yaffs_test [options] mountpoint\n");
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
148 printf("options\n");
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
149 printf(" f: do fsx testing\n");
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
150 printf(" i: initialise for upgrade testing\n");
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
151 printf(" l: multiply number of operations by 5\n");
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
152 printf(" m: random max number of mallocs\n");
307
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
153 printf(" n nnn: number of cycles\n");
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
154 printf(" p: simulate power fail testing\n");
af08f0e8f039 Add option descriptions
charles <charles>
parents: 245
diff changeset
155 printf(" s sss: set seed\n");
308
ed8472f821be Add more tracing to tests
charles <charles>
parents: 307
diff changeset
156 printf(" u: do upgrade test\n");
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
157 printf(" b: bash-about test\n");
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
158 exit(2);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
159 }
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
160
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
161 int sleep_exit = 0;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
162 int sleep_time = 0;
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
163 void test_fatal(void)
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
164 {
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
165 printf("fatal yaffs test pid %d sleeping\n",getpid());
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
166 while(!sleep_exit){
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
167 sleep(1);
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
168 sleep_time++;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
169 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
170
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
171 signal(SIGSEGV,SIG_IGN);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
172 signal(SIGBUS,SIG_IGN);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
173 signal(SIGABRT,SIG_IGN);
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
174 sleep_exit = 0;
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
175
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
176 }
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
177
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
178 void bad_ptr_handler(int sig)
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
179 {
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
180 printf("signal %d received\n",sig);
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
181 test_fatal();
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
182 }
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
183
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
184 int main(int argc, char **argv)
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
185 {
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
186 int ch;
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
187 int random_mallocs=0;
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
188 ext_fatal = test_fatal;
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
189
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
190 #if 1
312
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
191 signal(SIGSEGV,bad_ptr_handler);
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
192 signal(SIGBUS,bad_ptr_handler);
b5d302efa7dd More test tweaks
charles <charles>
parents: 308
diff changeset
193 signal(SIGABRT,bad_ptr_handler);
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
194 #endif
324
b15d0262aab2 Add tracMask control option to tests to allow them to run quicker
charles <charles>
parents: 314
diff changeset
195 while ((ch = getopt(argc,argv, "bfilmn:ps:t:u"))
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
196 != EOF)
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
197 switch (ch) {
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
198 case 's':
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
199 random_seed = atoi(optarg);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
200 break;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
201 case 'p':
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
202 simulate_power_failure =1;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
203 break;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
204 case 'i':
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
205 init_test = 1;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
206 break;
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
207 case 'b':
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
208 do_bash_around = 1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
209 break;
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
210 case 'f':
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
211 do_fsx = 1;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
212 break;
240
22b5cf141a53 More test fiddling
charles <charles>
parents: 237
diff changeset
213 case 'l':
22b5cf141a53 More test fiddling
charles <charles>
parents: 237
diff changeset
214 ops_multiplier *= 5;
22b5cf141a53 More test fiddling
charles <charles>
parents: 237
diff changeset
215 break;
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
216 case 'u':
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
217 do_upgrade = 1;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
218 break;
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
219 case 'm':
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
220 random_mallocs=1;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
221 break;
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
222 case 'n':
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
223 n_cycles = atoi(optarg);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
224 break;
324
b15d0262aab2 Add tracMask control option to tests to allow them to run quicker
charles <charles>
parents: 314
diff changeset
225 case 't':
b15d0262aab2 Add tracMask control option to tests to allow them to run quicker
charles <charles>
parents: 314
diff changeset
226 yaffs_traceMask = strtol(optarg,NULL,0);
b15d0262aab2 Add tracMask control option to tests to allow them to run quicker
charles <charles>
parents: 314
diff changeset
227 break;
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
228 default:
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
229 BadUsage();
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
230 /* NOTREACHED */
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
231 }
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
232 argc -= optind;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
233 argv += optind;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
234
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
235 if(random_mallocs){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
236 yaffs_test_maxMallocs = 0xFFF & random_seed;
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
237 }
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
238
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
239 if(argc == 1) {
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
240 strcpy(mount_point,argv[0]);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
241
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
242 if(simulate_power_failure)
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
243 n_cycles = -1;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
244 printf("Running test %s %s %s %s seed %d cycles %d\n",
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
245 do_upgrade ? "fw_upgrade" : "",
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
246 init_test ? "initialise":"",
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
247 do_fsx ? "fsx" :"",
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
248 simulate_power_failure ? "power_fail" : "",
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
249 random_seed, n_cycles);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
250
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
251 yaffs_StartUp();
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
252 yaffs_mount(mount_point);
308
ed8472f821be Add more tracing to tests
charles <charles>
parents: 307
diff changeset
253 printf("Mount complete\n");
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
254
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
255 if(do_upgrade && init_test){
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
256 simulate_power_failure = 0;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
257 NorStressTestInitialise(mount_point);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
258 } else if(do_upgrade){
245
730c93f44f2f Improve test harness for yaffs2 mode
charles <charles>
parents: 240
diff changeset
259 printf("Running stress on %s with seed %d\n",mount_point,random_seed);
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
260 NorStressTestRun(mount_point,n_cycles,do_fsx);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
261 } else if(do_fsx){
240
22b5cf141a53 More test fiddling
charles <charles>
parents: 237
diff changeset
262 yaffs_fsx_main(mount_point,n_cycles);
313
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
263 } else if(do_bash_around){
da192170b4ff More test code
charles <charles>
parents: 312
diff changeset
264 yaffs_bash_around(mount_point,n_cycles);
237
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
265 }else {
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
266 printf("No test to run!\n");
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
267 BadUsage();
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
268 }
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
269 yaffs_unmount(mount_point);
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
270
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
271 printf("Test run completed!\n");
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
272 }
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
273 else
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
274 BadUsage();
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
275 return 0;
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
276 }
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
277
4c30e3dfd5b7 Restructure tests
charles <charles>
parents:
diff changeset
278