test: call __real_write_page_desc() in tests and mock prepare_head() and write_page_desc()

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent d2aa954573
commit c1a7b885f2
  1. 5
      source/ftl/gc.c
  2. 10
      source/ftl/map.c
  3. 5
      source/tests/Makefile
  4. 16
      source/tests/ftl/write_page_desc.c

@ -114,6 +114,11 @@ static int free_tail(struct ftl_map *map)
* nothing to be done. Otherwise, we free the tail if necessary and erase the
* block for writing.
*/
#ifdef prepare_head
#undef prepare_head
#define prepare_head __real_prepare_head
#endif
int prepare_head(struct ftl_map *map)
{
size_t log2_pages_per_block = map->log2_pages_per_group +

@ -112,6 +112,11 @@ int read_page_desc(struct ftl_map *map,
/* Writes the page descriptor to the footer of the current page group and
* increments the head to point to the next free user page.
*/
#ifdef write_page_desc
#undef write_page_desc
#define write_page_desc __real_write_page_desc
#endif
int write_page_desc(struct ftl_map *map,
struct ftl_page_desc *page_desc)
{
@ -151,6 +156,11 @@ int write_page_desc(struct ftl_map *map,
return 0;
}
#ifdef write_page_desc
#undef write_page_desc
#define write_page_desc __wrap_write_page_desc
#endif
/* Prepares the head for writing, writes the user page to the current available
* user page and finally writes the page descriptor to the footer of the page
* group, whereupon the head is incremented to point to the next available user

@ -1,10 +1,15 @@
test-obj-y += source/tests/main.o
test-obj-y += source/tests/ftl/mock.o
test-obj-y += source/tests/ftl/find_block_div.o
test-obj-y += source/tests/ftl/next_upage.o
test-obj-y += source/tests/ftl/read_page_group.o
test-obj-y += source/tests/ftl/read_page_desc.o
test-obj-y += source/tests/ftl/write_page_desc.o
test-obj-y += source/tests/ftl/write_upage.o
TEST_CFLAGS += -Dflash_read=__wrap_flash_read
TEST_CFLAGS += -Dflash_write=__wrap_flash_write
TEST_CFLAGS += -Dflash_is_erased=__wrap_flash_is_erased
TEST_CFLAGS += -Dprepare_head=__wrap_prepare_head
TEST_CFLAGS += -Dwrite_page_desc=__wrap_write_page_desc

@ -11,7 +11,7 @@
#include <ftl.h>
#include <macros.h>
int write_page_desc(struct ftl_map *map,
int __real_write_page_desc(struct ftl_map *map,
struct ftl_page_desc *page_desc);
static int test_setup(void **state)
@ -59,7 +59,7 @@ static void test_write_page_desc1(void **state)
map->head = 0;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 0);
@ -86,7 +86,7 @@ static void test_write_page_desc2(void **state)
map->head = 14;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 14);
@ -113,7 +113,7 @@ static void test_write_page_desc3(void **state)
map->head = 16;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 16);
@ -140,7 +140,7 @@ static void test_write_page_desc4(void **state)
map->head = 30;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 30);
@ -167,7 +167,7 @@ static void test_write_page_desc5(void **state)
map->head = 32;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 32);
@ -194,7 +194,7 @@ static void test_epoch_wraparound(void **state)
map->head = 62;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 62);
@ -228,7 +228,7 @@ static void test_group_header(void **state)
map->head = 0;
map->epoch = 0;
ret = write_page_desc(map, &page_desc);
ret = __real_write_page_desc(map, &page_desc);
assert_int_equal(ret, 0);
assert_int_equal(map->root, 0);

Loading…
Cancel
Save