aboutsummaryrefslogtreecommitdiff
path: root/kamon-newrelic/src/test/scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-newrelic/src/test/scala')
-rw-r--r--kamon-newrelic/src/test/scala/kamon/newrelic/CustomMetricExtractorSpec.scala45
-rw-r--r--kamon-newrelic/src/test/scala/kamon/newrelic/MetricsSubscriptionSpec.scala54
2 files changed, 99 insertions, 0 deletions
diff --git a/kamon-newrelic/src/test/scala/kamon/newrelic/CustomMetricExtractorSpec.scala b/kamon-newrelic/src/test/scala/kamon/newrelic/CustomMetricExtractorSpec.scala
new file mode 100644
index 00000000..5ab21655
--- /dev/null
+++ b/kamon-newrelic/src/test/scala/kamon/newrelic/CustomMetricExtractorSpec.scala
@@ -0,0 +1,45 @@
+/*
+ * =========================================================================================
+ * Copyright © 2013-2014 the kamon project <http://kamon.io/>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language governing permissions
+ * and limitations under the License.
+ * =========================================================================================
+ */
+
+package kamon.newrelic
+
+import org.scalatest.{ Matchers, WordSpecLike }
+
+/**
+ * @since 21.04.2015
+ */
+class CustomMetricExtractorSpec extends WordSpecLike with Matchers {
+
+ val cme = CustomMetricExtractor
+
+ "the CustomMetricExtractor" should {
+ "have a normalize method" which {
+ "is ok with an empty string" in {
+ cme.normalize("") should be("")
+ }
+ "is ok with normal '/'" in {
+ cme.normalize("akka/dispatcher/string") should be("akka#dispatcher#string")
+ }
+ "is ok with multiple '//'" in {
+ cme.normalize("akka///dispatcher//string") should be("akka###dispatcher##string")
+ }
+ "is ok with other special symbols" in {
+ cme.normalize("][|*akka*dispatcher|string[") should be("____akka_dispatcher_string_")
+ }
+ }
+ }
+}
+
diff --git a/kamon-newrelic/src/test/scala/kamon/newrelic/MetricsSubscriptionSpec.scala b/kamon-newrelic/src/test/scala/kamon/newrelic/MetricsSubscriptionSpec.scala
new file mode 100644
index 00000000..13e52b19
--- /dev/null
+++ b/kamon-newrelic/src/test/scala/kamon/newrelic/MetricsSubscriptionSpec.scala
@@ -0,0 +1,54 @@
+/*
+ * =========================================================================================
+ * Copyright © 2013-2014 the kamon project <http://kamon.io/>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language governing permissions
+ * and limitations under the License.
+ * =========================================================================================
+ */
+
+package kamon.newrelic
+
+import akka.event.NoLogging
+import com.typesafe.config.ConfigFactory
+import org.scalatest._
+
+import scala.collection.JavaConversions._
+
+/**
+ * @since 21.04.2015
+ */
+class MetricsSubscriptionSpec extends WordSpecLike with Matchers {
+
+ val instance = new MetricsSubscription {
+ override def log = NoLogging
+ }
+
+ val metrics = Seq("user-metrics", "trace", "akka-dispatcher", "akka-actor").zipWithIndex
+ val metricsStr = metrics map { m ⇒ m._1 + " = \"" + "*" * (m._2 + 1) + "\"" } mkString "\n"
+ val fullConfig = ConfigFactory.parseString(s"kamon.newrelic.custom-metric-subscriptions { $metricsStr }")
+
+ "the MetricsSubscription" should {
+
+ "read correct subscriptions from full configuration" in {
+ val cfg = instance.subscriptions(fullConfig)
+ cfg.entrySet().size should be(4)
+ cfg.entrySet().foreach { metric ⇒
+ val idx = metrics.indexWhere(_._1 == metric.getKey)
+ metric.getValue.unwrapped().toString should be("*" * (idx + 1))
+ }
+ }
+ "filter correct subscriptions" in {
+ val keys = instance.subscriptionKeys(fullConfig)
+ keys.size should be(3)
+ keys.contains("trace") shouldBe false
+ }
+ }
+}