Replace fuzz DENSITY with explicit OPS in tests

This sort of inverts the previous logic. Tests can still define
OPS='2*N' to scale the number of ops roughly with the number of entries,
but this fits better into the test framework, allows overriding, scaling
can be more easily tweaked, can be swapped out with a constant (like in
test_wl), etc.

Also tweaked some of the related N constants/filter conditions in tests
since these are now being effectively doubled... This should leave the
resulting number of ops unchanged.
This commit is contained in:
Christopher Haster
2024-05-27 01:32:47 -05:00
parent fe11a33416
commit 15da817af5
5 changed files with 87 additions and 87 deletions
+30 -30
View File
@@ -332,9 +332,9 @@ defines.BADBLOCK_BEHAVIOR = [
# 'LFS_EMUBD_BADBLOCK_PROGNOOP', # 'LFS_EMUBD_BADBLOCK_PROGNOOP',
# 'LFS_EMUBD_BADBLOCK_ERASENOOP', # 'LFS_EMUBD_BADBLOCK_ERASENOOP',
] ]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 42 defines.SEED = 42
code = ''' code = '''
@@ -357,9 +357,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
@@ -461,9 +461,9 @@ defines.BADBLOCK_BEHAVIOR = [
# 'LFS_EMUBD_BADBLOCK_ERASENOOP', # 'LFS_EMUBD_BADBLOCK_ERASENOOP',
] ]
defines.MIRROR = [false, true] defines.MIRROR = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 42 defines.SEED = 42
code = ''' code = '''
@@ -491,9 +491,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
@@ -591,9 +591,9 @@ defines.BADBLOCK_BEHAVIOR = [
# 'LFS_EMUBD_BADBLOCK_ERASENOOP', # 'LFS_EMUBD_BADBLOCK_ERASENOOP',
] ]
defines.MIRROR = [false, true] defines.MIRROR = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 42 defines.SEED = 42
code = ''' code = '''
@@ -621,9 +621,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
@@ -724,7 +724,7 @@ defines.BADBLOCK_BEHAVIOR = [
] ]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -736,7 +736,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 42 defines.SEED = 42
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
// test all possible bad blocks // test all possible bad blocks
for (lfs_size_t i = 2; for (lfs_size_t i = 2;
@@ -758,9 +758,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -882,7 +882,7 @@ defines.BADBLOCK_BEHAVIOR = [
defines.MIRROR = [false, true] defines.MIRROR = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -894,7 +894,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 42 defines.SEED = 42
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
// test a large region of bad blocks // test a large region of bad blocks
for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) { for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) {
@@ -921,9 +921,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -1041,7 +1041,7 @@ defines.BADBLOCK_BEHAVIOR = [
defines.MIRROR = [false, true] defines.MIRROR = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -1053,7 +1053,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 42 defines.SEED = 42
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
// test a large region of bad blocks // test a large region of bad blocks
for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) { for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) {
@@ -1080,9 +1080,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -1716,7 +1716,7 @@ defines.BADBLOCK_BEHAVIOR = [
# 'LFS_EMUBD_BADBLOCK_ERASENOOP', # 'LFS_EMUBD_BADBLOCK_ERASENOOP',
] ]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = 1024 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -1727,7 +1727,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 42 defines.SEED = 42
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
// test all possible bad blocks // test all possible bad blocks
for (lfs_size_t i = 2; for (lfs_size_t i = 2;
@@ -2157,7 +2157,7 @@ defines.BADBLOCK_BEHAVIOR = [
] ]
defines.MIRROR = [false, true] defines.MIRROR = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = 1024 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -2168,7 +2168,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 42 defines.SEED = 42
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
// test a large region of bad blocks // test a large region of bad blocks
for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) { for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) {
@@ -2597,7 +2597,7 @@ defines.BADBLOCK_BEHAVIOR = [
] ]
defines.MIRROR = [false, true] defines.MIRROR = [false, true]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = 1024 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -2608,7 +2608,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 42 defines.SEED = 42
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
// test a large region of bad blocks // test a large region of bad blocks
for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) { for (lfs_size_t i = 0; i < BLOCK_COUNT/2; i++) {
+22 -22
View File
@@ -1277,14 +1277,14 @@ code = '''
''' '''
[cases.test_dirs_mkdir_fuzz] [cases.test_dirs_mkdir_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.PARENT = [false, true] defines.PARENT = [false, true]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
# limit powerloss testing due to time # limit powerloss testing due to time
if = '!TEST_PLS || N <= 16' if = '!TEST_PLS || N <= 8'
reentrant = true reentrant = true
code = ''' code = '''
// format once per test // format once per test
@@ -1305,9 +1305,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
@@ -4202,14 +4202,14 @@ code = '''
''' '''
[cases.test_dirs_rm_fuzz] [cases.test_dirs_rm_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.PARENT = [false, true] defines.PARENT = [false, true]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
# limit powerloss testing due to time # limit powerloss testing due to time
if = '!TEST_PLS || N <= 16' if = '!TEST_PLS || N <= 8'
reentrant = true reentrant = true
code = ''' code = '''
// format once per test // format once per test
@@ -4230,13 +4230,13 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random op, either mkdir or rmdir // choose a pseudo-random op, either mkdir or rmdir
uint8_t op = TEST_PRNG(&prng) % 2; uint8_t op = TEST_PRNG(&prng) % 2;
if (op == 0 || sim_size == 0) { if (op == 0 || sim_size == 0) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
if (j >= sim_size || sim[j] >= x) { if (j >= sim_size || sim[j] >= x) {
@@ -6672,14 +6672,14 @@ code = '''
''' '''
[cases.test_dirs_mv_fuzz] [cases.test_dirs_mv_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.PARENT = [false, true] defines.PARENT = [false, true]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
# limit powerloss testing due to time # limit powerloss testing due to time
if = '!TEST_PLS || N <= 16' if = '!TEST_PLS || N <= 8'
reentrant = true reentrant = true
code = ''' code = '''
// format once per test // format once per test
@@ -6700,13 +6700,13 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random op, either mkdir or rename // choose a pseudo-random op, either mkdir or rename
uint8_t op = TEST_PRNG(&prng) % 2; uint8_t op = TEST_PRNG(&prng) % 2;
if (op == 0 || sim_size == 0) { if (op == 0 || sim_size == 0) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
if (j >= sim_size || sim[j] >= x) { if (j >= sim_size || sim[j] >= x) {
@@ -6735,7 +6735,7 @@ code = '''
// number to rename to // number to rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size; lfs_size_t j = TEST_PRNG(&prng) % sim_size;
lfs_size_t x = sim[j]; lfs_size_t x = sim[j];
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t y = TEST_PRNG(&prng) % N;
for (lfs_size_t k = 0;; k++) { for (lfs_size_t k = 0;; k++) {
if (k >= sim_size || sim[k] >= y) { if (k >= sim_size || sim[k] >= y) {
// already seen and not a noop? // already seen and not a noop?
@@ -6819,14 +6819,14 @@ code = '''
# test all of the operations together # test all of the operations together
[cases.test_dirs_mvrm_fuzz] [cases.test_dirs_mvrm_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
# do more ops than dirs to encourage rename collisions # do more ops than dirs to encourage rename collisions
defines.DENSITY = 2 defines.OPS = '2*N'
defines.PARENT = [false, true] defines.PARENT = [false, true]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
# limit powerloss testing due to time # limit powerloss testing due to time
if = '!TEST_PLS || N <= 16' if = '!TEST_PLS || N <= 8'
reentrant = true reentrant = true
code = ''' code = '''
// format once per test // format once per test
@@ -6847,13 +6847,13 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random op, either mkdir, remove, or rename // choose a pseudo-random op, either mkdir, remove, or rename
uint8_t op = TEST_PRNG(&prng) % 3; uint8_t op = TEST_PRNG(&prng) % 3;
if (op == 0 || sim_size == 0) { if (op == 0 || sim_size == 0) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim // insert into our sim
for (lfs_size_t j = 0;; j++) { for (lfs_size_t j = 0;; j++) {
if (j >= sim_size || sim[j] >= x) { if (j >= sim_size || sim[j] >= x) {
@@ -6896,7 +6896,7 @@ code = '''
// number to rename to // number to rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size; lfs_size_t j = TEST_PRNG(&prng) % sim_size;
lfs_size_t x = sim[j]; lfs_size_t x = sim[j];
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t y = TEST_PRNG(&prng) % N;
for (lfs_size_t k = 0;; k++) { for (lfs_size_t k = 0;; k++) {
if (k >= sim_size || sim[k] >= y) { if (k >= sim_size || sim[k] >= y) {
// already seen and not a noop? // already seen and not a noop?
+18 -18
View File
@@ -761,7 +761,7 @@ code = '''
[cases.test_files_fuzz] [cases.test_files_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than files to encourage file rewrites # do more ops than files to encourage file rewrites
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -773,7 +773,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -785,9 +785,9 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -1111,7 +1111,7 @@ code = '''
[cases.test_files_rm_fuzz] [cases.test_files_rm_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than files to encourage file rewrites # do more ops than files to encourage file rewrites
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -1123,7 +1123,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -1135,14 +1135,14 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose which operation to do // choose which operation to do
uint8_t op = TEST_PRNG(&prng) % 2; uint8_t op = TEST_PRNG(&prng) % 2;
// creating a new file? // creating a new file?
if (op == 0 || sim_size == 0) { if (op == 0 || sim_size == 0) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -2200,7 +2200,7 @@ code = '''
[cases.test_files_mv_fuzz] [cases.test_files_mv_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than files to encourage file rewrites # do more ops than files to encourage file rewrites
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -2212,7 +2212,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -2224,14 +2224,14 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose which operation to do // choose which operation to do
uint8_t op = TEST_PRNG(&prng) % 2; uint8_t op = TEST_PRNG(&prng) % 2;
// creating a new file? // creating a new file?
if (op == 0 || sim_size == 0) { if (op == 0 || sim_size == 0) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -2276,7 +2276,7 @@ code = '''
// rename to // rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size; lfs_size_t j = TEST_PRNG(&prng) % sim_size;
lfs_size_t x = sim[j]; lfs_size_t x = sim[j];
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t y = TEST_PRNG(&prng) % N;
uint32_t wprng = sim_prngs[j]; uint32_t wprng = sim_prngs[j];
// update our sim // update our sim
@@ -2395,7 +2395,7 @@ code = '''
[cases.test_files_mvrm_fuzz] [cases.test_files_mvrm_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than files to encourage file rewrites # do more ops than files to encourage file rewrites
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -2407,7 +2407,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -2419,14 +2419,14 @@ code = '''
lfs_size_t sim_size = 0; lfs_size_t sim_size = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
// choose which operation to do // choose which operation to do
uint8_t op = TEST_PRNG(&prng) % 3; uint8_t op = TEST_PRNG(&prng) % 3;
// creating a new file? // creating a new file?
if (op == 0 || sim_size == 0) { if (op == 0 || sim_size == 0) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// associate each file with a prng that generates its contents // associate each file with a prng that generates its contents
uint32_t wprng = TEST_PRNG(&prng); uint32_t wprng = TEST_PRNG(&prng);
@@ -2488,7 +2488,7 @@ code = '''
// rename to // rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size; lfs_size_t j = TEST_PRNG(&prng) % sim_size;
lfs_size_t x = sim[j]; lfs_size_t x = sim[j];
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t y = TEST_PRNG(&prng) % N;
uint32_t wprng = sim_prngs[j]; uint32_t wprng = sim_prngs[j];
// update our sim // update our sim
+13 -13
View File
@@ -6651,7 +6651,7 @@ code = '''
[cases.test_forphans_orphanzombie_fuzz] [cases.test_forphans_orphanzombie_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than files to encourage file rewrites # do more ops than files to encourage file rewrites
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -6662,7 +6662,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -6684,18 +6684,18 @@ code = '''
lfs_size_t sim_file_count = 0; lfs_size_t sim_file_count = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
nonsense:; nonsense:;
// choose which operation to do // choose which operation to do
uint8_t op = TEST_PRNG(&prng) % 5; uint8_t op = TEST_PRNG(&prng) % 5;
// open a new file? // open a new file?
if (op == 0) { if (op == 0) {
if (sim_file_count >= ((N+DENSITY-1) / DENSITY)) { if (sim_file_count >= N) {
goto nonsense; goto nonsense;
} }
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// already exists? // already exists?
bool orphan = true; bool orphan = true;
@@ -6847,7 +6847,7 @@ code = '''
// rename to // rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size; lfs_size_t j = TEST_PRNG(&prng) % sim_size;
lfs_size_t x = sim[j]; lfs_size_t x = sim[j];
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t y = TEST_PRNG(&prng) % N;
uint32_t wprng = sim_prngs[j]; uint32_t wprng = sim_prngs[j];
// update our sim // update our sim
@@ -6989,7 +6989,7 @@ code = '''
[cases.test_forphans_orphanzombiedir_fuzz] [cases.test_forphans_orphanzombiedir_fuzz]
defines.N = [1, 2, 4, 8, 16, 32, 64] defines.N = [1, 2, 4, 8, 16, 32, 64]
# do more ops than files to encourage file rewrites # do more ops than files to encourage file rewrites
defines.DENSITY = 2 defines.OPS = '2*N'
defines.SIZE = [ defines.SIZE = [
'0', '0',
'FBUFFER_SIZE/2', 'FBUFFER_SIZE/2',
@@ -7000,7 +7000,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 'range(20)' defines.SEED = 'range(20)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -7023,18 +7023,18 @@ code = '''
lfs_size_t sim_file_count = 0; lfs_size_t sim_file_count = 0;
uint32_t prng = SEED; uint32_t prng = SEED;
for (lfs_size_t i = 0; i < N; i++) { for (lfs_size_t i = 0; i < OPS; i++) {
nonsense:; nonsense:;
// choose which operation to do // choose which operation to do
uint8_t op = TEST_PRNG(&prng) % 8; uint8_t op = TEST_PRNG(&prng) % 8;
// open a new file? // open a new file?
if (op == 0) { if (op == 0) {
if (sim_file_count >= ((N+DENSITY-1) / DENSITY)) { if (sim_file_count >= N) {
goto nonsense; goto nonsense;
} }
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// already exists? // already exists?
bool orphan = true; bool orphan = true;
@@ -7194,7 +7194,7 @@ code = '''
// rename to // rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size; lfs_size_t j = TEST_PRNG(&prng) % sim_size;
lfs_size_t x = sim[j]; lfs_size_t x = sim[j];
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t y = TEST_PRNG(&prng) % N;
uint32_t wprng = sim_prngs[j]; uint32_t wprng = sim_prngs[j];
bool isdir = sim_isdirs[j]; bool isdir = sim_isdirs[j];
@@ -7270,7 +7270,7 @@ code = '''
// toss a directory into the mix // toss a directory into the mix
} else if (op == 5) { } else if (op == 5) {
// choose a pseudo-random number // choose a pseudo-random number
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY); lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim, use negative numbers for dirs // insert into our sim, use negative numbers for dirs
for (lfs_size_t k = 0;; k++) { for (lfs_size_t k = 0;; k++) {
+4 -4
View File
@@ -16,7 +16,7 @@ after = [
# dirs + relocations may create problems for gstate # dirs + relocations may create problems for gstate
[cases.test_wl_dir_fuzz] [cases.test_wl_dir_fuzz]
defines.BLOCK_RECYCLES = [-1, 5, 1, 0] defines.BLOCK_RECYCLES = [-1, 5, 1, 0]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256]
defines.OPS = 1024 defines.OPS = 1024
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(10)' defines.SEED = 'range(10)'
@@ -177,7 +177,7 @@ defines.SIZE = [
] ]
defines.REMOUNT = [false, true] defines.REMOUNT = [false, true]
defines.SEED = 'range(10)' defines.SEED = 'range(10)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -387,7 +387,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 'range(10)' defines.SEED = 'range(10)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;
@@ -726,7 +726,7 @@ defines.SIZE = [
'4*BLOCK_SIZE', '4*BLOCK_SIZE',
] ]
defines.SEED = 'range(10)' defines.SEED = 'range(10)'
if = '(SIZE*N)/BLOCK_SIZE <= 32' if = '(SIZE*N)/BLOCK_SIZE <= 16'
code = ''' code = '''
lfs_t lfs; lfs_t lfs;
lfsr_format(&lfs, CFG) => 0; lfsr_format(&lfs, CFG) => 0;