diff options
Diffstat (limited to 'fluent-bit/tests/internal/mp.c')
-rw-r--r-- | fluent-bit/tests/internal/mp.c | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/fluent-bit/tests/internal/mp.c b/fluent-bit/tests/internal/mp.c deleted file mode 100644 index 5c1e17c2..00000000 --- a/fluent-bit/tests/internal/mp.c +++ /dev/null @@ -1,353 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -#include <fluent-bit/flb_compat.h> -#include <fluent-bit/flb_info.h> -#include <fluent-bit/flb_mem.h> -#include <fluent-bit/flb_pack.h> -#include <fluent-bit/flb_mp.h> -#include <msgpack.h> - -#include "flb_tests_internal.h" - - -#include <sys/types.h> -#include <sys/stat.h> - -#define APACHE_10K FLB_TESTS_DATA_PATH "/data/mp/apache_10k.mp" - -void test_count() -{ - int ret; - int count; - char *data; - size_t len; - struct stat st; - - ret = stat(APACHE_10K, &st); - if (ret == -1) { - exit(1); - } - len = st.st_size; - - data = mk_file_to_buffer(APACHE_10K); - TEST_CHECK(data != NULL); - - count = flb_mp_count(data, len); - TEST_CHECK(count == 10000); - flb_free(data); -} - -void test_map_header() -{ - int i; - int ret; - size_t off = 0; - msgpack_packer mp_pck; - msgpack_object root; - msgpack_sbuffer mp_sbuf; - msgpack_unpacked result; - struct flb_mp_map_header mh; - - msgpack_sbuffer_init(&mp_sbuf); - msgpack_packer_init(&mp_pck, &mp_sbuf, msgpack_sbuffer_write); - - /* Init map header */ - flb_mp_map_header_init(&mh, &mp_pck); - - /* Append 1000 items */ - for (i = 0; i < 100; i++) { - flb_mp_map_header_append(&mh); - msgpack_pack_str(&mp_pck, 3); - msgpack_pack_str_body(&mp_pck, "key", 3); - msgpack_pack_uint64(&mp_pck, i); - } - flb_mp_map_header_end(&mh); - - /* Unpack and check */ - msgpack_unpacked_init(&result); - ret = msgpack_unpack_next(&result, mp_sbuf.data, mp_sbuf.size, &off); - TEST_CHECK(ret == MSGPACK_UNPACK_SUCCESS); - - root = result.data; - TEST_CHECK(root.type == MSGPACK_OBJECT_MAP); - TEST_CHECK(root.via.array.size == 100); - - msgpack_unpacked_destroy(&result); - msgpack_sbuffer_destroy(&mp_sbuf); -} - -void test_accessor_keys_remove() -{ - int len; - int ret; - int type; - size_t off = 0; - char *buf; - size_t size; - char *out_buf; - size_t out_size; - char *json; - msgpack_unpacked result; - msgpack_object map; - struct flb_mp_accessor *mpa; - struct mk_list patterns; - - /* Sample JSON message */ - json = - "{\"key1\": \"something\", " - "\"kubernetes\": " - " [true, " - " false, " - " {\"a\": false, " - " \"annotations\": { " - " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" - "}}]}"; - - /* Convert to msgpack */ - len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); - TEST_CHECK(ret == 0); - if (ret == -1) { - exit(EXIT_FAILURE); - } - - /* Unpack the content */ - msgpack_unpacked_init(&result); - msgpack_unpack_next(&result, buf, size, &off); - map = result.data; - - /* Create list of patterns */ - flb_slist_create(&patterns); - flb_slist_add(&patterns, "$kubernetes[2]['annotations']['fluentbit.io/tag']"); - flb_slist_add(&patterns, "$key1"); - - /* Create mp accessor */ - mpa = flb_mp_accessor_create(&patterns); - TEST_CHECK(mpa != NULL); - - /* Remove the entry that matches the pattern(s) */ - ret = flb_mp_accessor_keys_remove(mpa, &map, (void *) &out_buf, &out_size); - TEST_CHECK(ret == FLB_TRUE); - - printf("\n=== ORIGINAL ===\n"); - flb_pack_print(buf, size); - flb_free(buf); - - printf("=== FINAL MAP ===\n"); - if (ret == FLB_TRUE) { - flb_pack_print(out_buf, out_size); - flb_free(out_buf); - } - - flb_mp_accessor_destroy(mpa); - flb_slist_destroy(&patterns); - msgpack_unpacked_destroy(&result); -} - -/* https://github.com/fluent/fluent-bit/issues/5546 */ -void test_keys_remove_subkey_key() -{ - int len; - int ret; - int type; - size_t off = 0; - char *buf; - size_t size; - char *out_buf; - size_t out_size; - char *json; - char final_json[2048] = {0}; - msgpack_unpacked result; - msgpack_unpacked result_final; - msgpack_object map; - struct flb_mp_accessor *mpa; - struct mk_list patterns; - - /* Sample JSON message */ - json = - "{\"key1\": \"something\", " - "\"kubernetes\": " - " [true, " - " false, " - " {\"a\": false, " - " \"annotations\": { " - " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" - "}}]}"; - - /* Convert to msgpack */ - len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); - TEST_CHECK(ret == 0); - if (ret == -1) { - exit(EXIT_FAILURE); - } - - /* Unpack the content */ - msgpack_unpacked_init(&result); - msgpack_unpack_next(&result, buf, size, &off); - map = result.data; - - /* Create list of patterns */ - flb_slist_create(&patterns); - - /* sub key -> key */ - flb_slist_add(&patterns, "$kubernetes[2]['annotations']['fluentbit.io/tag']"); - flb_slist_add(&patterns, "$kubernetes"); - - - /* Create mp accessor */ - mpa = flb_mp_accessor_create(&patterns); - TEST_CHECK(mpa != NULL); - - /* Remove the entry that matches the pattern(s) */ - ret = flb_mp_accessor_keys_remove(mpa, &map, (void *) &out_buf, &out_size); - TEST_CHECK(ret == FLB_TRUE); - - printf("\n=== ORIGINAL ===\n"); - flb_pack_print(buf, size); - flb_free(buf); - - printf("=== FINAL MAP ===\n"); - if (ret == FLB_TRUE) { - flb_pack_print(out_buf, out_size); - } - msgpack_unpacked_destroy(&result); - - off = 0; - msgpack_unpacked_init(&result_final); - msgpack_unpack_next(&result_final, out_buf, out_size, &off); - flb_msgpack_to_json(&final_json[0], sizeof(final_json), &result_final.data); - - if (!TEST_CHECK(strstr(&final_json[0] ,"kubernetes") == NULL)) { - TEST_MSG("kubernetes field should be removed"); - } - - msgpack_unpacked_destroy(&result_final); - - flb_free(out_buf); - flb_mp_accessor_destroy(mpa); - flb_slist_destroy(&patterns); - -} - -void remove_subkey_keys(char *list[], int list_size, int index_start) -{ - int len; - int ret; - int type; - size_t off = 0; - char *buf; - size_t size; - char *out_buf; - size_t out_size; - char *json; - char final_json[2048] = {0}; - msgpack_unpacked result; - msgpack_unpacked result_final; - msgpack_object map; - struct flb_mp_accessor *mpa; - struct mk_list patterns; - int i; - int count = 0; - - /* Sample JSON message */ - json = - "{\"key1\": \"something\", " - "\"kubernetes\": " - " [true, " - " false, " - " {\"a\": false, " - " \"annotations\": { " - " \"fluentbit.io/tag\": \"thetag\"," - " \"extra\": false\"" - "}}]}"; - - /* Convert to msgpack */ - len = strlen(json); - ret = flb_pack_json(json, len, &buf, &size, &type, NULL); - TEST_CHECK(ret == 0); - if (ret == -1) { - exit(EXIT_FAILURE); - } - - /* Unpack the content */ - msgpack_unpacked_init(&result); - msgpack_unpack_next(&result, buf, size, &off); - map = result.data; - - /* Create list of patterns */ - flb_slist_create(&patterns); - - /* sub keys */ - for (i=index_start; count<list_size; i++) { - if (i>=list_size) { - i = 0; - } - flb_slist_add(&patterns, list[i]); - count++; - } - - /* Create mp accessor */ - mpa = flb_mp_accessor_create(&patterns); - TEST_CHECK(mpa != NULL); - - /* Remove the entry that matches the pattern(s) */ - ret = flb_mp_accessor_keys_remove(mpa, &map, (void *) &out_buf, &out_size); - TEST_CHECK(ret == FLB_TRUE); - - printf("\n=== ORIGINAL ===\n"); - flb_pack_print(buf, size); - flb_free(buf); - - printf("=== FINAL MAP ===\n"); - if (ret == FLB_TRUE) { - flb_pack_print(out_buf, out_size); - } - msgpack_unpacked_destroy(&result); - - off = 0; - msgpack_unpacked_init(&result_final); - msgpack_unpack_next(&result_final, out_buf, out_size, &off); - flb_msgpack_to_json(&final_json[0], sizeof(final_json), &result_final.data); - - if (!TEST_CHECK(strstr(&final_json[0] ,"kubernetes") == NULL)) { - TEST_MSG("kubernetes field should be removed"); - } - - msgpack_unpacked_destroy(&result_final); - - flb_free(out_buf); - flb_mp_accessor_destroy(mpa); - flb_slist_destroy(&patterns); -} - -void test_keys_remove_subkey_keys() -{ - char *list[] = {"$kubernetes[2]['annotations']['fluentbit.io/tag']", - "$kubernetes[2]['a']", - "$kubernetes"}; - char *list2[] = {"$kubernetes[2]['annotations']['fluentbit.io/tag']", - "$kubernetes", - "$kubernetes[2]['a']"}; - - int size = sizeof(list)/sizeof(char*); - int i; - - for (i=0; i<size; i++) { - remove_subkey_keys(list, size, i); - } - for (i=0; i<size; i++) { - remove_subkey_keys(list2, size, i); - } -} - -TEST_LIST = { - {"count" , test_count}, - {"map_header" , test_map_header}, - {"accessor_keys_remove" , test_accessor_keys_remove}, - {"accessor_keys_remove_subkey_key" , test_keys_remove_subkey_key}, - {"accessor_keys_remove_subkey_keys" , test_keys_remove_subkey_keys}, - { 0 } -}; |