Adopted DENSITY param in test_dirs fuzz tests
Originally implemented in test_files, the DENSITY param sort of squishes the files/dirs together, so random fuzzing is more likely to end up with mkdir/rename collisions. These can be a bit more interesting for finding weird corner cases.
This commit is contained in:
+18
-10
@@ -1278,6 +1278,8 @@ code = '''
|
||||
|
||||
[cases.test_dirs_mkdir_fuzz]
|
||||
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
|
||||
# do more ops than dirs to encourage rename collisions
|
||||
defines.DENSITY = 2
|
||||
defines.PARENT = [false, true]
|
||||
defines.REMOUNT = [false, true]
|
||||
defines.SEED = 'range(20)'
|
||||
@@ -1304,8 +1306,8 @@ code = '''
|
||||
|
||||
uint32_t prng = SEED;
|
||||
for (lfs_size_t i = 0; i < N; i++) {
|
||||
// choose a pseudo-random number, truncate to 3 hexadecimals
|
||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
||||
// choose a pseudo-random number
|
||||
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||
|
||||
// insert into our sim
|
||||
for (lfs_size_t j = 0;; j++) {
|
||||
@@ -4201,6 +4203,8 @@ code = '''
|
||||
|
||||
[cases.test_dirs_rm_fuzz]
|
||||
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
|
||||
# do more ops than dirs to encourage rename collisions
|
||||
defines.DENSITY = 2
|
||||
defines.PARENT = [false, true]
|
||||
defines.REMOUNT = [false, true]
|
||||
defines.SEED = 'range(20)'
|
||||
@@ -4231,8 +4235,8 @@ code = '''
|
||||
uint8_t op = TEST_PRNG(&prng) % 2;
|
||||
|
||||
if (op == 0 || sim_size == 0) {
|
||||
// choose a pseudo-random number, truncate to 3 hexadecimals
|
||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
||||
// choose a pseudo-random number
|
||||
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||
// insert into our sim
|
||||
for (lfs_size_t j = 0;; j++) {
|
||||
if (j >= sim_size || sim[j] >= x) {
|
||||
@@ -6669,6 +6673,8 @@ code = '''
|
||||
|
||||
[cases.test_dirs_mv_fuzz]
|
||||
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
|
||||
# do more ops than dirs to encourage rename collisions
|
||||
defines.DENSITY = 2
|
||||
defines.PARENT = [false, true]
|
||||
defines.REMOUNT = [false, true]
|
||||
defines.SEED = 'range(20)'
|
||||
@@ -6699,8 +6705,8 @@ code = '''
|
||||
uint8_t op = TEST_PRNG(&prng) % 2;
|
||||
|
||||
if (op == 0 || sim_size == 0) {
|
||||
// choose a pseudo-random number, truncate to 3 hexadecimals
|
||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
||||
// choose a pseudo-random number
|
||||
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||
// insert into our sim
|
||||
for (lfs_size_t j = 0;; j++) {
|
||||
if (j >= sim_size || sim[j] >= x) {
|
||||
@@ -6729,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) % 0x1000;
|
||||
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||
for (lfs_size_t k = 0;; k++) {
|
||||
if (k >= sim_size || sim[k] >= y) {
|
||||
// already seen and not a noop?
|
||||
@@ -6814,6 +6820,8 @@ code = '''
|
||||
# test all of the operations together
|
||||
[cases.test_dirs_general_fuzz]
|
||||
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
|
||||
# do more ops than dirs to encourage rename collisions
|
||||
defines.DENSITY = 2
|
||||
defines.PARENT = [false, true]
|
||||
defines.REMOUNT = [false, true]
|
||||
defines.SEED = 'range(20)'
|
||||
@@ -6844,8 +6852,8 @@ code = '''
|
||||
uint8_t op = TEST_PRNG(&prng) % 3;
|
||||
|
||||
if (op == 0 || sim_size == 0) {
|
||||
// choose a pseudo-random number, truncate to 3 hexadecimals
|
||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
||||
// choose a pseudo-random number
|
||||
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||
// insert into our sim
|
||||
for (lfs_size_t j = 0;; j++) {
|
||||
if (j >= sim_size || sim[j] >= x) {
|
||||
@@ -6888,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) % 0x1000;
|
||||
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||
for (lfs_size_t k = 0;; k++) {
|
||||
if (k >= sim_size || sim[k] >= y) {
|
||||
// already seen and not a noop?
|
||||
|
||||
Reference in New Issue
Block a user