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
+22 -22
View File
@@ -1277,14 +1277,14 @@ code = '''
'''
[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
defines.DENSITY = 2
defines.OPS = '2*N'
defines.PARENT = [false, true]
defines.REMOUNT = [false, true]
defines.SEED = 'range(20)'
# limit powerloss testing due to time
if = '!TEST_PLS || N <= 16'
if = '!TEST_PLS || N <= 8'
reentrant = true
code = '''
// format once per test
@@ -1305,9 +1305,9 @@ code = '''
lfs_size_t sim_size = 0;
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
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
lfs_size_t x = TEST_PRNG(&prng) % N;
// insert into our sim
for (lfs_size_t j = 0;; j++) {
@@ -4202,14 +4202,14 @@ code = '''
'''
[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
defines.DENSITY = 2
defines.OPS = '2*N'
defines.PARENT = [false, true]
defines.REMOUNT = [false, true]
defines.SEED = 'range(20)'
# limit powerloss testing due to time
if = '!TEST_PLS || N <= 16'
if = '!TEST_PLS || N <= 8'
reentrant = true
code = '''
// format once per test
@@ -4230,13 +4230,13 @@ code = '''
lfs_size_t sim_size = 0;
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
uint8_t op = TEST_PRNG(&prng) % 2;
if (op == 0 || sim_size == 0) {
// 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
for (lfs_size_t j = 0;; j++) {
if (j >= sim_size || sim[j] >= x) {
@@ -6672,14 +6672,14 @@ code = '''
'''
[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
defines.DENSITY = 2
defines.OPS = '2*N'
defines.PARENT = [false, true]
defines.REMOUNT = [false, true]
defines.SEED = 'range(20)'
# limit powerloss testing due to time
if = '!TEST_PLS || N <= 16'
if = '!TEST_PLS || N <= 8'
reentrant = true
code = '''
// format once per test
@@ -6700,13 +6700,13 @@ code = '''
lfs_size_t sim_size = 0;
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
uint8_t op = TEST_PRNG(&prng) % 2;
if (op == 0 || sim_size == 0) {
// 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
for (lfs_size_t j = 0;; j++) {
if (j >= sim_size || sim[j] >= x) {
@@ -6735,7 +6735,7 @@ code = '''
// number to rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size;
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++) {
if (k >= sim_size || sim[k] >= y) {
// already seen and not a noop?
@@ -6819,14 +6819,14 @@ code = '''
# test all of the operations together
[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
defines.DENSITY = 2
defines.OPS = '2*N'
defines.PARENT = [false, true]
defines.REMOUNT = [false, true]
defines.SEED = 'range(20)'
# limit powerloss testing due to time
if = '!TEST_PLS || N <= 16'
if = '!TEST_PLS || N <= 8'
reentrant = true
code = '''
// format once per test
@@ -6847,13 +6847,13 @@ code = '''
lfs_size_t sim_size = 0;
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
uint8_t op = TEST_PRNG(&prng) % 3;
if (op == 0 || sim_size == 0) {
// 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
for (lfs_size_t j = 0;; j++) {
if (j >= sim_size || sim[j] >= x) {
@@ -6896,7 +6896,7 @@ code = '''
// number to rename to
lfs_size_t j = TEST_PRNG(&prng) % sim_size;
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++) {
if (k >= sim_size || sim[k] >= y) {
// already seen and not a noop?