summaryrefslogtreecommitdiff
path: root/test/test_serialize.cpp
diff options
context:
space:
mode:
authorchenzizhan <[email protected]>2023-07-21 10:44:11 +0800
committerchenzizhan <[email protected]>2023-07-21 10:44:11 +0800
commitd3d3333f0bbe4fbf4684048078901c1627ef701e (patch)
tree4b3315923770096131f8921fde4e0dddc562ac06 /test/test_serialize.cpp
parenta914208cdfed6dabda23978e6ba20f7db90c320b (diff)
fix bug on serialize
Diffstat (limited to 'test/test_serialize.cpp')
-rw-r--r--test/test_serialize.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/test_serialize.cpp b/test/test_serialize.cpp
new file mode 100644
index 0000000..0b78dcc
--- /dev/null
+++ b/test/test_serialize.cpp
@@ -0,0 +1,61 @@
+
+#include <gtest/gtest.h>
+#include "fieldstat.h"
+#include "utils.hpp"
+
+TEST(unit_test_serialize, serialize_and_deserialize_fieldstat_instance_comprehensive)
+{
+ struct fieldstat *instance = fieldstat_new();
+ int cube_id = fieldstat_register_cube(instance, &TEST_SHARED_TAG, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
+ int metric_id = fieldstat_register_counter(instance, cube_id, "czz_test counter metric", true);
+ int cell_id1 = fieldstat_cube_add(instance, cube_id, &TEST_TAG_STRING, 1, 1);
+ int cell_id2 = fieldstat_cube_add(instance, cube_id, &TEST_TAG_STRING_collided, 1, 1);
+ fieldstat_counter_incrby(instance, cube_id, metric_id, cell_id1, 10086);
+ fieldstat_counter_incrby(instance, cube_id, metric_id, cell_id2, 123);
+
+ char *blob;
+ size_t blob_size;
+ fieldstat_serialize(instance, &blob, &blob_size);
+ struct fieldstat *instance2 = fieldstat_deserialize(blob, blob_size);
+ free(blob);
+
+ int *ret_cube_id_arr = NULL;
+ int n_cube = 0;
+ fieldstat_get_cubes(instance2, &ret_cube_id_arr, &n_cube);
+ int ret_cell_id = ret_cube_id_arr[0];
+ free(ret_cube_id_arr);
+
+ EXPECT_EQ(ret_cell_id, 0);
+ int ret_metric_id = fieldstat_get_max_metric_id(instance2, ret_cell_id);
+ EXPECT_EQ(ret_metric_id, 0);
+ long long measure = fieldstat_counter_get(instance2, cube_id, metric_id, cell_id1);
+ printf("fieldstat_counter_get done, measure: %lld\n", measure);
+ EXPECT_EQ(measure, 10086);
+ const char *name = fieldstat_get_metric_name(instance2, cube_id, metric_id);
+ EXPECT_STREQ(name, "czz_test counter metric");
+
+ printf("going to get cells\n");
+
+ int *ret_cell_ids = NULL;
+ struct fieldstat_tag_list *tag_list = NULL;
+ size_t n_cell = 0;
+ fieldstat_get_cells(instance2, cube_id, metric_id, &ret_cell_ids, &tag_list, &n_cell);
+ EXPECT_EQ(n_cell, 2);
+ EXPECT_EQ(ret_cell_ids[0], cell_id1);
+ EXPECT_EQ(ret_cell_ids[1], cell_id2);
+ EXPECT_EQ(tag_list[0].n_tag, 1);
+ EXPECT_EQ(tag_list[1].n_tag, 1);
+ EXPECT_STREQ(tag_list[0].tag[0].key, TEST_TAG_STRING.key);
+ EXPECT_STREQ(tag_list[1].tag[0].key, TEST_TAG_STRING_collided.key);
+
+ fieldstat_free(instance);
+ fieldstat_free(instance2);
+ free(ret_cell_ids);
+ fieldstat_tag_list_arr_free(tag_list, n_cell);
+}
+
+int main(int argc, char *argv[])
+{
+ testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+} \ No newline at end of file