X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=t%2Funit%2Fcore%2Fstore_expr_test.c;h=3f21a82f9f21952dd684a6361d13deefac662aae;hp=679fb548418092fbe1377cd9232dadf07e1af928;hb=90174606fdfac1dba1330b48cb16bb2ca1efb0a4;hpb=5ced2b9eb4d4def7d3ad5b1172004293e7a68e0e diff --git a/t/unit/core/store_expr_test.c b/t/unit/core/store_expr_test.c index 679fb54..3f21a82 100644 --- a/t/unit/core/store_expr_test.c +++ b/t/unit/core/store_expr_test.c @@ -36,6 +36,8 @@ #include +static sdb_store_t *store; + static void populate(void) { @@ -92,44 +94,54 @@ populate(void) size_t i; + store = sdb_store_create(); + ck_assert(store != NULL); + for (i = 0; i < SDB_STATIC_ARRAY_LEN(hosts); ++i) { - int status = sdb_store_host(hosts[i], 1); + int status = sdb_store_host(store, hosts[i], 1); ck_assert(status == 0); } for (i = 0; i < SDB_STATIC_ARRAY_LEN(metrics); ++i) { - int status = sdb_store_metric(metrics[i].host, + int status = sdb_store_metric(store, metrics[i].host, metrics[i].metric, /* store */ NULL, 1); ck_assert(status == 0); } for (i = 0; i < SDB_STATIC_ARRAY_LEN(services); ++i) { - int status = sdb_store_service(services[i].host, + int status = sdb_store_service(store, services[i].host, services[i].service, 1); ck_assert(status == 0); } for (i = 0; i < SDB_STATIC_ARRAY_LEN(attrs); ++i) { - int status = sdb_store_attribute(attrs[i].host, + int status = sdb_store_attribute(store, attrs[i].host, attrs[i].name, &attrs[i].value, 1); ck_assert(status == 0); } for (i = 0; i < SDB_STATIC_ARRAY_LEN(svc_attrs); ++i) { - int status = sdb_store_service_attr(svc_attrs[i].host, + int status = sdb_store_service_attr(store, svc_attrs[i].host, svc_attrs[i].service, svc_attrs[i].name, &svc_attrs[i].value, 1); ck_assert(status == 0); } for (i = 0; i < SDB_STATIC_ARRAY_LEN(metric_attrs); ++i) { - int status = sdb_store_metric_attr(metric_attrs[i].host, + int status = sdb_store_metric_attr(store, metric_attrs[i].host, metric_attrs[i].metric, metric_attrs[i].name, &metric_attrs[i].value, 1); ck_assert(status == 0); } } /* populate */ +static void +turndown(void) +{ + sdb_object_deref(SDB_OBJ(store)); + store = NULL; +} /* turndown */ + #define NAME { SDB_TYPE_INTEGER, { .integer = SDB_FIELD_NAME } } #define LAST_UPDATE { SDB_TYPE_INTEGER, { .integer = SDB_FIELD_LAST_UPDATE } } #define AGE { SDB_TYPE_INTEGER, { .integer = SDB_FIELD_AGE } } @@ -309,23 +321,23 @@ struct { { SDB_OBJECT_INIT, TYPED_EXPR, -1, &namer, NULL, ATTRS }, true, "a", SDB_SERVICE, "s1", NULL, { - { SDB_TYPE_STRING, { .string = "hostname" } }, { SDB_TYPE_STRING, { .string = "k1" } }, { 0 }, { 0 }, { 0 }, - }, 2, + { 0 }, + }, 1, }, { { SDB_OBJECT_INIT, TYPED_EXPR, -1, &namer, NULL, ATTRS }, true, "a", SDB_SERVICE, "s1", "age >= 0s", { - { SDB_TYPE_STRING, { .string = "hostname" } }, { SDB_TYPE_STRING, { .string = "k1" } }, { 0 }, { 0 }, { 0 }, - }, 2, + { 0 }, + }, 1, }, { { SDB_OBJECT_INIT, TYPED_EXPR, -1, &namer, NULL, ATTRS }, true, @@ -378,23 +390,23 @@ struct { { SDB_OBJECT_INIT, TYPED_EXPR, -1, &namer, NULL, ATTRS }, true, "b", SDB_METRIC, "m2", NULL, { - { SDB_TYPE_STRING, { .string = "hostname" } }, { SDB_TYPE_STRING, { .string = "k1" } }, { SDB_TYPE_STRING, { .string = "k2" } }, { 0 }, { 0 }, - }, 3, + { 0 }, + }, 2, }, { { SDB_OBJECT_INIT, TYPED_EXPR, -1, &namer, NULL, ATTRS }, true, "b", SDB_METRIC, "m2", "age >= 0s", { - { SDB_TYPE_STRING, { .string = "hostname" } }, { SDB_TYPE_STRING, { .string = "k1" } }, { SDB_TYPE_STRING, { .string = "k2" } }, { 0 }, { 0 }, - }, 3, + { 0 }, + }, 2, }, { { SDB_OBJECT_INIT, TYPED_EXPR, -1, &namer, NULL, ATTRS }, true, @@ -547,12 +559,11 @@ START_TEST(test_expr_iter) sdb_store_matcher_t *filter = NULL; int context = SDB_HOST; - bool iterable; sdb_store_expr_iter_t *iter; size_t i; if (expr_iter_data[_i].host) { - obj = sdb_store_get_host(expr_iter_data[_i].host); + obj = sdb_store_get_host(store, expr_iter_data[_i].host); ck_assert(obj != NULL); if (expr_iter_data[_i].child) { @@ -568,25 +579,19 @@ START_TEST(test_expr_iter) if (expr_iter_data[_i].filter) { sdb_ast_node_t *ast; - ast = sdb_parser_parse_conditional(expr_iter_data[_i].filter, -1, NULL); + ast = sdb_parser_parse_conditional(context, expr_iter_data[_i].filter, -1, NULL); filter = sdb_store_query_prepare_matcher(ast); sdb_object_deref(SDB_OBJ(ast)); ck_assert(filter != NULL); } - iterable = sdb_store_expr_iterable(&expr_iter_data[_i].expr, context); - fail_unless(iterable == expr_iter_data[_i].iterable, - "%s expression not iterable in %s context", - EXPR_TO_STRING(&expr_iter_data[_i].expr), - SDB_STORE_TYPE_TO_NAME(context)); - iter = sdb_store_expr_iter(&expr_iter_data[_i].expr, obj, filter); - fail_unless((iter != NULL) == iterable, + fail_unless((iter != NULL) == expr_iter_data[_i].iterable, "sdb_store_expr_iter(%s expression, %s, %s) = %s; expected: %s", EXPR_TO_STRING(&expr_iter_data[_i].expr), obj ? SDB_STORE_TYPE_TO_NAME(obj->type) : "", expr_iter_data[_i].filter, iter ? "" : "NULL", - iterable ? "" : "NULL"); + expr_iter_data[_i].iterable ? "" : "NULL"); /* the iterator will keep a reference */ sdb_object_deref(SDB_OBJ(obj)); obj = NULL; @@ -634,7 +639,7 @@ END_TEST TEST_MAIN("core::store_expr") { TCase *tc = tcase_create("core"); - tcase_add_checked_fixture(tc, populate, sdb_store_clear); + tcase_add_checked_fixture(tc, populate, turndown); TC_ADD_LOOP_TEST(tc, expr_iter); ADD_TCASE(tc); }