summaryrefslogtreecommitdiff
path: root/test/test_metric_histogram.cpp
diff options
context:
space:
mode:
authorchenzizhan <[email protected]>2023-09-15 18:14:26 +0800
committerchenzizhan <[email protected]>2023-10-08 17:03:28 +0800
commit9d452b417bbe330496347ad2c066d2541921ebd4 (patch)
treed523a9fc043c6810747f49296a8dbb961aaf2581 /test/test_metric_histogram.cpp
parent230821b167fda5ed30333dc9f5ca8c752e468a16 (diff)
stash4.3.0-4.3.4(python api)
Signed-off-by: chenzizhan <[email protected]>
Diffstat (limited to 'test/test_metric_histogram.cpp')
-rw-r--r--test/test_metric_histogram.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/test_metric_histogram.cpp b/test/test_metric_histogram.cpp
index 3f94245..d720efa 100644
--- a/test/test_metric_histogram.cpp
+++ b/test/test_metric_histogram.cpp
@@ -3,6 +3,9 @@
#include "fieldstat.h"
#include "utils.hpp"
+#include "hdr/hdr_histogram.h"
+#include "histogram_encoder.h"
+
struct fieldstat *test_init_standard_instance_one_cube_one_metric_one_cell_hdr()
{
struct fieldstat *instance = fieldstat_new();
@@ -179,6 +182,41 @@ TEST(metric_test_histogram, can_add_0value) // histogram only allow min_val > 0,
fieldstat_free(instance);
}
+extern "C" {
+ bool is_hll(char *buf);
+}
+
+TEST(metric_test_histogram, encode_decode_b64)
+{
+ struct hdr_histogram *h = NULL;
+ hdr_init(1, 10000, 5, &h);
+ hdr_record_value(h, 1234);
+ hdr_record_value(h, 1234);
+ hdr_record_value(h, 4312);
+
+ char *b64 = NULL;
+ size_t b64_len = 0;
+ histogram_encode_into_b64(h, &b64, &b64_len);
+
+ EXPECT_FALSE(is_hll(b64));
+
+ struct hdr_histogram *h2 = histogram_decode_from_b64(b64, b64_len);
+
+ EXPECT_TRUE(h2 != NULL);
+ EXPECT_EQ(h->lowest_discernible_value, h2->lowest_discernible_value);
+ EXPECT_EQ(h->highest_trackable_value, h2->highest_trackable_value);
+ EXPECT_EQ(h->significant_figures, h2->significant_figures);
+ EXPECT_EQ(h->counts_len, h2->counts_len);
+ for (int i = 0; i < h2->counts_len; i++)
+ {
+ EXPECT_EQ(h->counts[i], h2->counts[i]);
+ }
+
+ free(b64);
+ hdr_close(h);
+ hdr_close(h2);
+}
+
int main(int argc, char *argv[])
{
testing::InitGoogleTest(&argc, argv);