index d7e5b30cbd7f7c2a4122c4851233eca306fbda23..e36c302422089adbe740b9ecd2cdd5710bcda03a 100644 (file)
# include "config.h"
#endif
+#include "core/plugin.h"
#include "frontend/connection.h"
#include "frontend/connection-private.h"
#include "testutils.h"
static void
populate(void)
{
+ sdb_store_t *store;
sdb_data_t datum;
- sdb_store_init();
+ /* the frontend accesses the store via the plugin API */
+ store = sdb_store_create();
+ ck_assert(store != NULL);
+ ck_assert(sdb_plugin_register_writer("test-writer",
+ &sdb_store_writer, SDB_OBJ(store)) == 0);
+ ck_assert(sdb_plugin_register_reader("test-reader",
+ &sdb_store_reader, SDB_OBJ(store)) == 0);
+ sdb_object_deref(SDB_OBJ(store));
- sdb_store_host("h1", 1 * SDB_INTERVAL_SECOND);
- sdb_store_host("h2", 3 * SDB_INTERVAL_SECOND);
+ /* populate the store */
+ sdb_plugin_store_host("h1", 1 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_host("h2", 3 * SDB_INTERVAL_SECOND);
datum.type = SDB_TYPE_STRING;
datum.data.string = "v1";
- sdb_store_attribute("h1", "k1", &datum, 1 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_attribute("h1", "k1", &datum, 1 * SDB_INTERVAL_SECOND);
datum.data.string = "v2";
- sdb_store_attribute("h1", "k2", &datum, 2 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_attribute("h1", "k2", &datum, 2 * SDB_INTERVAL_SECOND);
datum.data.string = "v3";
- sdb_store_attribute("h1", "k3", &datum, 2 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_attribute("h1", "k3", &datum, 2 * SDB_INTERVAL_SECOND);
- sdb_store_metric("h1", "m1", /* store */ NULL, 2 * SDB_INTERVAL_SECOND);
- sdb_store_metric("h1", "m2", /* store */ NULL, 1 * SDB_INTERVAL_SECOND);
- sdb_store_metric("h2", "m1", /* store */ NULL, 1 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_metric("h1", "m1", /* store */ NULL, 2 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_metric("h1", "m2", /* store */ NULL, 1 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_metric("h2", "m1", /* store */ NULL, 1 * SDB_INTERVAL_SECOND);
datum.type = SDB_TYPE_INTEGER;
datum.data.integer = 42;
- sdb_store_metric_attr("h1", "m1", "k3", &datum, 2 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_metric_attribute("h1", "m1", "k3",
+ &datum, 2 * SDB_INTERVAL_SECOND);
- sdb_store_service("h2", "s1", 1 * SDB_INTERVAL_SECOND);
- sdb_store_service("h2", "s2", 2 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_service("h2", "s1", 1 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_service("h2", "s2", 2 * SDB_INTERVAL_SECOND);
datum.data.integer = 123;
- sdb_store_service_attr("h2", "s2", "k1", &datum, 2 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_service_attribute("h2", "s2", "k1",
+ &datum, 2 * SDB_INTERVAL_SECOND);
datum.data.integer = 4711;
- sdb_store_service_attr("h2", "s2", "k2", &datum, 1 * SDB_INTERVAL_SECOND);
+ sdb_plugin_store_service_attribute("h2", "s2", "k2",
+ &datum, 1 * SDB_INTERVAL_SECOND);
} /* populate */
+static void
+turndown(void)
+{
+ sdb_plugin_unregister_all();
+} /* turndown */
+
#define HOST_H1 \
"{\"name\": \"h1\", \"last_update\": \"1970-01-01 00:00:01 +0000\", " \
"\"update_interval\": \"0s\", \"backends\": [], " \
switch (conn->cmd) {
case SDB_CONNECTION_QUERY:
- check = sdb_fe_query(conn);
+ check = sdb_conn_query(conn);
break;
case SDB_CONNECTION_FETCH:
- check = sdb_fe_fetch(conn);
+ check = sdb_conn_fetch(conn);
break;
case SDB_CONNECTION_LIST:
- check = sdb_fe_list(conn);
+ check = sdb_conn_list(conn);
break;
case SDB_CONNECTION_LOOKUP:
- check = sdb_fe_lookup(conn);
+ check = sdb_conn_lookup(conn);
break;
/* SDB_CONNECTION_TIMESERIES not supported yet */
case SDB_CONNECTION_STORE:
- check = sdb_fe_store(conn);
+ check = sdb_conn_store(conn);
break;
default:
fail("Invalid command %#x", conn->cmd);
}
fail_unless(check == query_data[_i].expected,
- "sdb_fe_query(%s) = %d; expected: %d (err: %s)",
+ "sdb_conn_query(%s) = %d; expected: %d (err: %s)",
query_data[_i].query, check, query_data[_i].expected,
sdb_strbuf_string(conn->errbuf));
if (query_data[_i].code == UINT32_MAX) {
fail_unless(len == 0,
- "sdb_fe_query(%s) returned data on error: '%s'",
+ "sdb_conn_query(%s) returned data on error: '%s'",
query_data[_i].query, data);
mock_conn_destroy(conn);
return;
fail_unless((code == query_data[_i].code)
&& ((size_t)msg_len == query_data[_i].len),
- "sdb_fe_query(%s) returned %u, %u; expected: %u, %zu",
+ "sdb_conn_query(%s) returned %u, %u; expected: %u, %zu",
query_data[_i].query, code, msg_len,
query_data[_i].code, query_data[_i].len);
if (code == SDB_CONNECTION_DATA) {
tmp = sdb_proto_unmarshal_int32(data, len, &code);
fail_unless(code == query_data[_i].type,
- "sdb_fe_query(%s) returned %s object; expected: %s",
+ "sdb_conn_query(%s) returned %s object; expected: %s",
query_data[_i].query, SDB_CONN_MSGTYPE_TO_STRING((int)code),
SDB_CONN_MSGTYPE_TO_STRING((int)query_data[_i].type));
data += tmp;
}
fail_if_strneq(data, query_data[_i].data, (size_t)msg_len,
- "sdb_fe_query(%s) returned unexpected data",
+ "sdb_conn_query(%s) returned unexpected data",
query_data[_i].query, data, query_data[_i].data);
mock_conn_destroy(conn);
TEST_MAIN("frontend::query")
{
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, query);
ADD_TCASE(tc);
}