summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchenzizhan <[email protected]>2023-09-15 18:32:09 +0800
committerchenzizhan <[email protected]>2023-09-15 18:32:09 +0800
commit0e9f950e0a16d38326efe3dac707cd3563d2dc5a (patch)
treec45530f5a007e58dc6fc89362a5a343b78618f35
parent6e5d010519ac5b2512367e1582f253bc0cc53297 (diff)
allow record 0v4.2.2
-rw-r--r--src/metrics/metric.c6
-rw-r--r--test/test_metric_histogram.cpp18
2 files changed, 21 insertions, 3 deletions
diff --git a/src/metrics/metric.c b/src/metrics/metric.c
index 42127e1..320ac20 100644
--- a/src/metrics/metric.c
+++ b/src/metrics/metric.c
@@ -799,9 +799,9 @@ int metric_histogram_record(struct metric *pthis, int cell_id, long long value)
if (value > data->hdr->highest_trackable_value) {
value = data->hdr->highest_trackable_value;
}
- if (value < data->hdr->lowest_discernible_value) {
- value = data->hdr->lowest_discernible_value;
- }
+ // if (value < data->hdr->lowest_discernible_value) {
+ // value = data->hdr->lowest_discernible_value;
+ // }
bool ret = hdr_record_value(data->hdr, value);
if (!ret) {
return -1;
diff --git a/test/test_metric_histogram.cpp b/test/test_metric_histogram.cpp
index fca014a..3f94245 100644
--- a/test/test_metric_histogram.cpp
+++ b/test/test_metric_histogram.cpp
@@ -161,6 +161,24 @@ TEST(metric_test_histogram, add_with_wrong_metric_id_expecting_fail)
fieldstat_free(instance);
}
+TEST(metric_test_histogram, can_add_0value) // histogram only allow min_val > 0, but it can accept value == 0
+{
+ struct fieldstat *instance = fieldstat_new();
+ int cube_id = fieldstat_register_cube(instance, &TEST_TAG_INT_collided, 1, SAMPLING_MODE_COMPREHENSIVE, 10);
+ int metric_id = fieldstat_register_hist(instance, cube_id, "czz_test", 1, 600000, 3);
+ int cell_id = fieldstat_cube_add(instance, cube_id, &TEST_TAG_INT_collided, 1, 1);
+
+ int ret = fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 0);
+ EXPECT_EQ(ret, 0);
+ ret = fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 0);
+ EXPECT_EQ(ret, 0);
+ ret = fieldstat_hist_record(instance, cube_id, metric_id, cell_id, 500);
+
+ EXPECT_EQ(fieldstat_hist_value_at_percentile(instance, cube_id, metric_id, cell_id, 60.0), 0);
+
+ fieldstat_free(instance);
+}
+
int main(int argc, char *argv[])
{
testing::InitGoogleTest(&argc, argv);