/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ #include #include "flb_tests_runtime.h" /* Test data */ /* Test functions */ void flb_test_filter_grep_regex(void); void flb_test_filter_grep_exclude(void); void flb_test_filter_grep_invalid(void); /* Test list */ TEST_LIST = { {"regex", flb_test_filter_grep_regex }, {"exclude", flb_test_filter_grep_exclude }, {"invalid", flb_test_filter_grep_invalid }, {NULL, NULL} }; void flb_test_filter_grep_regex(void) { int i; int ret; int bytes; char p[100]; flb_ctx_t *ctx; int in_ffd; int out_ffd; int filter_ffd; ctx = flb_create(); in_ffd = flb_input(ctx, (char *) "lib", NULL); TEST_CHECK(in_ffd >= 0); flb_input_set(ctx, in_ffd, "tag", "test", NULL); out_ffd = flb_output(ctx, (char *) "stdout", NULL); TEST_CHECK(out_ffd >= 0); flb_output_set(ctx, out_ffd, "match", "test", NULL); filter_ffd = flb_filter(ctx, (char *) "grep", NULL); TEST_CHECK(filter_ffd >= 0); ret = flb_filter_set(ctx, filter_ffd, "match", "*", NULL); TEST_CHECK(ret == 0); ret = flb_filter_set(ctx, filter_ffd, "Regex", "val 1", NULL); TEST_CHECK(ret == 0); ret = flb_start(ctx); TEST_CHECK(ret == 0); for (i = 0; i < 256; i++) { memset(p, '\0', sizeof(p)); snprintf(p, sizeof(p), "[%d, {\"val\": \"%d\",\"END_KEY\": \"JSON_END\"}]", i, (i * i)); bytes = flb_lib_push(ctx, in_ffd, p, strlen(p)); TEST_CHECK(bytes == strlen(p)); } sleep(1); /* waiting flush */ flb_stop(ctx); flb_destroy(ctx); } void flb_test_filter_grep_exclude(void) { int i; int ret; int bytes; char p[100]; flb_ctx_t *ctx; int in_ffd; int out_ffd; int filter_ffd; ctx = flb_create(); in_ffd = flb_input(ctx, (char *) "lib", NULL); TEST_CHECK(in_ffd >= 0); flb_input_set(ctx, in_ffd, "tag", "test", NULL); out_ffd = flb_output(ctx, (char *) "stdout", NULL); TEST_CHECK(out_ffd >= 0); flb_output_set(ctx, out_ffd, "match", "test", NULL); filter_ffd = flb_filter(ctx, (char *) "grep", NULL); TEST_CHECK(filter_ffd >= 0); ret = flb_filter_set(ctx, filter_ffd, "match", "*", NULL); TEST_CHECK(ret == 0); ret = flb_filter_set(ctx, filter_ffd, "Exclude", "val 1", NULL); TEST_CHECK(ret == 0); ret = flb_start(ctx); TEST_CHECK(ret == 0); for (i = 0; i < 256; i++) { memset(p, '\0', sizeof(p)); snprintf(p, sizeof(p), "[%d, {\"val\": \"%d\",\"END_KEY\": \"JSON_END\"}]", i, (i * i)); bytes = flb_lib_push(ctx, in_ffd, p, strlen(p)); TEST_CHECK(bytes == strlen(p)); } sleep(1); /* waiting flush */ flb_stop(ctx); flb_destroy(ctx); } void flb_test_filter_grep_invalid(void) { int i; int ret; int bytes; char p[100]; flb_ctx_t *ctx; int in_ffd; int out_ffd; int filter_ffd; ctx = flb_create(); in_ffd = flb_input(ctx, (char *) "lib", NULL); TEST_CHECK(in_ffd >= 0); flb_input_set(ctx, in_ffd, "tag", "test", NULL); out_ffd = flb_output(ctx, (char *) "stdout", NULL); TEST_CHECK(out_ffd >= 0); flb_output_set(ctx, out_ffd, "match", "test", NULL); filter_ffd = flb_filter(ctx, (char *) "grep", NULL); TEST_CHECK(filter_ffd >= 0); ret = flb_filter_set(ctx, filter_ffd, "match", "*", NULL); TEST_CHECK(ret == 0); ret = flb_filter_set(ctx, filter_ffd, "Regex", "val", NULL); TEST_CHECK(ret == 0); ret = flb_filter_set(ctx, filter_ffd, "Exclude", "val", NULL); TEST_CHECK(ret == 0); ret = flb_start(ctx); TEST_CHECK(ret == 0); for (i = 0; i < 256; i++) { memset(p, '\0', sizeof(p)); snprintf(p, sizeof(p), "[%d, {\"val\": \"%d\",\"END_KEY\": \"JSON_END\"}]", i, (i * i)); bytes = flb_lib_push(ctx, in_ffd, p, strlen(p)); TEST_CHECK(bytes == strlen(p)); } sleep(1); /* waiting flush */ flb_stop(ctx); flb_destroy(ctx); }