Dropped namespacing of test cases

The main benefit is small test ids everywhere, though this is with the
downside of needing longer names to properly prefix and avoid
collisions. But this fits into the rest of the scripts with globally
unique names a bit better. This is a C project after all.

The other small benefit is test generators may have an easier time since
per-case symbols can expect to be unique.
This commit is contained in:
Christopher Haster
2022-09-16 20:40:44 -05:00
parent 1fcd82d5d8
commit 11d6d1251e
20 changed files with 386 additions and 311 deletions
+12 -12
View File
@@ -3,7 +3,7 @@
if = 'BLOCK_CYCLES == -1'
# parallel allocation test
[cases.parallel_allocation]
[cases.test_alloc_parallel]
defines.FILES = 3
defines.SIZE = '(((BLOCK_SIZE-8)*(BLOCK_COUNT-6)) / FILES)'
code = '''
@@ -52,7 +52,7 @@ code = '''
'''
# serial allocation test
[cases.serial_allocation]
[cases.test_alloc_serial]
defines.FILES = 3
defines.SIZE = '(((BLOCK_SIZE-8)*(BLOCK_COUNT-6)) / FILES)'
code = '''
@@ -99,7 +99,7 @@ code = '''
'''
# parallel allocation reuse test
[cases.parallel_allocation_reuse]
[cases.test_alloc_parallel_reuse]
defines.FILES = 3
defines.SIZE = '(((BLOCK_SIZE-8)*(BLOCK_COUNT-6)) / FILES)'
defines.CYCLES = [1, 10]
@@ -161,7 +161,7 @@ code = '''
'''
# serial allocation reuse test
[cases.serial_allocation_reuse]
[cases.test_alloc_serial_reuse]
defines.FILES = 3
defines.SIZE = '(((BLOCK_SIZE-8)*(BLOCK_COUNT-6)) / FILES)'
defines.CYCLES = [1, 10]
@@ -221,7 +221,7 @@ code = '''
'''
# exhaustion test
[cases.exhaustion]
[cases.test_alloc_exhaustion]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -261,7 +261,7 @@ code = '''
'''
# exhaustion wraparound test
[cases.exhaustion_wraparound]
[cases.test_alloc_exhaustion_wraparound]
defines.SIZE = '(((BLOCK_SIZE-8)*(BLOCK_COUNT-4)) / 3)'
code = '''
lfs_t lfs;
@@ -313,7 +313,7 @@ code = '''
'''
# dir exhaustion test
[cases.dir_exhaustion]
[cases.test_alloc_dir_exhaustion]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -367,7 +367,7 @@ code = '''
'''
# what if we have a bad block during an allocation scan?
[cases.bad_block_allocation]
[cases.test_alloc_bad_blocks]
in = "lfs.c"
defines.ERASE_CYCLES = 0xffffffff
defines.BADBLOCK_BEHAVIOR = 'LFS_TESTBD_BADBLOCK_READERROR'
@@ -459,7 +459,7 @@ code = '''
# should be removed and replaced with generalized tests.
# chained dir exhaustion test
[cases.chained_dir_exhaustion]
[cases.test_alloc_chained_dir_exhaustion]
if = 'BLOCK_SIZE == 512'
defines.BLOCK_COUNT = 1024
code = '''
@@ -537,7 +537,7 @@ code = '''
'''
# split dir test
[cases.split_dir]
[cases.test_alloc_split_dir]
if = 'BLOCK_SIZE == 512'
defines.BLOCK_COUNT = 1024
code = '''
@@ -586,7 +586,7 @@ code = '''
'''
# outdated lookahead test
[cases.outdated_lookahead]
[cases.test_alloc_outdated_lookahead]
if = 'BLOCK_SIZE == 512'
defines.BLOCK_COUNT = 1024
code = '''
@@ -654,7 +654,7 @@ code = '''
'''
# outdated lookahead and split dir test
[cases.outdated_lookahead_split_dir]
[cases.test_alloc_outdated_lookahead_split_dir]
if = 'BLOCK_SIZE == 512'
defines.BLOCK_COUNT = 1024
code = '''
+4 -4
View File
@@ -1,4 +1,4 @@
[cases.get_set_attrs]
[cases.test_attrs_get_set]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -79,7 +79,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.get_set_root_attrs]
[cases.test_attrs_get_set_root]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -159,7 +159,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.get_set_file_attrs]
[cases.test_attrs_get_set_file]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -269,7 +269,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.deferred_file_attrs]
[cases.test_attrs_deferred_file]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
+4 -4
View File
@@ -1,7 +1,7 @@
# bad blocks with block cycles should be tested in test_relocations
if = '(int32_t)BLOCK_CYCLES == -1'
[cases.single_bad_blocks]
[cases.test_badblocks_single]
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.ERASE_CYCLES = 0xffffffff
defines.ERASE_VALUE = [0x00, 0xff, -1]
@@ -81,7 +81,7 @@ code = '''
}
'''
[cases.region_corruption] # (causes cascading failures)
[cases.test_badblocks_region_corruption] # (causes cascading failures)
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.ERASE_CYCLES = 0xffffffff
defines.ERASE_VALUE = [0x00, 0xff, -1]
@@ -160,7 +160,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.alternating_corruption] # (causes cascading failures)
[cases.test_badblocks_alternating_corruption] # (causes cascading failures)
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.ERASE_CYCLES = 0xffffffff
defines.ERASE_VALUE = [0x00, 0xff, -1]
@@ -240,7 +240,7 @@ code = '''
'''
# other corner cases
[cases.bad_superblocks] # (corrupt 1 or 0)
[cases.test_badblocks_superblocks] # (corrupt 1 or 0)
defines.ERASE_CYCLES = 0xffffffff
defines.ERASE_VALUE = [0x00, 0xff, -1]
defines.BADBLOCK_BEHAVIOR = [
+5 -5
View File
@@ -4,7 +4,7 @@
# Note we use 251, a prime, in places to avoid aliasing powers of 2.
#
[cases.one_block]
[cases.test_bd_one_block]
defines.READ = ['READ_SIZE', 'BLOCK_SIZE']
defines.PROG = ['PROG_SIZE', 'BLOCK_SIZE']
code = '''
@@ -29,7 +29,7 @@ code = '''
}
'''
[cases.two_block]
[cases.test_bd_two_block]
defines.READ = ['READ_SIZE', 'BLOCK_SIZE']
defines.PROG = ['PROG_SIZE', 'BLOCK_SIZE']
code = '''
@@ -87,7 +87,7 @@ code = '''
}
'''
[cases.last_block]
[cases.test_bd_last_block]
defines.READ = ['READ_SIZE', 'BLOCK_SIZE']
defines.PROG = ['PROG_SIZE', 'BLOCK_SIZE']
code = '''
@@ -145,7 +145,7 @@ code = '''
}
'''
[cases.powers_of_two]
[cases.test_bd_powers_of_two]
defines.READ = ['READ_SIZE', 'BLOCK_SIZE']
defines.PROG = ['PROG_SIZE', 'BLOCK_SIZE']
code = '''
@@ -191,7 +191,7 @@ code = '''
}
'''
[cases.fibonacci]
[cases.test_bd_fibonacci]
defines.READ = ['READ_SIZE', 'BLOCK_SIZE']
defines.PROG = ['PROG_SIZE', 'BLOCK_SIZE']
code = '''
+14 -14
View File
@@ -1,4 +1,4 @@
[cases.root]
[cases.test_dirs_root]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -17,7 +17,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.many_dir_creation]
[cases.test_dirs_many_creation]
defines.N = 'range(3, 100, 3)'
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -54,7 +54,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.many_dir_removal]
[cases.test_dirs_many_removal]
defines.N = 'range(3, 100, 11)'
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -111,7 +111,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.many_dir_rename]
[cases.test_dirs_many_rename]
defines.N = 'range(3, 100, 11)'
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -177,7 +177,7 @@ code = '''
lfs_unmount(&lfs);
'''
[cases.reentrant_many_dir]
[cases.test_dirs_many_reentrant]
defines.N = [5, 11]
reentrant = true
code = '''
@@ -265,7 +265,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.file_creation]
[cases.test_dirs_file_creation]
defines.N = 'range(3, 100, 11)'
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -305,7 +305,7 @@ code = '''
lfs_unmount(&lfs);
'''
[cases.file_removal]
[cases.test_dirs_file_removal]
defines.N = 'range(3, 100, 11)'
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -365,7 +365,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.file_rename]
[cases.test_dirs_file_rename]
defines.N = 'range(3, 100, 11)'
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -434,7 +434,7 @@ code = '''
lfs_unmount(&lfs);
'''
[cases.reentrant_files]
[cases.test_dirs_file_reentrant]
defines.N = [5, 25]
if = 'N < BLOCK_COUNT/2'
reentrant = true
@@ -524,7 +524,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.nested_dirs]
[cases.test_dirs_nested]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -652,7 +652,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.recursive_remove]
[cases.test_dirs_recursive_remove]
defines.N = [10, 100]
if = 'N < BLOCK_COUNT/2'
code = '''
@@ -716,7 +716,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.other_errors]
[cases.test_dirs_other_errors]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -794,7 +794,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.directory_seek]
[cases.test_dirs_seek]
defines.COUNT = [4, 128, 132]
if = 'COUNT < BLOCK_COUNT/2'
code = '''
@@ -862,7 +862,7 @@ code = '''
}
'''
[cases.root_seek]
[cases.test_dirs_toot_seek]
defines.COUNT = [4, 128, 132]
if = 'COUNT < BLOCK_COUNT/2'
code = '''
+8 -8
View File
@@ -5,7 +5,7 @@
defines.CACHE_SIZE = 512
if = 'CACHE_SIZE % PROG_SIZE == 0 && CACHE_SIZE == 512'
[cases.entry_grow]
[cases.test_entries_grow]
code = '''
uint8_t wbuffer[1024];
uint8_t rbuffer[1024];
@@ -98,7 +98,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.entry_shrink]
[cases.test_entries_shrink]
code = '''
uint8_t wbuffer[1024];
uint8_t rbuffer[1024];
@@ -191,7 +191,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.entry_spill]
[cases.test_entries_spill]
code = '''
uint8_t wbuffer[1024];
uint8_t rbuffer[1024];
@@ -268,7 +268,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.entry_push_spill]
[cases.test_entries_push_spill]
code = '''
uint8_t wbuffer[1024];
uint8_t rbuffer[1024];
@@ -361,7 +361,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.entry_push_spill_two]
[cases.test_entries_push_spill_two]
code = '''
uint8_t wbuffer[1024];
uint8_t rbuffer[1024];
@@ -469,7 +469,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.entry_drop]
[cases.test_entries_drop]
code = '''
uint8_t wbuffer[1024];
uint8_t rbuffer[1024];
@@ -572,7 +572,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.create_too_big]
[cases.test_entries_create_too_big]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -600,7 +600,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.resize_too_big]
[cases.test_entries_resize_too_big]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
+8 -8
View File
@@ -3,7 +3,7 @@
# invalid pointer tests (outside of block_count)
[cases.invalid_tail_pointer]
[cases.test_evil_invalid_tail_pointer]
defines.TAIL_TYPE = ['LFS_TYPE_HARDTAIL', 'LFS_TYPE_SOFTTAIL']
defines.INVALSET = [0x3, 0x1, 0x2]
in = "lfs.c"
@@ -27,7 +27,7 @@ code = '''
lfs_mount(&lfs, cfg) => LFS_ERR_CORRUPT;
'''
[cases.invalid_dir_pointer]
[cases.test_evil_invalid_dir_pointer]
defines.INVALSET = [0x3, 0x1, 0x2]
in = "lfs.c"
code = '''
@@ -78,7 +78,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.invalid_file_pointer]
[cases.test_evil_invalid_file_pointer]
in = "lfs.c"
defines.SIZE = [10, 1000, 100000] # faked file size
code = '''
@@ -130,7 +130,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.invalid_ctz_pointer] # invalid pointer in CTZ skip-list test
[cases.test_evil_invalid_ctz_pointer] # invalid pointer in CTZ skip-list test
defines.SIZE = ['2*BLOCK_SIZE', '3*BLOCK_SIZE', '4*BLOCK_SIZE']
in = "lfs.c"
code = '''
@@ -196,7 +196,7 @@ code = '''
'''
[cases.invalid_gstate_pointer]
[cases.test_evil_invalid_gstate_pointer]
defines.INVALSET = [0x3, 0x1, 0x2]
in = "lfs.c"
code = '''
@@ -224,7 +224,7 @@ code = '''
# cycle detection/recovery tests
[cases.mdir_loop] # metadata-pair threaded-list loop test
[cases.test_evil_mdir_loop] # metadata-pair threaded-list loop test
in = "lfs.c"
code = '''
// create littlefs
@@ -244,7 +244,7 @@ code = '''
lfs_mount(&lfs, cfg) => LFS_ERR_CORRUPT;
'''
[cases.mdir_loop_2] # metadata-pair threaded-list 2-length loop test
[cases.test_evil_mdir_loop2] # metadata-pair threaded-list 2-length loop test
in = "lfs.c"
code = '''
// create littlefs with child dir
@@ -275,7 +275,7 @@ code = '''
lfs_mount(&lfs, cfg) => LFS_ERR_CORRUPT;
'''
[cases.mdir_loop_child] # metadata-pair threaded-list 1-length child loop test
[cases.test_evil_mdir_loop_child] # metadata-pair threaded-list 1-length child loop test
in = "lfs.c"
code = '''
// create littlefs with child dir
+5 -5
View File
@@ -1,5 +1,5 @@
# test running a filesystem to exhaustion
[cases.exhaustion]
[cases.test_exhaustion_normal]
defines.ERASE_CYCLES = 10
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.BLOCK_CYCLES = 'ERASE_CYCLES / 2'
@@ -92,7 +92,7 @@ exhausted:
# test running a filesystem to exhaustion
# which also requires expanding superblocks
[cases.exhaustion_superblocks]
[cases.test_exhaustion_superblocks]
defines.ERASE_CYCLES = 10
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.BLOCK_CYCLES = 'ERASE_CYCLES / 2'
@@ -186,7 +186,7 @@ exhausted:
# check for.
# wear-level test running a filesystem to exhaustion
[cases.wear_leveling_exhaustion]
[cases.test_exhuastion_wear_leveling]
defines.ERASE_CYCLES = 20
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.BLOCK_CYCLES = 'ERASE_CYCLES / 2'
@@ -286,7 +286,7 @@ exhausted:
'''
# wear-level test + expanding superblock
[cases.wear_leveling_exhaustion_superblocks]
[cases.test_exhaustion_wear_leveling_superblocks]
defines.ERASE_CYCLES = 20
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.BLOCK_CYCLES = 'ERASE_CYCLES / 2'
@@ -383,7 +383,7 @@ exhausted:
'''
# test that we wear blocks roughly evenly
[cases.wear_leveling_distribution]
[cases.test_exhaustion_wear_distribution]
defines.ERASE_CYCLES = 0xffffffff
defines.BLOCK_COUNT = 256 # small bd so test runs faster
defines.BLOCK_CYCLES = [5, 4, 3, 2, 1]
+10 -10
View File
@@ -1,5 +1,5 @@
[cases.simple_file]
[cases.test_files_simple]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -22,7 +22,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.large_files]
[cases.test_files_large]
defines.SIZE = [32, 8192, 262144, 0, 7, 8193]
defines.CHUNKSIZE = [31, 16, 33, 1, 1023]
code = '''
@@ -63,7 +63,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.rewriting_files]
[cases.test_files_rewrite]
defines.SIZE1 = [32, 8192, 131072, 0, 7, 8193]
defines.SIZE2 = [32, 8192, 131072, 0, 7, 8193]
defines.CHUNKSIZE = [31, 16, 1]
@@ -148,7 +148,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.appending_files]
[cases.test_files_append]
defines.SIZE1 = [32, 8192, 131072, 0, 7, 8193]
defines.SIZE2 = [32, 8192, 131072, 0, 7, 8193]
defines.CHUNKSIZE = [31, 16, 1]
@@ -228,7 +228,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.truncating_files]
[cases.test_files_truncate]
defines.SIZE1 = [32, 8192, 131072, 0, 7, 8193]
defines.SIZE2 = [32, 8192, 131072, 0, 7, 8193]
defines.CHUNKSIZE = [31, 16, 1]
@@ -300,7 +300,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.reentrant_file_writing]
[cases.test_files_reentrant_write]
defines.SIZE = [32, 0, 7, 2049]
defines.CHUNKSIZE = [31, 16, 65]
reentrant = true
@@ -351,7 +351,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.reentrant_file_writing_sync]
[cases.test_files_reentrant_write_sync]
defines = [
# append (O(n))
{MODE='LFS_O_APPEND', SIZE=[32, 0, 7, 2049], CHUNKSIZE=[31, 16, 65]},
@@ -424,7 +424,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.many_files]
[cases.test_files_many]
defines.N = 300
code = '''
lfs_t lfs;
@@ -452,7 +452,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.many_files_power_cycle]
[cases.test_files_many_power_cycle]
defines.N = 300
code = '''
lfs_t lfs;
@@ -482,7 +482,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.many_files_power_loss]
[cases.test_files_many_power_loss]
defines.N = 300
reentrant = true
code = '''
+4 -4
View File
@@ -1,5 +1,5 @@
[cases.interspersed_files]
[cases.test_interspersed_files]
defines.SIZE = [10, 100]
defines.FILES = [4, 10, 26]
code = '''
@@ -66,7 +66,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.interspersed_remove_files]
[cases.test_interspersed_remove_files]
defines.SIZE = [10, 100]
defines.FILES = [4, 10, 26]
code = '''
@@ -127,7 +127,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.remove_inconveniently]
[cases.test_interspersed_remove_inconveniently]
defines.SIZE = [10, 100]
code = '''
lfs_t lfs;
@@ -191,7 +191,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.reentrant_interspersed_files]
[cases.test_interspersed_reentrant_files]
defines.SIZE = [10, 100]
defines.FILES = [4, 10, 26]
reentrant = true
+17 -17
View File
@@ -1,4 +1,4 @@
[cases.move_file]
[cases.test_move_file]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -60,7 +60,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.nop_move] # yes this is legal
[cases.test_move_nop] # yes this is legal
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -78,7 +78,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_file_corrupt_source]
[cases.test_move_file_corrupt_source]
in = "lfs.c"
code = '''
lfs_t lfs;
@@ -158,7 +158,7 @@ code = '''
'''
# move file corrupt source and dest
[cases.move_file_corrupt_source_dest]
[cases.test_move_file_corrupt_source_dest]
in = "lfs.c"
if = 'PROG_SIZE <= 0x3fe' # only works with one crc per commit
code = '''
@@ -254,7 +254,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_file_after_corrupt]
[cases.test_move_file_after_corrupt]
in = "lfs.c"
if = 'PROG_SIZE <= 0x3fe' # only works with one crc per commit
code = '''
@@ -355,7 +355,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.reentrant_move_file]
[cases.test_move_reentrant_file]
reentrant = true
code = '''
lfs_t lfs;
@@ -472,7 +472,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_dir]
[cases.test_move_dir]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -540,7 +540,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_dir_corrupt_source]
[cases.test_move_dir_corrupt_source]
in = "lfs.c"
code = '''
lfs_t lfs;
@@ -626,7 +626,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_dir_corrupt_source_dest]
[cases.test_move_dir_corrupt_source_dest]
in = "lfs.c"
if = 'PROG_SIZE <= 0x3fe' # only works with one crc per commit
code = '''
@@ -729,7 +729,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_dir_after_corrupt]
[cases.test_move_dir_after_corrupt]
in = "lfs.c"
if = 'PROG_SIZE <= 0x3fe' # only works with one crc per commit
code = '''
@@ -837,7 +837,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.reentrant_move_dir]
[cases.test_reentrant_dir]
reentrant = true
code = '''
lfs_t lfs;
@@ -958,7 +958,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.move_state_stealing]
[cases.test_move_state_stealing]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -1028,7 +1028,7 @@ code = '''
# Other specific corner cases
# create + delete in same commit with neighbors
[cases.create_delete_same]
[cases.test_move_create_delete_same]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -1179,7 +1179,7 @@ code = '''
'''
# create + delete + delete in same commit with neighbors
[cases.create_delete_delete_same]
[cases.test_move_create_delete_delete_same]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -1341,7 +1341,7 @@ code = '''
'''
# create + delete in different dirs with neighbors
[cases.create_delete_different]
[cases.test_move_create_delete_different]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -1584,7 +1584,7 @@ code = '''
'''
# move fix in relocation
[cases.move_fix_relocation]
[cases.test_move_fix_relocation]
in = "lfs.c"
defines.RELOCATIONS = 'range(4)'
defines.ERASE_CYCLES = 0xffffffff
@@ -1729,7 +1729,7 @@ code = '''
'''
# move fix in relocation with predecessor
[cases.move_fix_relocation_predecessor]
[cases.test_move_fix_relocation_predecessor]
in = "lfs.c"
defines.RELOCATIONS = 'range(8)'
defines.ERASE_CYCLES = 0xffffffff
+2 -2
View File
@@ -1,4 +1,4 @@
[cases.orphan]
[cases.test_orphans_normal]
in = "lfs.c"
if = 'PROG_SIZE <= 0x3fe' # only works with one crc per commit
code = '''
@@ -60,7 +60,7 @@ code = '''
'''
# reentrant testing for orphans, basically just spam mkdir/remove
[cases.reentrant_orphan]
[cases.test_orphans_reentrant]
reentrant = true
# TODO fix this case, caused by non-DAG trees
if = '!(DEPTH == 3 && CACHE_SIZE != 64)'
+13 -13
View File
@@ -1,6 +1,6 @@
# simple path test
[cases.path]
[cases.test_paths_normal]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -25,7 +25,7 @@ code = '''
'''
# redundant slashes
[cases.redundant_slashes]
[cases.test_paths_redundant_slashes]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -52,7 +52,7 @@ code = '''
'''
# dot path test
[cases.dot_path]
[cases.test_paths_dot]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -81,7 +81,7 @@ code = '''
'''
# dot dot path test
[cases.dot_dot_path]
[cases.test_paths_dot_dot]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -114,7 +114,7 @@ code = '''
'''
# trailing dot path test
[cases.trailing_dot_path]
[cases.test_paths_trailing_dot]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -139,7 +139,7 @@ code = '''
'''
# leading dot path test
[cases.leading_dot_path]
[cases.test_paths_leading_dot]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -154,7 +154,7 @@ code = '''
'''
# root dot dot path test
[cases.root_dot_dot_path]
[cases.test_paths_root_dot_dot]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -181,7 +181,7 @@ code = '''
'''
# invalid path tests
[cases.invalid_path]
[cases.test_paths_invalid]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg);
@@ -206,7 +206,7 @@ code = '''
'''
# root operations
[cases.root]
[cases.test_paths_root]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -226,7 +226,7 @@ code = '''
'''
# root representations
[cases.root_reprs]
[cases.test_paths_root_reprs]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -254,7 +254,7 @@ code = '''
'''
# superblock conflict test
[cases.superblock_conflict]
[cases.test_paths_superblock_conflict]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -273,7 +273,7 @@ code = '''
'''
# max path test
[cases.max_path]
[cases.test_paths_max]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -301,7 +301,7 @@ code = '''
'''
# really big path test
[cases.really_big_path]
[cases.test_paths_really_big]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
+4 -4
View File
@@ -1,5 +1,5 @@
# specific corner cases worth explicitly testing for
[cases.dangling_split_dir]
[cases.test_relocations_dangling_split_dir]
defines.ITERATIONS = 20
defines.COUNT = 10
defines.BLOCK_CYCLES = [8, 1]
@@ -77,7 +77,7 @@ code = '''
lfs_unmount(&lfs) => 0;
'''
[cases.outdated_head]
[cases.test_relocations_outdated_head]
defines.ITERATIONS = 20
defines.COUNT = 10
defines.BLOCK_CYCLES = [8, 1]
@@ -168,7 +168,7 @@ code = '''
# reentrant testing for relocations, this is the same as the
# orphan testing, except here we also set block_cycles so that
# almost every tree operation needs a relocation
[cases.reentrant_relocations]
[cases.test_relocations_reentrant]
reentrant = true
# TODO fix this case, caused by non-DAG trees
if = '!(DEPTH == 3 && CACHE_SIZE != 64)'
@@ -236,7 +236,7 @@ code = '''
'''
# reentrant testing for relocations, but now with random renames!
[cases.reentrant_relocations_renames]
[cases.test_relocations_reentrant_renames]
reentrant = true
# TODO fix this case, caused by non-DAG trees
if = '!(DEPTH == 3 && CACHE_SIZE != 64)'
+6 -6
View File
@@ -1,6 +1,6 @@
# simple file seek
[cases.seek]
[cases.test_seek_read]
defines = [
{COUNT=132, SKIP=4},
{COUNT=132, SKIP=128},
@@ -73,7 +73,7 @@ code = '''
'''
# simple file seek and write
[cases.seek_write]
[cases.test_seek_write]
defines = [
{COUNT=132, SKIP=4},
{COUNT=132, SKIP=128},
@@ -138,7 +138,7 @@ code = '''
'''
# boundary seek and writes
[cases.boundary_seek_write]
[cases.test_seek_boundary_write]
defines.COUNT = 132
code = '''
lfs_t lfs;
@@ -195,7 +195,7 @@ code = '''
'''
# out of bounds seek
[cases.out_of_bounds_seek]
[cases.test_seek_out_of_bounds]
defines = [
{COUNT=132, SKIP=4},
{COUNT=132, SKIP=128},
@@ -254,7 +254,7 @@ code = '''
'''
# inline write and seek
[cases.inline_write_seek]
[cases.test_seek_inline_write]
defines.SIZE = [2, 4, 128, 132]
code = '''
lfs_t lfs;
@@ -325,7 +325,7 @@ code = '''
'''
# file seek and write with power-loss
[cases.reentrant_seek_write]
[cases.test_seek_reentrant_write]
# must be power-of-2 for quadratic probing to be exhaustive
defines.COUNT = [4, 64, 128]
reentrant = true
+7 -7
View File
@@ -1,12 +1,12 @@
# simple formatting test
[cases.format]
[cases.test_superblocks_format]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
'''
# mount/unmount
[cases.mount]
[cases.test_superblocks_mount]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -15,7 +15,7 @@ code = '''
'''
# reentrant format
[cases.reentrant_format]
[cases.test_superblocks_reentrant_format]
reentrant = true
code = '''
lfs_t lfs;
@@ -28,14 +28,14 @@ code = '''
'''
# invalid mount
[cases.invalid_mount]
[cases.test_superblocks_invalid_mount]
code = '''
lfs_t lfs;
lfs_mount(&lfs, cfg) => LFS_ERR_CORRUPT;
'''
# expanding superblock
[cases.expanding_superblock]
[cases.test_superblocks_expand]
defines.LFS_BLOCK_CYCLES = [32, 33, 1]
defines.N = [10, 100, 1000]
code = '''
@@ -69,7 +69,7 @@ code = '''
'''
# expanding superblock with power cycle
[cases.expanding_superblock_power_cycle]
[cases.test_superblocks_expand_power_cycle]
defines.LFS_BLOCK_CYCLES = [32, 33, 1]
defines.N = [10, 100, 1000]
code = '''
@@ -107,7 +107,7 @@ code = '''
'''
# reentrant expanding superblock
[cases.reentrant_expanding_superblock]
[cases.test_superblocks_reentrant_expand]
defines.LFS_BLOCK_CYCLES = [2, 1]
defines.N = 24
reentrant = true
+7 -7
View File
@@ -1,5 +1,5 @@
# simple truncate
[cases.truncate]
[cases.test_truncate_simple]
defines.MEDIUMSIZE = [32, 2048]
defines.LARGESIZE = 8192
code = '''
@@ -47,7 +47,7 @@ code = '''
'''
# truncate and read
[cases.truncate_read]
[cases.test_truncate_read]
defines.MEDIUMSIZE = [32, 2048]
defines.LARGESIZE = 8192
code = '''
@@ -102,7 +102,7 @@ code = '''
'''
# write, truncate, and read
[cases.write_truncate_read]
[cases.test_truncate_write_read]
code = '''
lfs_t lfs;
lfs_format(&lfs, cfg) => 0;
@@ -158,7 +158,7 @@ code = '''
'''
# truncate and write
[cases.truncate_write]
[cases.test_truncate_write]
defines.MEDIUMSIZE = [32, 2048]
defines.LARGESIZE = 8192
code = '''
@@ -213,7 +213,7 @@ code = '''
'''
# truncate write under powerloss
[cases.reentrant_truncate_write]
[cases.test_truncate_reentrant_write]
defines.SMALLSIZE = [4, 512]
defines.MEDIUMSIZE = [32, 1024]
defines.LARGESIZE = 2048
@@ -284,7 +284,7 @@ code = '''
'''
# more aggressive general truncation tests
[cases.aggressive_truncate]
[cases.test_truncate_aggressive]
defines.CONFIG = 'range(6)'
defines.SMALLSIZE = 32
defines.MEDIUMSIZE = 2048
@@ -428,7 +428,7 @@ code = '''
'''
# noop truncate
[cases.nop_truncate]
[cases.test_truncate_nop]
defines.MEDIUMSIZE = [32, 2048]
code = '''
lfs_t lfs;