diff options
3 files changed, 46 insertions, 4 deletions
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 9c843eb4..3c749b3a 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -97,7 +97,7 @@ object Kamon { start() thunk(_coreComponents.get) - } else sys.error("Kamon has not been started yet. You must either explicitlt call Kamon.start(...) or enable " + + } else sys.error("Kamon has not been started yet. You must either explicitly call Kamon.start(...) or enable " + "automatic startup by adding -Dkamon.auto-start=true to your JVM options.") } diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/JsonProtocol.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/JsonProtocol.scala index 6e16b975..7f0d1383 100644 --- a/kamon-newrelic/src/main/scala/kamon/newrelic/JsonProtocol.scala +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/JsonProtocol.scala @@ -21,15 +21,17 @@ import spray.json._ object JsonProtocol extends DefaultJsonProtocol { implicit object ConnectJsonWriter extends RootJsonWriter[AgentSettings] { - def write(obj: AgentSettings): JsValue = + def write(obj: AgentSettings): JsValue = { + val appNames = obj.appName.split(";") JsArray( JsObject( "agent_version" -> JsString("3.1.0"), - "app_name" -> JsArray(JsString(obj.appName)), + "app_name" -> JsArray(appNames.map(n ⇒ JsString(n)).toVector), "host" -> JsString(obj.hostname), - "identifier" -> JsString(s"java:${obj.appName}"), + "identifier" -> JsString(s"java:${appNames(0)}"), "language" -> JsString("java"), "pid" -> JsNumber(obj.pid))) + } } implicit def seqWriter[T: JsonFormat] = new JsonFormat[Seq[T]] { diff --git a/kamon-newrelic/src/test/scala/kamon/newrelic/ConnectJsonWriterSpec.scala b/kamon-newrelic/src/test/scala/kamon/newrelic/ConnectJsonWriterSpec.scala new file mode 100644 index 00000000..1e903e59 --- /dev/null +++ b/kamon-newrelic/src/test/scala/kamon/newrelic/ConnectJsonWriterSpec.scala @@ -0,0 +1,40 @@ +/* + * ========================================================================================= + * 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.util.Timeout +import org.scalatest.{ Matchers, WordSpecLike } +import scala.concurrent.duration.DurationInt +import spray.json.JsValue + +class ConnectJsonWriterSpec extends WordSpecLike with Matchers { + import kamon.newrelic.JsonProtocol._ + + "the ConnectJsonWriter" should { + "produce the correct Json when a single app name is configured" in { + ConnectJsonWriter.write(agentSettings("app1")).compactPrint shouldBe expectedJson(""""app1"""") + } + + "produce the correct Json when multiple app names are configured" in { + ConnectJsonWriter.write(agentSettings("app1;app2;app3")).compactPrint shouldBe expectedJson(""""app1","app2","app3""""); + } + } + + def agentSettings(appName: String) = AgentSettings("1111111111", appName, "test-host", 1, Timeout(5 seconds), 1, 30 seconds, 1D) + + def expectedJson(appName: String) = s"""[{"identifier":"java:app1","agent_version":"3.1.0","host":"test-host","pid":1,"language":"java","app_name":[$appName]}]""" +}
\ No newline at end of file |