index 9445c64176f7ec1a764a945e2c583f4a1051799c..50d041ece884464501cd1768c2b6a990216a3662 100644 (file)
--- a/t/unit/core/store_test.c
+++ b/t/unit/core/store_test.c
{
sdb_data_t datum;
- sdb_memstore_host(store, "h1", 1);
- sdb_memstore_host(store, "h2", 3);
+ sdb_memstore_host(store, "h1", 1, 0);
+ sdb_memstore_host(store, "h2", 3, 0);
datum.type = SDB_TYPE_STRING;
datum.data.string = "v1";
- sdb_memstore_attribute(store, "h1", "k1", &datum, 1);
+ sdb_memstore_attribute(store, "h1", "k1", &datum, 1, 0);
datum.data.string = "v2";
- sdb_memstore_attribute(store, "h1", "k2", &datum, 2);
+ sdb_memstore_attribute(store, "h1", "k2", &datum, 2, 0);
datum.data.string = "v3";
- sdb_memstore_attribute(store, "h1", "k3", &datum, 2);
+ sdb_memstore_attribute(store, "h1", "k3", &datum, 2, 0);
/* make sure that older updates don't overwrite existing values */
datum.data.string = "fail";
- sdb_memstore_attribute(store, "h1", "k2", &datum, 1);
- sdb_memstore_attribute(store, "h1", "k3", &datum, 2);
+ sdb_memstore_attribute(store, "h1", "k2", &datum, 1, 0);
+ sdb_memstore_attribute(store, "h1", "k3", &datum, 2, 0);
- sdb_memstore_metric(store, "h1", "m1", /* store */ NULL, 2);
- sdb_memstore_metric(store, "h1", "m2", /* store */ NULL, 1);
- sdb_memstore_metric(store, "h2", "m1", /* store */ NULL, 1);
+ sdb_memstore_metric(store, "h1", "m1", /* store */ NULL, 2, 0);
+ sdb_memstore_metric(store, "h1", "m2", /* store */ NULL, 1, 0);
+ sdb_memstore_metric(store, "h2", "m1", /* store */ NULL, 1, 0);
- sdb_memstore_service(store, "h2", "s1", 1);
- sdb_memstore_service(store, "h2", "s2", 2);
+ sdb_memstore_service(store, "h2", "s1", 1, 0);
+ sdb_memstore_service(store, "h2", "s2", 2, 0);
datum.type = SDB_TYPE_INTEGER;
datum.data.integer = 42;
- sdb_memstore_metric_attr(store, "h1", "m1", "k3", &datum, 2);
+ sdb_memstore_metric_attr(store, "h1", "m1", "k3", &datum, 2, 0);
datum.data.integer = 123;
- sdb_memstore_service_attr(store, "h2", "s2", "k1", &datum, 2);
+ sdb_memstore_service_attr(store, "h2", "s2", "k1", &datum, 2, 0);
datum.data.integer = 4711;
- sdb_memstore_service_attr(store, "h2", "s2", "k2", &datum, 1);
+ sdb_memstore_service_attr(store, "h2", "s2", "k2", &datum, 1, 0);
/* don't overwrite k1 */
datum.data.integer = 666;
- sdb_memstore_service_attr(store, "h2", "s2", "k1", &datum, 2);
+ sdb_memstore_service_attr(store, "h2", "s2", "k1", &datum, 2, 0);
} /* populate */
static void
} golden_data[] = {
{ "a", 1, 0 },
{ "a", 2, 0 },
- { "a", 1, 1 },
{ "b", 1, 0 },
- { "b", 1, 1 },
- { "A", 1, 1 }, /* case-insensitive */
- { "A", 3, 0 },
};
struct {
const char *name;
bool have;
} golden_hosts[] = {
- { "a", 1 == 1 },
- { "b", 1 == 1 },
- { "c", 0 == 1 },
- { "A", 1 == 1 },
+ { "a", 1 },
+ { "b", 1 },
+ { "c", 0 },
+ { "A", 1 },
};
size_t i;
int status;
status = sdb_memstore_host(store, golden_data[i].name,
- golden_data[i].last_update);
+ golden_data[i].last_update, 0);
fail_unless(status == golden_data[i].expected,
- "sdb_memstore_host(%s, %d) = %d; expected: %d",
+ "sdb_memstore_host(%s, %d, 0) = %d; expected: %d",
golden_data[i].name, (int)golden_data[i].last_update,
status, golden_data[i].expected);
}
size_t i;
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_hosts); ++i) {
- int status = sdb_memstore_host(store, golden_hosts[i], 1);
+ int status = sdb_memstore_host(store, golden_hosts[i], 1, 0);
fail_unless(status >= 0,
"sdb_memstore_host(%s) = %d; expected: >=0",
golden_hosts[i], status);
{ "k", "k", "v", 1, -1 }, /* retry to ensure the host is not created */
{ "l", "k1", "v1", 1, 0 },
{ "l", "k1", "v2", 2, 0 },
- { "l", "k1", "v3", 2, 1 },
{ "l", "k2", "v1", 1, 0 },
{ "m", "k", "v1", 1, 0 },
- { "m", "k", "v2", 1, 1 },
};
size_t i;
- sdb_memstore_host(store, "l", 1);
- sdb_memstore_host(store, "m", 1);
+ sdb_memstore_host(store, "l", 1, 0);
+ sdb_memstore_host(store, "m", 1, 0);
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
sdb_data_t datum;
int status;
status = sdb_memstore_attribute(store, golden_data[i].host,
golden_data[i].key, &datum,
- golden_data[i].last_update);
+ golden_data[i].last_update, 0);
fail_unless(status == golden_data[i].expected,
"sdb_memstore_attribute(%s, %s, %s, %d) = %d; expected: %d",
golden_data[i].host, golden_data[i].key, golden_data[i].value,
- golden_data[i].last_update, status, golden_data[i].expected);
+ golden_data[i].last_update, status, golden_data[i].expected, 0);
}
}
END_TEST
{ "l", "m1", NULL, 1, 0 },
{ "l", "m1", &store1, 2, 0 },
{ "l", "m1", &store1, 3, 0 },
- { "l", "m1", NULL, 3, 1 },
{ "l", "m2", &store1, 1, 0 },
{ "l", "m2", &store2, 2, 0 },
{ "l", "m2", NULL, 3, 0 },
{ "m", "m", &store1, 1, 0 },
{ "m", "m", NULL, 2, 0 },
- { "m", "m", NULL, 2, 1 },
{ "m", "m", &store1, 3, 0 },
{ "m", "m", &store2, 4, 0 },
{ "m", "m", NULL, 5, 0 },
size_t i;
- sdb_memstore_host(store, "m", 1);
- sdb_memstore_host(store, "l", 1);
+ sdb_memstore_host(store, "m", 1, 0);
+ sdb_memstore_host(store, "l", 1, 0);
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
int status;
status = sdb_memstore_metric(store, golden_data[i].host,
golden_data[i].metric, golden_data[i].store,
- golden_data[i].last_update);
+ golden_data[i].last_update, 0);
fail_unless(status == golden_data[i].expected,
- "sdb_memstore_metric(%s, %s, %p, %d) = %d; expected: %d",
+ "sdb_memstore_metric(%s, %s, %p, %d, 0) = %d; expected: %d",
golden_data[i].host, golden_data[i].metric,
golden_data[i].store, golden_data[i].last_update,
status, golden_data[i].expected);
/* retry, it should still fail */
{ "l", "mX", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, -1 },
{ "l", "m1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
- { "l", "m1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 1 },
{ "l", "m1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 2, 0 },
{ "l", "m1", "a2", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
- { "l", "m1", "a2", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 1 },
{ "l", "m2", "a2", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
{ "m", "m1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
};
size_t i;
- sdb_memstore_host(store, "m", 1);
- sdb_memstore_host(store, "l", 1);
- sdb_memstore_metric(store, "m", "m1", NULL, 1);
- sdb_memstore_metric(store, "l", "m1", NULL, 1);
- sdb_memstore_metric(store, "l", "m2", NULL, 1);
+ sdb_memstore_host(store, "m", 1, 0);
+ sdb_memstore_host(store, "l", 1, 0);
+ sdb_memstore_metric(store, "m", "m1", NULL, 1, 0);
+ sdb_memstore_metric(store, "l", "m1", NULL, 1, 0);
+ sdb_memstore_metric(store, "l", "m2", NULL, 1, 0);
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
int status;
status = sdb_memstore_metric_attr(store, golden_data[i].host,
golden_data[i].metric, golden_data[i].attr,
- &golden_data[i].value, golden_data[i].last_update);
+ &golden_data[i].value, golden_data[i].last_update, 0);
fail_unless(status == golden_data[i].expected,
- "sdb_memstore_metric_attr(%s, %s, %s, %d, %d) = %d; "
+ "sdb_memstore_metric_attr(%s, %s, %s, %d, %d, 0) = %d; "
"expected: %d", golden_data[i].host, golden_data[i].metric,
golden_data[i].attr, golden_data[i].value.data.integer,
golden_data[i].last_update, status, golden_data[i].expected);
{ "k", "s", 1, -1 }, /* retry to ensure the host is not created */
{ "l", "s1", 1, 0 },
{ "l", "s1", 2, 0 },
- { "l", "s1", 2, 1 },
{ "l", "s2", 1, 0 },
{ "m", "s", 1, 0 },
- { "m", "s", 1, 1 },
};
size_t i;
- sdb_memstore_host(store, "m", 1);
- sdb_memstore_host(store, "l", 1);
+ sdb_memstore_host(store, "m", 1, 0);
+ sdb_memstore_host(store, "l", 1, 0);
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
int status;
status = sdb_memstore_service(store, golden_data[i].host,
- golden_data[i].svc, golden_data[i].last_update);
+ golden_data[i].svc, golden_data[i].last_update, 0);
fail_unless(status == golden_data[i].expected,
- "sdb_memstore_service(%s, %s, %d) = %d; expected: %d",
+ "sdb_memstore_service(%s, %s, %d, 0) = %d; expected: %d",
golden_data[i].host, golden_data[i].svc,
golden_data[i].last_update, status, golden_data[i].expected);
}
/* retry, it should still fail */
{ "l", "sX", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, -1 },
{ "l", "s1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
- { "l", "s1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 1 },
{ "l", "s1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 2, 0 },
{ "l", "s1", "a2", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
- { "l", "s1", "a2", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 1 },
{ "l", "s2", "a2", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
{ "m", "s1", "a1", { SDB_TYPE_INTEGER, { .integer = 123 } }, 1, 0 },
};
size_t i;
- sdb_memstore_host(store, "m", 1);
- sdb_memstore_host(store, "l", 1);
- sdb_memstore_service(store, "m", "s1", 1);
- sdb_memstore_service(store, "l", "s1", 1);
- sdb_memstore_service(store, "l", "s2", 1);
+ sdb_memstore_host(store, "m", 1, 0);
+ sdb_memstore_host(store, "l", 1, 0);
+ sdb_memstore_service(store, "m", "s1", 1, 0);
+ sdb_memstore_service(store, "l", "s1", 1, 0);
+ sdb_memstore_service(store, "l", "s2", 1, 0);
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
int status;
status = sdb_memstore_service_attr(store, golden_data[i].host,
golden_data[i].svc, golden_data[i].attr,
- &golden_data[i].value, golden_data[i].last_update);
+ &golden_data[i].value, golden_data[i].last_update, 0);
fail_unless(status == golden_data[i].expected,
- "sdb_memstore_service_attr(%s, %s, %s, %d, %d) = %d; "
+ "sdb_memstore_service_attr(%s, %s, %s, %d, %d, 0) = %d; "
"expected: %d", golden_data[i].host, golden_data[i].svc,
golden_data[i].attr, golden_data[i].value.data.integer,
golden_data[i].last_update, status, golden_data[i].expected);
sdb_time_t now = sdb_gettime();
int check;
- sdb_memstore_host(store, "host", 10);
- sdb_memstore_host(store, "host", 20);
- sdb_memstore_attribute(store, "host", "attr", &get_field_data[_i].value, 10);
- sdb_memstore_attribute(store, "host", "attr", &get_field_data[_i].value, 20);
+ sdb_memstore_host(store, "host", 20, 10);
+ sdb_memstore_attribute(store, "host", "attr", &get_field_data[_i].value, 20, 10);
if (get_field_data[_i].hostname) {
obj = sdb_memstore_get_host(store, get_field_data[_i].hostname);
{
struct {
const char *host;
+ int parent_type;
+ const char *parent;
const char *name;
int type;
int expected;
} golden_data[] = {
- { "h1", NULL, SDB_HOST, 0 },
- { "h1", NULL, SDB_SERVICE, -1 },
- { "h1", NULL, SDB_METRIC, -1 },
- { "h1", NULL, SDB_ATTRIBUTE, -1 },
- { "h2", NULL, SDB_HOST, 0 },
- { "h2", NULL, SDB_SERVICE, -1 },
- { "h2", NULL, SDB_METRIC, -1 },
- { "h2", NULL, SDB_ATTRIBUTE, -1 },
- { "h3", NULL, SDB_HOST, -1 },
- { "h1", "k1", SDB_ATTRIBUTE, 0 },
- { "h1", "x1", SDB_ATTRIBUTE, -1 },
- { "h2", "k1", SDB_ATTRIBUTE, -1 },
- { "h1", "k1", SDB_SERVICE, -1 },
- { "h1", "k1", SDB_METRIC, -1 },
- { "h1", "s1", SDB_SERVICE, -1 },
- { "h2", "s1", SDB_SERVICE, 0 },
- { "h1", "m2", SDB_METRIC, 0 },
- { "h2", "m2", SDB_METRIC, -1 },
+ { "h1", -1, NULL, NULL, SDB_HOST, 0 },
+ { "h1", -1, NULL, NULL, SDB_SERVICE, -1 },
+ { "h1", -1, NULL, NULL, SDB_METRIC, -1 },
+ { "h1", -1, NULL, NULL, SDB_ATTRIBUTE, -1 },
+ { "h2", -1, NULL, NULL, SDB_HOST, 0 },
+ { "h2", -1, NULL, NULL, SDB_SERVICE, -1 },
+ { "h2", -1, NULL, NULL, SDB_METRIC, -1 },
+ { "h2", -1, NULL, NULL, SDB_ATTRIBUTE, -1 },
+ { "h3", -1, NULL, NULL, SDB_HOST, -1 },
+ { "h1", -1, NULL, "k1", SDB_ATTRIBUTE, 0 },
+ { "h1", -1, NULL, "x1", SDB_ATTRIBUTE, -1 },
+ { "h2", -1, NULL, "k1", SDB_ATTRIBUTE, -1 },
+ { "h1", -1, NULL, "k1", SDB_SERVICE, -1 },
+ { "h1", -1, NULL, "k1", SDB_METRIC, -1 },
+ { "h1", -1, NULL, "s1", SDB_SERVICE, -1 },
+ { "h2", -1, NULL, "s1", SDB_SERVICE, 0 },
+ { "h1", -1, NULL, "m2", SDB_METRIC, 0 },
+ { "h2", -1, NULL, "m2", SDB_METRIC, -1 },
+ { "h1", SDB_METRIC, "m1", "k3", SDB_ATTRIBUTE, 0 },
+ { "h1", SDB_METRIC, "m1", "x1", SDB_ATTRIBUTE, -1 },
+ { "h2", SDB_SERVICE, "s2", "k1", SDB_ATTRIBUTE, 0 },
+ { "h2", SDB_SERVICE, "s2", "x1", SDB_ATTRIBUTE, -1 },
};
size_t i;
const char *expected_name = golden_data[i].host;
obj = sdb_memstore_get_host(store, golden_data[i].host);
+ if (golden_data[i].parent) {
+ sdb_memstore_obj_t *o;
+ o = sdb_memstore_get_child(obj,
+ golden_data[i].parent_type, golden_data[i].parent);
+ sdb_object_deref(SDB_OBJ(obj));
+ obj = o;
+ }
if (golden_data[i].expected && (golden_data[i].type == SDB_HOST))
fail_unless(obj == NULL,
"sdb_memstore_get_host(%s) = %p; expected: NULL",
}
END_TEST
+/* TODO: move these tests into generic store tests */
+#if 0
START_TEST(test_interval)
{
sdb_memstore_obj_t *host;
sdb_object_deref(SDB_OBJ(host));
}
END_TEST
+#endif
static int
scan_count(sdb_memstore_obj_t *obj, sdb_memstore_matcher_t *filter, void *user_data)
tcase_add_test(tc, test_store_service_attr);
TC_ADD_LOOP_TEST(tc, get_field);
tcase_add_test(tc, test_get_child);
- tcase_add_test(tc, test_interval);
tcase_add_test(tc, test_scan);
ADD_TCASE(tc);
}