diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2018-11-14 22:35:33 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2018-11-14 22:35:33 +0100 |
commit | b068f55387e0cfe92b3ec403132d5c851d51eb00 (patch) | |
tree | ab3d813500be8283059af8dccbdb541713253dcd /kamon-core-tests | |
parent | aa88eb86c9bfd542ff1a068c2e745f4fb5e6edb6 (diff) | |
download | Kamon-b068f55387e0cfe92b3ec403132d5c851d51eb00.tar.gz Kamon-b068f55387e0cfe92b3ec403132d5c851d51eb00.tar.bz2 Kamon-b068f55387e0cfe92b3ec403132d5c851d51eb00.zip |
add a simple metric group utility for instrumentations
Diffstat (limited to 'kamon-core-tests')
-rw-r--r-- | kamon-core-tests/src/test/scala/kamon/instrumentation/MetricGroupSpec.scala | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/kamon-core-tests/src/test/scala/kamon/instrumentation/MetricGroupSpec.scala b/kamon-core-tests/src/test/scala/kamon/instrumentation/MetricGroupSpec.scala new file mode 100644 index 00000000..0b823bc4 --- /dev/null +++ b/kamon-core-tests/src/test/scala/kamon/instrumentation/MetricGroupSpec.scala @@ -0,0 +1,62 @@ +package kamon.instrumentation + +import kamon.Kamon +import kamon.testkit.MetricInspection +import org.scalatest.{Matchers, WordSpec} + +class MetricGroupSpec extends WordSpec with MetricInspection with Matchers { + + "a Metric Group" should { + "register metrics with common tags and remove them when cleaning up" in { + val group = new CommonTagsOnly(Map("type" -> "common")) + + Counter.valuesForTag("type") should contain only("common") + Gauge.valuesForTag("type") should contain only("common") + Histogram.valuesForTag("type") should contain only("common") + RangeSampler.valuesForTag("type") should contain only("common") + + group.cleanup() + + Counter.valuesForTag("type") shouldBe empty + Gauge.valuesForTag("type") shouldBe empty + Histogram.valuesForTag("type") shouldBe empty + RangeSampler.valuesForTag("type") shouldBe empty + } + + "override common tags with tags supplied to the tag method" in { + val group = new MixedTags(Map("type" -> "basic")) + + Counter.valuesForTag("type") should contain only("basic") + Gauge.valuesForTag("type") should contain only("simple") + Histogram.valuesForTag("type") should contain only("tuple") + RangeSampler.valuesForTag("type") should contain only("map") + + group.cleanup() + + Counter.valuesForTag("type") shouldBe empty + Gauge.valuesForTag("type") shouldBe empty + Histogram.valuesForTag("type") shouldBe empty + RangeSampler.valuesForTag("type") shouldBe empty + } + } + + + val Counter = Kamon.counter("metric.group.counter") + val Gauge = Kamon.gauge("metric.group.gauge") + val Histogram = Kamon.histogram("metric.group.histogram") + val RangeSampler = Kamon.rangeSampler("metric.group.range-sampler") + + class CommonTagsOnly(tags: Map[String, String]) extends MetricGroup(tags) { + val counter = tag(Counter) + val gauge = tag(Gauge) + val histogram = tag(Histogram) + val rangeSampler = tag(RangeSampler) + } + + class MixedTags(tags: Map[String, String]) extends MetricGroup(tags) { + val counter = tag(Counter) + val gauge = tag(Gauge, "type", "simple") + val histogram = tag(Histogram, "type" -> "tuple") + val rangeSampler = tag(RangeSampler, Map("type" -> "map")) + } +} |