aboutsummaryrefslogtreecommitdiff
path: root/kamon-core-tests
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2018-01-17 02:14:27 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2018-01-17 02:14:27 +0100
commita02215f4327fc11ed8e5066ada22c1d5938d849e (patch)
tree90f1a61535b9cad97091217cb04b9c621c854fd3 /kamon-core-tests
parented6504f67549184c86e3b6fe752985179912f35c (diff)
downloadKamon-a02215f4327fc11ed8e5066ada22c1d5938d849e.tar.gz
Kamon-a02215f4327fc11ed8e5066ada22c1d5938d849e.tar.bz2
Kamon-a02215f4327fc11ed8e5066ada22c1d5938d849e.zip
allow metric filtering when adding a metrics reporter
Diffstat (limited to 'kamon-core-tests')
-rw-r--r--kamon-core-tests/src/test/scala/kamon/ReporterRegistrySpec.scala114
1 files changed, 114 insertions, 0 deletions
diff --git a/kamon-core-tests/src/test/scala/kamon/ReporterRegistrySpec.scala b/kamon-core-tests/src/test/scala/kamon/ReporterRegistrySpec.scala
new file mode 100644
index 00000000..d17c0f09
--- /dev/null
+++ b/kamon-core-tests/src/test/scala/kamon/ReporterRegistrySpec.scala
@@ -0,0 +1,114 @@
+package kamon
+
+import com.typesafe.config.Config
+import kamon.metric.PeriodSnapshot
+import kamon.testkit.Reconfigure
+import org.scalatest.concurrent.Eventually
+import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpec}
+
+class ReporterRegistrySpec extends WordSpec with Matchers with Reconfigure with Eventually with BeforeAndAfterAll {
+ "The ReporterRegistry" when {
+ "working with metrics reporters" should {
+ "report all metrics if no filters are applied" in {
+ Kamon.counter("test.hello").increment()
+ Kamon.counter("test.world").increment()
+ Kamon.counter("other.hello").increment()
+
+ val reporter = new SeenMetricsReporter()
+ val subscription = Kamon.addReporter(reporter, "reporter-registry-spec")
+
+ eventually {
+ reporter.snapshotCount() should be >= 1
+ reporter.metrics() should contain allOf(
+ "test.hello",
+ "test.world",
+ "other.hello"
+ )
+ }
+
+ subscription.cancel()
+ }
+
+ "default to deny all metrics if a provided filter name doesn't exist" in {
+ Kamon.counter("test.hello").increment()
+ Kamon.counter("test.world").increment()
+ Kamon.counter("other.hello").increment()
+
+ val reporter = new SeenMetricsReporter()
+ val subscription = Kamon.addReporter(reporter, "reporter-registry-spec", "does-not-exist")
+
+ eventually {
+ reporter.snapshotCount() should be >= 1
+ reporter.metrics() shouldBe empty
+ }
+
+ subscription.cancel()
+ }
+
+ "apply existent filters" in {
+ Kamon.counter("test.hello").increment()
+ Kamon.counter("test.world").increment()
+ Kamon.counter("other.hello").increment()
+
+ val reporter = new SeenMetricsReporter()
+ val subscription = Kamon.addReporter(reporter, "reporter-registry-spec", "real-filter")
+
+ eventually {
+ reporter.snapshotCount() should be >= 1
+ reporter.metrics() should contain allOf(
+ "test.hello",
+ "test.world"
+ )
+ }
+
+ subscription.cancel()
+ }
+ }
+ }
+
+
+ override protected def beforeAll(): Unit = {
+ applyConfig(
+ """
+ |kamon {
+ | metric.tick-interval = 10 millis
+ |
+ | util.filters {
+ | real-filter {
+ | includes = [ "test**" ]
+ | }
+ | }
+ |}
+ |
+ """.stripMargin
+ )
+ }
+
+
+ override protected def afterAll(): Unit = {
+ resetConfig()
+ }
+
+ abstract class DummyReporter extends MetricReporter {
+ override def start(): Unit = {}
+ override def stop(): Unit = {}
+ override def reconfigure(config: Config): Unit = {}
+ }
+
+ class SeenMetricsReporter extends DummyReporter {
+ @volatile private var count = 0
+ @volatile private var seenMetrics = Seq.empty[String]
+
+ override def reportPeriodSnapshot(snapshot: PeriodSnapshot): Unit = {
+ import snapshot.metrics._
+ count += 1
+ seenMetrics = counters.map(_.name) ++ histograms.map(_.name) ++ gauges.map(_.name) ++ rangeSamplers.map(_.name)
+ }
+
+ def metrics(): Seq[String] =
+ seenMetrics
+
+ def snapshotCount(): Int =
+ count
+ }
+}