Skip to content
Snippets Groups Projects
Commit 34e73f38 authored by Vladislav Shpilevoy's avatar Vladislav Shpilevoy Committed by Konstantin Osipov
Browse files

test: use vy_iterators_helper.c in unit/vy_mem.c

parent a1e005d8
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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
......
......@@ -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);
......
#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")
......
*** 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 ***
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment