summaryrefslogtreecommitdiffstats
path: root/fluent-bit/tests/internal/include/sp_cb_functions.h
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/tests/internal/include/sp_cb_functions.h')
-rw-r--r--fluent-bit/tests/internal/include/sp_cb_functions.h655
1 files changed, 655 insertions, 0 deletions
diff --git a/fluent-bit/tests/internal/include/sp_cb_functions.h b/fluent-bit/tests/internal/include/sp_cb_functions.h
new file mode 100644
index 00000000..aee3fb39
--- /dev/null
+++ b/fluent-bit/tests/internal/include/sp_cb_functions.h
@@ -0,0 +1,655 @@
+#include "sp_helpers.h"
+
+#ifndef FLB_TEST_CP_FUNCTIONS
+#define FLB_TEST_CP_FUNCTIONS
+
+/* Callback functions to perform checks over results */
+static void cb_select_all(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect all 11 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 11);
+}
+
+/* Callback test: expect one key per record */
+static void cb_select_id(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect all 11 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 11);
+
+ ret = mp_count_keys(buf, size);
+ TEST_CHECK(ret == 13);
+}
+
+static void cb_select_cond_1(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+}
+
+static void cb_select_cond_2(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 2 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+}
+
+static void cb_select_cond_not_null(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+}
+
+static void cb_select_cond_null(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+}
+
+static void cb_select_not_equal_1(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+}
+
+static void cb_select_not_equal_2(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 2 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+}
+
+static void cb_select_aggr_count(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ /* COUNT(*) is 11 */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "COUNT(*)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 11, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_func_time_now(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+ char tmp[32];
+ struct tm *local;
+ time_t now = time(NULL);
+
+ local = localtime(&now);
+ strftime(tmp, sizeof(tmp) - 1, "%Y-%m-%d %H:%M:%S", local);
+
+ /* Expect 2 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+
+ /* NOW() */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "NOW()",
+ MSGPACK_OBJECT_STR,
+ tmp, 0, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* tnow */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "tnow",
+ MSGPACK_OBJECT_STR,
+ tmp, 0, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_func_time_unix_timestamp(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+ time_t now = time(NULL);
+
+ /* Expect 2 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+
+ /* UNIX_TIMESTAMP() */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "UNIX_TIMESTAMP()",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, now, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* tnow */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "ts",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, now, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+/* No records must be selected */
+static void cb_select_tag_error(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ TEST_CHECK(buf == NULL && size == 0);
+
+ /* no records expected */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 0);
+}
+
+/* No records must be selected */
+static void cb_select_tag_ok(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ TEST_CHECK(buf != NULL && size > 0);
+
+ /* 2 records expected */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+}
+
+static void cb_record_contains(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 2 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+}
+
+static void cb_record_not_contains(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 0 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 0);
+}
+
+/* Callback functions to perform checks over results */
+static void cb_select_sub_blue(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+}
+
+static void cb_select_sub_num(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 2 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+}
+
+static void cb_select_sub_colors(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 3 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 3);
+}
+
+static void cb_select_sub_record_contains(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 5 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 5);
+}
+
+static void cb_select_sub_keys(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "map['sub1']['sub2']['color']",
+ MSGPACK_OBJECT_STR,
+ "blue", 0, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_sum_sub_keys(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "SUM(map['sub1']['sub2'])",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 246, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_avg_sub_keys(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "AVG(map['sub1']['sub2'])",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 123.0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_count_sub_keys(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "COUNT(map['sub1']['sub2'])",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 2, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_min_sub_keys(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "MIN(map['sub1']['sub2'])",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 123, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_max_sub_keys(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "MAX(map['sub1']['sub3'])",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 100);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_sum_sub_keys_group_by(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 3 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 3);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "SUM(map['sub1']['sub3'])",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 105.5);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_sum_sub_keys_group_by_2(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 3 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 3);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "SUM(map['sub1']['sub3'])",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 105.5);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_sum_sub_keys_group_by_3(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 3 rows */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 3);
+
+ ret = mp_record_key_cmp(buf, size,
+ 0, "SUM(map['sub1']['sub3'])",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 100, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ ret = mp_record_key_cmp(buf, size,
+ 1, "SUM(map['sub1']['sub3'])",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 11);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ ret = mp_record_key_cmp(buf, size,
+ 2, "SUM(map['sub1']['sub3'])",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 5.5);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+
+static void cb_forecast_tumbling_window(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect one record only */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ /* Check SUM value result */
+ ret = mp_record_key_cmp(buf, size, 0, "TIMESERIES_FORECAST(usage)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 310.0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* Check AVG value result */
+ ret = mp_record_key_cmp(buf, size, 0, "AVG(usage)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 60.0);
+
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+/* Callback functions to perform checks over results */
+static void cb_snapshot_create(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ ret = mp_count_rows(buf, size);
+ /* Snapshot doesn't return anything */
+ TEST_CHECK(ret == 0);
+};
+
+static void cb_snapshot_purge(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 5 rows, as set in snapshot query */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 5);
+};
+
+static void cb_snapshot_purge_time(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 11 rows, as set in snapshot query */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 11);
+};
+
+static void cb_window_5_second(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect one record only */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ /* Check SUM value result */
+ ret = mp_record_key_cmp(buf, size, 0, "SUM(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 225, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* Check AVG value result */
+ ret = mp_record_key_cmp(buf, size, 0, "AVG(id)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 4.5);
+
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_aggr(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ /* MIN(id) is 0 */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "MIN(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 0, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* MAX(id) is 10 */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "MAX(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 10, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* COUNT(*) is 11 */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "COUNT(*)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 11, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* SUM(bytes) is 110.50 */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "SUM(bytes)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 110.50);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* AVG(bytes) is 10.04545 */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "AVG(bytes)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 10.045455);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_select_groupby(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect 1 row */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 2);
+
+ /* MIN(id) is 0 for record 0 (bool=true) */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "MIN(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 0, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* MIN(id) is 6 for record 1 (bool=false) */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "MIN(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 6, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* MAX(id) is 8 for record 0 (bool=true) */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "MAX(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 8, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* MAX(id) is i9 for record 1 (bool=false) */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "MAX(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 9, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* COUNT(*) is 8 for record 0 (bool=true) */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "COUNT(*)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 8, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* COUNT(*) is 2 for record 1 (bool=false) */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "COUNT(*)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 2, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* SUM(bytes) is 80.0 for record 0 (bool=true) */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "SUM(bytes)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 80.0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* SUM(bytes) is 20.50 for record 1 (bool=false) */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "SUM(bytes)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 20.50);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* AVG(bytes) is 10.0 for record 0 (bool=true) */
+ ret = mp_record_key_cmp(buf, size,
+ 0, "AVG(bytes)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 10.0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* AVG(bytes) is 10.25 for record 1 (bool=false) */
+ ret = mp_record_key_cmp(buf, size,
+ 1, "AVG(bytes)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 10.25);
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_hopping_window_5_second(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect one record only */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ /* Check SUM value result */
+ ret = mp_record_key_cmp(buf, size, 0, "SUM(id)",
+ MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NULL, 266, 0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* Check AVG value result */
+ ret = mp_record_key_cmp(buf, size, 0, "AVG(id)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 16.625);
+
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+static void cb_forecast_hopping_window(int id, struct task_check *check,
+ char *buf, size_t size)
+{
+ int ret;
+
+ /* Expect one record only */
+ ret = mp_count_rows(buf, size);
+ TEST_CHECK(ret == 1);
+
+ /* Check SUM value result */
+ ret = mp_record_key_cmp(buf, size, 0, "TIMESERIES_FORECAST(usage)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 460.0);
+ TEST_CHECK(ret == FLB_TRUE);
+
+ /* Check AVG value result */
+ ret = mp_record_key_cmp(buf, size, 0, "AVG(usage)",
+ MSGPACK_OBJECT_FLOAT,
+ NULL, 0, 175.0);
+
+ TEST_CHECK(ret == FLB_TRUE);
+}
+
+#endif