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]
|
[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, 512]
|
||||||
|
# do more ops than dirs to encourage rename collisions
|
||||||
|
defines.DENSITY = 2
|
||||||
defines.PARENT = [false, true]
|
defines.PARENT = [false, true]
|
||||||
defines.REMOUNT = [false, true]
|
defines.REMOUNT = [false, true]
|
||||||
defines.SEED = 'range(20)'
|
defines.SEED = 'range(20)'
|
||||||
@@ -1304,8 +1306,8 @@ code = '''
|
|||||||
|
|
||||||
uint32_t prng = SEED;
|
uint32_t prng = SEED;
|
||||||
for (lfs_size_t i = 0; i < N; i++) {
|
for (lfs_size_t i = 0; i < N; i++) {
|
||||||
// choose a pseudo-random number, truncate to 3 hexadecimals
|
// choose a pseudo-random number
|
||||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||||
|
|
||||||
// insert into our sim
|
// insert into our sim
|
||||||
for (lfs_size_t j = 0;; j++) {
|
for (lfs_size_t j = 0;; j++) {
|
||||||
@@ -4201,6 +4203,8 @@ 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, 512]
|
||||||
|
# do more ops than dirs to encourage rename collisions
|
||||||
|
defines.DENSITY = 2
|
||||||
defines.PARENT = [false, true]
|
defines.PARENT = [false, true]
|
||||||
defines.REMOUNT = [false, true]
|
defines.REMOUNT = [false, true]
|
||||||
defines.SEED = 'range(20)'
|
defines.SEED = 'range(20)'
|
||||||
@@ -4231,8 +4235,8 @@ code = '''
|
|||||||
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, truncate to 3 hexadecimals
|
// choose a pseudo-random number
|
||||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||||
// 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) {
|
||||||
@@ -6669,6 +6673,8 @@ 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, 512]
|
||||||
|
# do more ops than dirs to encourage rename collisions
|
||||||
|
defines.DENSITY = 2
|
||||||
defines.PARENT = [false, true]
|
defines.PARENT = [false, true]
|
||||||
defines.REMOUNT = [false, true]
|
defines.REMOUNT = [false, true]
|
||||||
defines.SEED = 'range(20)'
|
defines.SEED = 'range(20)'
|
||||||
@@ -6699,8 +6705,8 @@ code = '''
|
|||||||
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, truncate to 3 hexadecimals
|
// choose a pseudo-random number
|
||||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||||
// 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) {
|
||||||
@@ -6729,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) % 0x1000;
|
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||||
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?
|
||||||
@@ -6814,6 +6820,8 @@ code = '''
|
|||||||
# test all of the operations together
|
# test all of the operations together
|
||||||
[cases.test_dirs_general_fuzz]
|
[cases.test_dirs_general_fuzz]
|
||||||
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
|
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.PARENT = [false, true]
|
||||||
defines.REMOUNT = [false, true]
|
defines.REMOUNT = [false, true]
|
||||||
defines.SEED = 'range(20)'
|
defines.SEED = 'range(20)'
|
||||||
@@ -6844,8 +6852,8 @@ code = '''
|
|||||||
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, truncate to 3 hexadecimals
|
// choose a pseudo-random number
|
||||||
lfs_size_t x = TEST_PRNG(&prng) % 0x1000;
|
lfs_size_t x = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||||
// 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) {
|
||||||
@@ -6888,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) % 0x1000;
|
lfs_size_t y = TEST_PRNG(&prng) % ((N+DENSITY-1) / DENSITY);
|
||||||
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?
|
||||||
|
|||||||
Reference in New Issue
Block a user