From c1a7b885f2d75030eae5b3f1d10cebe201542ea2 Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Tue, 19 Sep 2017 18:44:53 +0200 Subject: [PATCH] test: call __real_write_page_desc() in tests and mock prepare_head() and write_page_desc() --- source/ftl/gc.c | 5 +++++ source/ftl/map.c | 10 ++++++++++ source/tests/Makefile | 5 +++++ source/tests/ftl/write_page_desc.c | 16 ++++++++-------- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/source/ftl/gc.c b/source/ftl/gc.c index 84db628..639e462 100644 --- a/source/ftl/gc.c +++ b/source/ftl/gc.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 + diff --git a/source/ftl/map.c b/source/ftl/map.c index 9f7ca04..1e39528 100644 --- a/source/ftl/map.c +++ b/source/ftl/map.c @@ -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 diff --git a/source/tests/Makefile b/source/tests/Makefile index 996773b..28eafb8 100644 --- a/source/tests/Makefile +++ b/source/tests/Makefile @@ -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 diff --git a/source/tests/ftl/write_page_desc.c b/source/tests/ftl/write_page_desc.c index 37520ac..46344c2 100644 --- a/source/tests/ftl/write_page_desc.c +++ b/source/tests/ftl/write_page_desc.c @@ -11,7 +11,7 @@ #include #include -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);