Skip to content

Commit cbdd4a8

Browse files
committed
tests: internal: add unit test for 'mp' api
Signed-off-by: Eduardo Silva <eduardo@treasure-data.com>
1 parent ad769dd commit cbdd4a8

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

tests/internal/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ set(UNIT_TESTS_FILES
1717
gzip.c
1818
gelf.c
1919
config_map.c
20+
mp.c
2021
)
2122

2223
if(FLB_PARSER)

tests/internal/mp.c

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2+
3+
#include <fluent-bit/flb_info.h>
4+
#include <fluent-bit/flb_mem.h>
5+
#include <fluent-bit/flb_mp.h>
6+
#include <msgpack.h>
7+
8+
#include "flb_tests_internal.h"
9+
10+
11+
#include <sys/types.h>
12+
#include <sys/stat.h>
13+
#include <unistd.h>
14+
15+
#define APACHE_10K FLB_TESTS_DATA_PATH "/data/mp/apache_10k.mp"
16+
17+
void test_count()
18+
{
19+
int ret;
20+
int count;
21+
char *data;
22+
size_t len;
23+
struct stat st;
24+
25+
ret = stat(APACHE_10K, &st);
26+
if (ret == -1) {
27+
exit(1);
28+
}
29+
len = st.st_size;
30+
31+
data = mk_file_to_buffer(APACHE_10K);
32+
TEST_CHECK(data != NULL);
33+
34+
count = flb_mp_count(data, len);
35+
TEST_CHECK(count == 10000);
36+
flb_free(data);
37+
}
38+
39+
void test_map_header()
40+
{
41+
int i;
42+
int ret;
43+
size_t off = 0;
44+
msgpack_packer mp_pck;
45+
msgpack_object root;
46+
msgpack_sbuffer mp_sbuf;
47+
msgpack_unpacked result;
48+
struct flb_mp_map_header mh;
49+
50+
msgpack_sbuffer_init(&mp_sbuf);
51+
msgpack_packer_init(&mp_pck, &mp_sbuf, msgpack_sbuffer_write);
52+
53+
/* Init map header */
54+
flb_mp_map_header_init(&mh, &mp_pck);
55+
56+
/* Append 1000 items */
57+
for (i = 0; i < 100; i++) {
58+
flb_mp_map_header_append(&mh);
59+
msgpack_pack_str(&mp_pck, 3);
60+
msgpack_pack_str_body(&mp_pck, "key", 3);
61+
msgpack_pack_uint64(&mp_pck, i);
62+
}
63+
flb_mp_map_header_end(&mh);
64+
65+
/* Unpack and check */
66+
msgpack_unpacked_init(&result);
67+
ret = msgpack_unpack_next(&result, mp_sbuf.data, mp_sbuf.size, &off);
68+
TEST_CHECK(ret == MSGPACK_UNPACK_SUCCESS);
69+
70+
root = result.data;
71+
TEST_CHECK(root.type == MSGPACK_OBJECT_MAP);
72+
TEST_CHECK(root.via.array.size == 100);
73+
74+
msgpack_unpacked_destroy(&result);
75+
msgpack_sbuffer_destroy(&mp_sbuf);
76+
}
77+
78+
TEST_LIST = {
79+
{"count" , test_count},
80+
{"map_header" , test_map_header},
81+
{ 0 }
82+
};

0 commit comments

Comments
 (0)