diff options
| author | chenzizhan <[email protected]> | 2023-09-15 18:32:09 +0800 |
|---|---|---|
| committer | chenzizhan <[email protected]> | 2023-09-15 18:32:09 +0800 |
| commit | 0e9f950e0a16d38326efe3dac707cd3563d2dc5a (patch) | |
| tree | c45530f5a007e58dc6fc89362a5a343b78618f35 | |
| parent | 6e5d010519ac5b2512367e1582f253bc0cc53297 (diff) | |
allow record 0v4.2.2
| -rw-r--r-- | src/metrics/metric.c | 6 | ||||
| -rw-r--r-- | test/test_metric_histogram.cpp | 18 |
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); |
