diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index d8b2b03705c7bcc54b6e621d9224a8df72501df8..52888f2a4ad70bcebd8ea374f73cef34dab68a8b 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -130,7 +130,7 @@ add_executable(say.test say.c) target_link_libraries(say.test core unit) include_directories(${PROJECT_SOURCE_DIR}/src/box) -add_executable(vy_mem.test vy_mem.c) +add_executable(vy_mem.test vy_mem.c vy_iterators_helper.c) target_link_libraries(vy_mem.test box unit) add_executable(column_mask.test column_mask.c) diff --git a/test/unit/vy_iterators_helper.c b/test/unit/vy_iterators_helper.c index ef1e6d8e83bd60402985110fd2d14ceae1c0d487..c36c8fb7e9bce250925ae5fa0785f9d946c44db3 100644 --- a/test/unit/vy_iterators_helper.c +++ b/test/unit/vy_iterators_helper.c @@ -80,7 +80,7 @@ vy_new_simple_stmt(struct tuple_format *format, return ret; } -void +const struct tuple * vy_mem_insert_template(struct vy_mem *mem, const struct vy_stmt_template *templ) { struct tuple *stmt; @@ -99,6 +99,7 @@ vy_mem_insert_template(struct vy_mem *mem, const struct vy_stmt_template *templ) vy_mem_insert_upsert(mem, region_stmt); else vy_mem_insert(mem, region_stmt); + return region_stmt; } void diff --git a/test/unit/vy_iterators_helper.h b/test/unit/vy_iterators_helper.h index bba909327cacceefd81f6b2b84959a89827aa8ab..a45ba7bcc7c6866cfcb8825ffc9e7bd2a64426c8 100644 --- a/test/unit/vy_iterators_helper.h +++ b/test/unit/vy_iterators_helper.h @@ -87,8 +87,10 @@ vy_new_simple_stmt(struct tuple_format *format, * * @param vy_mem Mem to insert into. * @param templ Statement template to insert. + * + * @retval Lsregion allocated statement. */ -void +const struct tuple * vy_mem_insert_template(struct vy_mem *mem, const struct vy_stmt_template *templ); diff --git a/test/unit/vy_mem.c b/test/unit/vy_mem.c index bd27bb9569d53582967f2a696abdd0dfbcc9730a..03f0443ac08eb1ec6730e41cb2b06ac04e29d61c 100644 --- a/test/unit/vy_mem.c +++ b/test/unit/vy_mem.c @@ -1,78 +1,36 @@ -#include "box/tuple.h" - -#include "unit.h" - #include "memory.h" #include "fiber.h" -#include "vy_stmt.h" -#include "vy_mem.h" #include <small/slab_cache.h> -#include <small/lsregion.h> - -static struct tuple * -vy_mem_insert_helper(struct vy_mem *mem, int key, int64_t lsn) -{ - char data[16]; - char *end = data; - end = mp_encode_array(end, 1); - end = mp_encode_uint(end, key); - assert(end <= data + sizeof(data)); - struct tuple *stmt = vy_stmt_new_replace(mem->format, data, end); - assert(stmt != NULL); - vy_stmt_set_lsn(stmt, lsn); - struct tuple *region_stmt = vy_stmt_dup_lsregion(stmt, mem->allocator, - mem->generation); - assert(region_stmt != NULL); - tuple_unref(stmt); - vy_mem_insert(mem, region_stmt); - return region_stmt; -} +#include "vy_iterators_helper.h" void test_basic(void) { header(); - plan(13); + plan(12); /* Create key_def */ uint32_t fields[] = { 0 }; uint32_t types[] = { FIELD_TYPE_UNSIGNED }; struct key_def *key_def = box_key_def_new(fields, types, 1); assert(key_def != NULL); - - /* Create format */ - struct tuple_format *format = tuple_format_new(&vy_tuple_format_vtab, - &key_def, 1, 0); - assert(format != NULL); - - /* Create format with column mask */ - struct tuple_format *format_with_colmask = - vy_tuple_format_new_with_colmask(format); - assert(format_with_colmask != NULL); - - /* Create upsert format */ - struct tuple_format *format_upsert = - vy_tuple_format_new_upsert(format); - assert(format_upsert != NULL); - /* Create lsregion */ struct lsregion lsregion; struct slab_cache *slab_cache = cord_slab_cache(); lsregion_create(&lsregion, slab_cache->arena); + struct vy_mem *mem = create_test_mem(&lsregion, key_def); - /* Create mem */ - int64_t generation = 1; - struct vy_mem *mem = vy_mem_new(&lsregion, generation, key_def, - format, format_with_colmask, - format_upsert, 0); - ok(mem != NULL, "vy_mem_new"); is(mem->min_lsn, INT64_MAX, "mem->min_lsn on empty mem"); is(mem->max_lsn, -1, "mem->max_lsn on empty mem"); + const struct vy_stmt_template stmts[] = { + STMT_TEMPLATE(100, REPLACE, 1), STMT_TEMPLATE(101, REPLACE, 1), + STMT_TEMPLATE(102, REPLACE, 1), STMT_TEMPLATE(103, REPLACE, 1), + STMT_TEMPLATE(104, REPLACE, 1) + }; /* Check min/max lsn */ - struct tuple *stmt; - stmt = vy_mem_insert_helper(mem, 1, 100); + const struct tuple *stmt = vy_mem_insert_template(mem, &stmts[0]); is(mem->min_lsn, INT64_MAX, "mem->min_lsn after prepare"); is(mem->max_lsn, -1, "mem->max_lsn after prepare"); vy_mem_commit_stmt(mem, stmt); @@ -80,22 +38,22 @@ test_basic(void) is(mem->max_lsn, 100, "mem->max_lsn after commit"); /* Check vy_mem_older_lsn */ - struct tuple *older = stmt; - stmt = vy_mem_insert_helper(mem, 1, 101); + const struct tuple *older = stmt; + stmt = vy_mem_insert_template(mem, &stmts[1]); is(vy_mem_older_lsn(mem, stmt), older, "vy_mem_older_lsn 1"); is(vy_mem_older_lsn(mem, older), NULL, "vy_mem_older_lsn 2"); vy_mem_commit_stmt(mem, stmt); /* Check rollback */ - struct tuple *olderolder = stmt; - older = vy_mem_insert_helper(mem, 1, 102); - stmt = vy_mem_insert_helper(mem, 1, 103); + const struct tuple *olderolder = stmt; + older = vy_mem_insert_template(mem, &stmts[2]); + stmt = vy_mem_insert_template(mem, &stmts[3]); is(vy_mem_older_lsn(mem, stmt), older, "vy_mem_rollback 1"); vy_mem_rollback_stmt(mem, older); is(vy_mem_older_lsn(mem, stmt), olderolder, "vy_mem_rollback 2"); /* Check version */ - stmt = vy_mem_insert_helper(mem, 1, 104); + stmt = vy_mem_insert_template(mem, &stmts[4]); is(mem->version, 6, "vy_mem->version") vy_mem_commit_stmt(mem, stmt); is(mem->version, 6, "vy_mem->version") diff --git a/test/unit/vy_mem.result b/test/unit/vy_mem.result index d4c1596e48f7aeffd5533730f61f899f18f5340a..1a885962f9e6ffd75629082fe2687a09872941d4 100644 --- a/test/unit/vy_mem.result +++ b/test/unit/vy_mem.result @@ -1,16 +1,15 @@ *** test_basic *** -1..13 -ok 1 - vy_mem_new -ok 2 - mem->min_lsn on empty mem -ok 3 - mem->max_lsn on empty mem -ok 4 - mem->min_lsn after prepare -ok 5 - mem->max_lsn after prepare -ok 6 - mem->min_lsn after commit -ok 7 - mem->max_lsn after commit -ok 8 - vy_mem_older_lsn 1 -ok 9 - vy_mem_older_lsn 2 -ok 10 - vy_mem_rollback 1 -ok 11 - vy_mem_rollback 2 +1..12 +ok 1 - mem->min_lsn on empty mem +ok 2 - mem->max_lsn on empty mem +ok 3 - mem->min_lsn after prepare +ok 4 - mem->max_lsn after prepare +ok 5 - mem->min_lsn after commit +ok 6 - mem->max_lsn after commit +ok 7 - vy_mem_older_lsn 1 +ok 8 - vy_mem_older_lsn 2 +ok 9 - vy_mem_rollback 1 +ok 10 - vy_mem_rollback 2 +ok 11 - vy_mem->version ok 12 - vy_mem->version -ok 13 - vy_mem->version *** test_basic: done ***