diff --git a/core/kamon-core-tests/src/test/scala/kamon/metric/HistogramSpec.scala b/core/kamon-core-tests/src/test/scala/kamon/metric/HistogramSpec.scala index 33a67e059..4660ac4d1 100644 --- a/core/kamon-core-tests/src/test/scala/kamon/metric/HistogramSpec.scala +++ b/core/kamon-core-tests/src/test/scala/kamon/metric/HistogramSpec.scala @@ -74,6 +74,16 @@ class HistogramSpec extends WordSpec with Matchers with InstrumentInspection.Syn ) } + "return the same percentile value that was request on a resulting distribution" in { + val histogram = Kamon.histogram("returned-percentile").withoutTags() + (1L to 10L).foreach(histogram.record) + + val distribution = histogram.distribution() + distribution.percentile(99).rank shouldBe(99) + distribution.percentile(99.9).rank shouldBe(99.9) + distribution.percentile(99.99).rank shouldBe(99.99D) + } + "[private api] record values and optionally keep the internal state when a snapshot is taken" in { val histogram = Kamon.histogram("test", unit = time.nanoseconds).withoutTags() histogram.record(100) diff --git a/core/kamon-core/src/main/scala/kamon/metric/Distribution.scala b/core/kamon-core/src/main/scala/kamon/metric/Distribution.scala index 2ad2d0a54..5787a7f30 100644 --- a/core/kamon-core/src/main/scala/kamon/metric/Distribution.scala +++ b/core/kamon-core/src/main/scala/kamon/metric/Distribution.scala @@ -285,7 +285,7 @@ object Distribution { currentPercentile = percentiles.next() } - currentPercentile + immutable.Percentile(p, currentPercentile.value, currentPercentile.countAtRank) } else immutable.Percentile(p, 0, 0) }