Ported tests to new framework
This mostly required names for each test case, declarations of previously-implicit variables since the new test framework is more conservative with what it declares (the small extra effort to add declarations is well worth the simplicity and improved readability), and tweaks to work with not-really-constant defines. Also renamed test_ -> test, replacing the old ./scripts/test.py, unfortunately git seems to have had a hard time with this.
This commit is contained in:
+74
-55
@@ -1,28 +1,30 @@
|
||||
# bad blocks with block cycles should be tested in test_relocations
|
||||
if = 'LFS_BLOCK_CYCLES == -1'
|
||||
if = '(int32_t)BLOCK_CYCLES == -1'
|
||||
|
||||
[[case]] # single bad blocks
|
||||
define.LFS_BLOCK_COUNT = 256 # small bd so test runs faster
|
||||
define.LFS_ERASE_CYCLES = 0xffffffff
|
||||
define.LFS_ERASE_VALUE = [0x00, 0xff, -1]
|
||||
define.LFS_BADBLOCK_BEHAVIOR = [
|
||||
[cases.single_bad_blocks]
|
||||
defines.BLOCK_COUNT = 256 # small bd so test runs faster
|
||||
defines.ERASE_CYCLES = 0xffffffff
|
||||
defines.ERASE_VALUE = [0x00, 0xff, -1]
|
||||
defines.BADBLOCK_BEHAVIOR = [
|
||||
'LFS_TESTBD_BADBLOCK_PROGERROR',
|
||||
'LFS_TESTBD_BADBLOCK_ERASEERROR',
|
||||
'LFS_TESTBD_BADBLOCK_READERROR',
|
||||
'LFS_TESTBD_BADBLOCK_PROGNOOP',
|
||||
'LFS_TESTBD_BADBLOCK_ERASENOOP',
|
||||
]
|
||||
define.NAMEMULT = 64
|
||||
define.FILEMULT = 1
|
||||
defines.NAMEMULT = 64
|
||||
defines.FILEMULT = 1
|
||||
code = '''
|
||||
for (lfs_block_t badblock = 2; badblock < LFS_BLOCK_COUNT; badblock++) {
|
||||
lfs_testbd_setwear(&cfg, badblock-1, 0) => 0;
|
||||
lfs_testbd_setwear(&cfg, badblock, 0xffffffff) => 0;
|
||||
|
||||
lfs_format(&lfs, &cfg) => 0;
|
||||
for (lfs_block_t badblock = 2; badblock < BLOCK_COUNT; badblock++) {
|
||||
lfs_testbd_setwear(cfg, badblock-1, 0) => 0;
|
||||
lfs_testbd_setwear(cfg, badblock, 0xffffffff) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
lfs_t lfs;
|
||||
lfs_format(&lfs, cfg) => 0;
|
||||
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
for (int i = 1; i < 10; i++) {
|
||||
uint8_t buffer[1024];
|
||||
for (int j = 0; j < NAMEMULT; j++) {
|
||||
buffer[j] = '0'+i;
|
||||
}
|
||||
@@ -34,10 +36,11 @@ code = '''
|
||||
buffer[j+NAMEMULT+1] = '0'+i;
|
||||
}
|
||||
buffer[2*NAMEMULT+1] = '\0';
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, (char*)buffer,
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => 0;
|
||||
|
||||
size = NAMEMULT;
|
||||
lfs_size_t size = NAMEMULT;
|
||||
for (int j = 0; j < i*FILEMULT; j++) {
|
||||
lfs_file_write(&lfs, &file, buffer, size) => size;
|
||||
}
|
||||
@@ -46,12 +49,14 @@ code = '''
|
||||
}
|
||||
lfs_unmount(&lfs) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
for (int i = 1; i < 10; i++) {
|
||||
uint8_t buffer[1024];
|
||||
for (int j = 0; j < NAMEMULT; j++) {
|
||||
buffer[j] = '0'+i;
|
||||
}
|
||||
buffer[NAMEMULT] = '\0';
|
||||
struct lfs_info info;
|
||||
lfs_stat(&lfs, (char*)buffer, &info) => 0;
|
||||
info.type => LFS_TYPE_DIR;
|
||||
|
||||
@@ -60,9 +65,10 @@ code = '''
|
||||
buffer[j+NAMEMULT+1] = '0'+i;
|
||||
}
|
||||
buffer[2*NAMEMULT+1] = '\0';
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, (char*)buffer, LFS_O_RDONLY) => 0;
|
||||
|
||||
size = NAMEMULT;
|
||||
int size = NAMEMULT;
|
||||
for (int j = 0; j < i*FILEMULT; j++) {
|
||||
uint8_t rbuffer[1024];
|
||||
lfs_file_read(&lfs, &file, rbuffer, size) => size;
|
||||
@@ -75,28 +81,30 @@ code = '''
|
||||
}
|
||||
'''
|
||||
|
||||
[[case]] # region corruption (causes cascading failures)
|
||||
define.LFS_BLOCK_COUNT = 256 # small bd so test runs faster
|
||||
define.LFS_ERASE_CYCLES = 0xffffffff
|
||||
define.LFS_ERASE_VALUE = [0x00, 0xff, -1]
|
||||
define.LFS_BADBLOCK_BEHAVIOR = [
|
||||
[cases.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]
|
||||
defines.BADBLOCK_BEHAVIOR = [
|
||||
'LFS_TESTBD_BADBLOCK_PROGERROR',
|
||||
'LFS_TESTBD_BADBLOCK_ERASEERROR',
|
||||
'LFS_TESTBD_BADBLOCK_READERROR',
|
||||
'LFS_TESTBD_BADBLOCK_PROGNOOP',
|
||||
'LFS_TESTBD_BADBLOCK_ERASENOOP',
|
||||
]
|
||||
define.NAMEMULT = 64
|
||||
define.FILEMULT = 1
|
||||
defines.NAMEMULT = 64
|
||||
defines.FILEMULT = 1
|
||||
code = '''
|
||||
for (lfs_block_t i = 0; i < (LFS_BLOCK_COUNT-2)/2; i++) {
|
||||
lfs_testbd_setwear(&cfg, i+2, 0xffffffff) => 0;
|
||||
for (lfs_block_t i = 0; i < (BLOCK_COUNT-2)/2; i++) {
|
||||
lfs_testbd_setwear(cfg, i+2, 0xffffffff) => 0;
|
||||
}
|
||||
|
||||
lfs_format(&lfs, &cfg) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
lfs_t lfs;
|
||||
lfs_format(&lfs, cfg) => 0;
|
||||
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
for (int i = 1; i < 10; i++) {
|
||||
uint8_t buffer[1024];
|
||||
for (int j = 0; j < NAMEMULT; j++) {
|
||||
buffer[j] = '0'+i;
|
||||
}
|
||||
@@ -108,10 +116,11 @@ code = '''
|
||||
buffer[j+NAMEMULT+1] = '0'+i;
|
||||
}
|
||||
buffer[2*NAMEMULT+1] = '\0';
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, (char*)buffer,
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => 0;
|
||||
|
||||
size = NAMEMULT;
|
||||
lfs_size_t size = NAMEMULT;
|
||||
for (int j = 0; j < i*FILEMULT; j++) {
|
||||
lfs_file_write(&lfs, &file, buffer, size) => size;
|
||||
}
|
||||
@@ -120,12 +129,14 @@ code = '''
|
||||
}
|
||||
lfs_unmount(&lfs) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
for (int i = 1; i < 10; i++) {
|
||||
uint8_t buffer[1024];
|
||||
for (int j = 0; j < NAMEMULT; j++) {
|
||||
buffer[j] = '0'+i;
|
||||
}
|
||||
buffer[NAMEMULT] = '\0';
|
||||
struct lfs_info info;
|
||||
lfs_stat(&lfs, (char*)buffer, &info) => 0;
|
||||
info.type => LFS_TYPE_DIR;
|
||||
|
||||
@@ -134,9 +145,10 @@ code = '''
|
||||
buffer[j+NAMEMULT+1] = '0'+i;
|
||||
}
|
||||
buffer[2*NAMEMULT+1] = '\0';
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, (char*)buffer, LFS_O_RDONLY) => 0;
|
||||
|
||||
size = NAMEMULT;
|
||||
lfs_size_t size = NAMEMULT;
|
||||
for (int j = 0; j < i*FILEMULT; j++) {
|
||||
uint8_t rbuffer[1024];
|
||||
lfs_file_read(&lfs, &file, rbuffer, size) => size;
|
||||
@@ -148,28 +160,30 @@ code = '''
|
||||
lfs_unmount(&lfs) => 0;
|
||||
'''
|
||||
|
||||
[[case]] # alternating corruption (causes cascading failures)
|
||||
define.LFS_BLOCK_COUNT = 256 # small bd so test runs faster
|
||||
define.LFS_ERASE_CYCLES = 0xffffffff
|
||||
define.LFS_ERASE_VALUE = [0x00, 0xff, -1]
|
||||
define.LFS_BADBLOCK_BEHAVIOR = [
|
||||
[cases.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]
|
||||
defines.BADBLOCK_BEHAVIOR = [
|
||||
'LFS_TESTBD_BADBLOCK_PROGERROR',
|
||||
'LFS_TESTBD_BADBLOCK_ERASEERROR',
|
||||
'LFS_TESTBD_BADBLOCK_READERROR',
|
||||
'LFS_TESTBD_BADBLOCK_PROGNOOP',
|
||||
'LFS_TESTBD_BADBLOCK_ERASENOOP',
|
||||
]
|
||||
define.NAMEMULT = 64
|
||||
define.FILEMULT = 1
|
||||
defines.NAMEMULT = 64
|
||||
defines.FILEMULT = 1
|
||||
code = '''
|
||||
for (lfs_block_t i = 0; i < (LFS_BLOCK_COUNT-2)/2; i++) {
|
||||
lfs_testbd_setwear(&cfg, (2*i) + 2, 0xffffffff) => 0;
|
||||
for (lfs_block_t i = 0; i < (BLOCK_COUNT-2)/2; i++) {
|
||||
lfs_testbd_setwear(cfg, (2*i) + 2, 0xffffffff) => 0;
|
||||
}
|
||||
|
||||
lfs_format(&lfs, &cfg) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
lfs_t lfs;
|
||||
lfs_format(&lfs, cfg) => 0;
|
||||
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
for (int i = 1; i < 10; i++) {
|
||||
uint8_t buffer[1024];
|
||||
for (int j = 0; j < NAMEMULT; j++) {
|
||||
buffer[j] = '0'+i;
|
||||
}
|
||||
@@ -181,10 +195,11 @@ code = '''
|
||||
buffer[j+NAMEMULT+1] = '0'+i;
|
||||
}
|
||||
buffer[2*NAMEMULT+1] = '\0';
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, (char*)buffer,
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => 0;
|
||||
|
||||
size = NAMEMULT;
|
||||
lfs_size_t size = NAMEMULT;
|
||||
for (int j = 0; j < i*FILEMULT; j++) {
|
||||
lfs_file_write(&lfs, &file, buffer, size) => size;
|
||||
}
|
||||
@@ -193,12 +208,14 @@ code = '''
|
||||
}
|
||||
lfs_unmount(&lfs) => 0;
|
||||
|
||||
lfs_mount(&lfs, &cfg) => 0;
|
||||
lfs_mount(&lfs, cfg) => 0;
|
||||
for (int i = 1; i < 10; i++) {
|
||||
uint8_t buffer[1024];
|
||||
for (int j = 0; j < NAMEMULT; j++) {
|
||||
buffer[j] = '0'+i;
|
||||
}
|
||||
buffer[NAMEMULT] = '\0';
|
||||
struct lfs_info info;
|
||||
lfs_stat(&lfs, (char*)buffer, &info) => 0;
|
||||
info.type => LFS_TYPE_DIR;
|
||||
|
||||
@@ -207,9 +224,10 @@ code = '''
|
||||
buffer[j+NAMEMULT+1] = '0'+i;
|
||||
}
|
||||
buffer[2*NAMEMULT+1] = '\0';
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, (char*)buffer, LFS_O_RDONLY) => 0;
|
||||
|
||||
size = NAMEMULT;
|
||||
lfs_size_t size = NAMEMULT;
|
||||
for (int j = 0; j < i*FILEMULT; j++) {
|
||||
uint8_t rbuffer[1024];
|
||||
lfs_file_read(&lfs, &file, rbuffer, size) => size;
|
||||
@@ -222,10 +240,10 @@ code = '''
|
||||
'''
|
||||
|
||||
# other corner cases
|
||||
[[case]] # bad superblocks (corrupt 1 or 0)
|
||||
define.LFS_ERASE_CYCLES = 0xffffffff
|
||||
define.LFS_ERASE_VALUE = [0x00, 0xff, -1]
|
||||
define.LFS_BADBLOCK_BEHAVIOR = [
|
||||
[cases.bad_superblocks] # (corrupt 1 or 0)
|
||||
defines.ERASE_CYCLES = 0xffffffff
|
||||
defines.ERASE_VALUE = [0x00, 0xff, -1]
|
||||
defines.BADBLOCK_BEHAVIOR = [
|
||||
'LFS_TESTBD_BADBLOCK_PROGERROR',
|
||||
'LFS_TESTBD_BADBLOCK_ERASEERROR',
|
||||
'LFS_TESTBD_BADBLOCK_READERROR',
|
||||
@@ -233,9 +251,10 @@ define.LFS_BADBLOCK_BEHAVIOR = [
|
||||
'LFS_TESTBD_BADBLOCK_ERASENOOP',
|
||||
]
|
||||
code = '''
|
||||
lfs_testbd_setwear(&cfg, 0, 0xffffffff) => 0;
|
||||
lfs_testbd_setwear(&cfg, 1, 0xffffffff) => 0;
|
||||
lfs_testbd_setwear(cfg, 0, 0xffffffff) => 0;
|
||||
lfs_testbd_setwear(cfg, 1, 0xffffffff) => 0;
|
||||
|
||||
lfs_format(&lfs, &cfg) => LFS_ERR_NOSPC;
|
||||
lfs_mount(&lfs, &cfg) => LFS_ERR_CORRUPT;
|
||||
lfs_t lfs;
|
||||
lfs_format(&lfs, cfg) => LFS_ERR_NOSPC;
|
||||
lfs_mount(&lfs, cfg) => LFS_ERR_CORRUPT;
|
||||
'''
|
||||
|
||||
Reference in New Issue
Block a user