aboutsummaryrefslogtreecommitdiff
path: root/kamon-core-tests
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2018-11-14 22:35:33 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2018-11-14 22:35:33 +0100
commitb068f55387e0cfe92b3ec403132d5c851d51eb00 (patch)
treeab3d813500be8283059af8dccbdb541713253dcd /kamon-core-tests
parentaa88eb86c9bfd542ff1a068c2e745f4fb5e6edb6 (diff)
downloadKamon-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.scala62
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"))
+ }
+}