diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2015-02-15 01:47:32 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2015-02-15 01:47:32 +0100 |
commit | 81c52c27d2b4784d561ae63b884b6e8c9e03db58 (patch) | |
tree | 1414f438c83976d60e98d27041ec3c177094881e | |
parent | a313e1e94b1f8a660e24a47f7f76a28a97dad8ff (diff) | |
download | Kamon-81c52c27d2b4784d561ae63b884b6e8c9e03db58.tar.gz Kamon-81c52c27d2b4784d561ae63b884b6e8c9e03db58.tar.bz2 Kamon-81c52c27d2b4784d561ae63b884b6e8c9e03db58.zip |
= all: stop using config.getDuration in favor of config.getFiniteDuration.
10 files changed, 57 insertions, 82 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/instrument/InstrumentSettings.scala b/kamon-core/src/main/scala/kamon/metric/instrument/InstrumentSettings.scala index 1446a25d..4423964a 100644 --- a/kamon-core/src/main/scala/kamon/metric/instrument/InstrumentSettings.scala +++ b/kamon-core/src/main/scala/kamon/metric/instrument/InstrumentSettings.scala @@ -20,14 +20,14 @@ case class InstrumentCustomSettings(lowestDiscernibleValue: Option[Long], highes } object InstrumentCustomSettings { - import scala.concurrent.duration._ + import kamon.util.ConfigTools.Syntax def fromConfig(config: Config): InstrumentCustomSettings = InstrumentCustomSettings( if (config.hasPath("lowest-discernible-value")) Some(config.getLong("lowest-discernible-value")) else None, if (config.hasPath("highest-trackable-value")) Some(config.getLong("highest-trackable-value")) else None, if (config.hasPath("precision")) Some(InstrumentSettings.parsePrecision(config.getString("precision"))) else None, - if (config.hasPath("refresh-interval")) Some(config.getDuration("refresh-interval", TimeUnit.NANOSECONDS).nanos) else None) + if (config.hasPath("refresh-interval")) Some(config.getFiniteDuration("refresh-interval")) else None) } @@ -54,13 +54,13 @@ case class DefaultInstrumentSettings(histogram: InstrumentSettings, minMaxCounte object DefaultInstrumentSettings { def fromConfig(config: Config): DefaultInstrumentSettings = { - import scala.concurrent.duration._ + import kamon.util.ConfigTools.Syntax val histogramSettings = InstrumentSettings(InstrumentSettings.readDynamicRange(config.getConfig("histogram")), None) val minMaxCounterSettings = InstrumentSettings(InstrumentSettings.readDynamicRange(config.getConfig("min-max-counter")), - Some(config.getDuration("min-max-counter.refresh-interval", TimeUnit.NANOSECONDS).nanos)) + Some(config.getFiniteDuration("min-max-counter.refresh-interval"))) val gaugeSettings = InstrumentSettings(InstrumentSettings.readDynamicRange(config.getConfig("gauge")), - Some(config.getDuration("gauge.refresh-interval", TimeUnit.NANOSECONDS).nanos)) + Some(config.getFiniteDuration("gauge.refresh-interval"))) DefaultInstrumentSettings(histogramSettings, minMaxCounterSettings, gaugeSettings) } diff --git a/kamon-core/src/main/scala/kamon/trace/Incubator.scala b/kamon-core/src/main/scala/kamon/trace/Incubator.scala index 3b2a3bf9..05279d95 100644 --- a/kamon-core/src/main/scala/kamon/trace/Incubator.scala +++ b/kamon-core/src/main/scala/kamon/trace/Incubator.scala @@ -16,24 +16,22 @@ package kamon.trace -import java.util.concurrent.TimeUnit - import akka.actor.{ ActorLogging, Props, Actor, ActorRef } import kamon.trace.Incubator.{ CheckForCompletedTraces, IncubatingTrace } import kamon.util.{ NanoInterval, RelativeNanoTimestamp } import scala.annotation.tailrec import scala.collection.immutable.Queue -import scala.concurrent.duration._ +import kamon.util.ConfigTools.Syntax class Incubator(subscriptions: ActorRef) extends Actor with ActorLogging { import context.dispatcher val config = context.system.settings.config.getConfig("kamon.trace.incubator") - val minIncubationTime = new NanoInterval(config.getDuration("min-incubation-time", TimeUnit.NANOSECONDS)) - val maxIncubationTime = new NanoInterval(config.getDuration("max-incubation-time", TimeUnit.NANOSECONDS)) - val checkInterval = config.getDuration("check-interval", TimeUnit.MILLISECONDS) + val minIncubationTime = new NanoInterval(config.getFiniteDuration("min-incubation-time").toNanos) + val maxIncubationTime = new NanoInterval(config.getFiniteDuration("max-incubation-time").toNanos) + val checkInterval = config.getFiniteDuration("check-interval") - val checkSchedule = context.system.scheduler.schedule(checkInterval.millis, checkInterval.millis, self, CheckForCompletedTraces) + val checkSchedule = context.system.scheduler.schedule(checkInterval, checkInterval, self, CheckForCompletedTraces) var waitingForMinimumIncubation = Queue.empty[IncubatingTrace] var waitingForIncubationFinish = List.empty[IncubatingTrace] diff --git a/kamon-core/src/main/scala/kamon/trace/TracerExtensionSettings.scala b/kamon-core/src/main/scala/kamon/trace/TracerExtensionSettings.scala index 7510ab7f..6167a007 100644 --- a/kamon-core/src/main/scala/kamon/trace/TracerExtensionSettings.scala +++ b/kamon-core/src/main/scala/kamon/trace/TracerExtensionSettings.scala @@ -17,7 +17,7 @@ package kamon.trace import java.util.concurrent.TimeUnit - +import kamon.util.ConfigTools.Syntax import com.typesafe.config.Config case class TraceSettings(levelOfDetail: LevelOfDetail, sampler: Sampler) @@ -38,7 +38,7 @@ object TraceSettings { case "all" ⇒ SampleAll case "random" ⇒ new RandomSampler(tracerConfig.getInt("random-sampler.chance")) case "ordered" ⇒ new OrderedSampler(tracerConfig.getInt("ordered-sampler.interval")) - case "threshold" ⇒ new ThresholdSampler(tracerConfig.getDuration("threshold-sampler.minimum-elapsed-time", TimeUnit.NANOSECONDS)) + case "threshold" ⇒ new ThresholdSampler(tracerConfig.getFiniteDuration("threshold-sampler.minimum-elapsed-time").toNanos) } TraceSettings(detailLevel, sampler) diff --git a/kamon-core/src/main/scala/kamon/util/ConfigTools.scala b/kamon-core/src/main/scala/kamon/util/ConfigTools.scala index 483278bf..bcec22c3 100644 --- a/kamon-core/src/main/scala/kamon/util/ConfigTools.scala +++ b/kamon-core/src/main/scala/kamon/util/ConfigTools.scala @@ -28,7 +28,7 @@ object ConfigTools { // versions of Akka using older typesafe-config versions. def getFiniteDuration(path: String): FiniteDuration = - FiniteDuration(config.getNanoseconds(path), TimeUnit.NANOSECONDS) + FiniteDuration(config.getDuration(path, TimeUnit.NANOSECONDS), TimeUnit.NANOSECONDS) def firstLevelKeys: Set[String] = { import scala.collection.JavaConverters._ diff --git a/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala b/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala index 53ffd4e6..ab909055 100644 --- a/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala +++ b/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala @@ -17,7 +17,6 @@ package kamon.datadog import java.net.InetSocketAddress -import java.util.concurrent.TimeUnit.MILLISECONDS import akka.actor._ import akka.event.Logging @@ -41,9 +40,9 @@ class DatadogExtension(system: ExtendedActorSystem) extends Kamon.Extension { private val datadogConfig = system.settings.config.getConfig("kamon.datadog") val datadogHost = new InetSocketAddress(datadogConfig.getString("hostname"), datadogConfig.getInt("port")) - val flushInterval = datadogConfig.getDuration("flush-interval", MILLISECONDS) + val flushInterval = datadogConfig.getFiniteDuration("flush-interval") val maxPacketSizeInBytes = datadogConfig.getBytes("max-packet-size") - val tickInterval = system.settings.config.getDuration("kamon.metric.tick-interval", MILLISECONDS) + val tickInterval = Kamon.metrics.settings.tickInterval val datadogMetricsListener = buildMetricsListener(tickInterval, flushInterval) @@ -54,7 +53,7 @@ class DatadogExtension(system: ExtendedActorSystem) extends Kamon.Extension { } } - def buildMetricsListener(tickInterval: Long, flushInterval: Long): ActorRef = { + def buildMetricsListener(tickInterval: FiniteDuration, flushInterval: FiniteDuration): ActorRef = { assert(flushInterval >= tickInterval, "Datadog flush-interval needs to be equal or greater to the tick-interval") val metricsSender = system.actorOf(DatadogMetricsSender.props(datadogHost, maxPacketSizeInBytes), "datadog-metrics-sender") @@ -62,7 +61,7 @@ class DatadogExtension(system: ExtendedActorSystem) extends Kamon.Extension { // No need to buffer the metrics, let's go straight to the metrics sender. metricsSender } else { - system.actorOf(TickMetricSnapshotBuffer.props(flushInterval.toInt.millis, metricsSender), "datadog-metrics-buffer") + system.actorOf(TickMetricSnapshotBuffer.props(flushInterval, metricsSender), "datadog-metrics-buffer") } } } diff --git a/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala b/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala index 036789b7..f66af7a6 100644 --- a/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala +++ b/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala @@ -15,7 +15,7 @@ package kamon.jdbc -import java.util.concurrent.TimeUnit.{ MILLISECONDS ⇒ milliseconds } +import kamon.util.ConfigTools.Syntax import akka.actor.{ ExtendedActorSystem, Extension, ExtensionId, ExtensionIdProvider } import kamon.Kamon @@ -39,7 +39,7 @@ class JdbcExtension(system: ExtendedActorSystem) extends Kamon.Extension { private val sqlErrorProcessorClass = config.getString("sql-error-processor") private val sqlErrorProcessor: SqlErrorProcessor = system.dynamicAccess.createInstanceFor[SqlErrorProcessor](sqlErrorProcessorClass, Nil).get - val slowQueryThreshold = config.getDuration("slow-query-threshold", milliseconds) + val slowQueryThreshold = config.getFiniteDuration("slow-query-threshold").toMillis def processSlowQuery(sql: String, executionTime: Long) = slowQueryProcessor.process(sql, executionTime, slowQueryThreshold) def processSqlError(sql: String, ex: Throwable) = sqlErrorProcessor.process(sql, ex) diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/Agent.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/Agent.scala index aa6aed3b..e65b2460 100644 --- a/kamon-newrelic/src/main/scala/kamon/newrelic/Agent.scala +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/Agent.scala @@ -16,8 +16,6 @@ package kamon.newrelic -import java.util.concurrent.TimeUnit.{ MILLISECONDS ⇒ milliseconds } - import akka.actor.{ ActorLogging, Actor } import akka.io.IO import akka.util.Timeout @@ -28,11 +26,13 @@ import scala.concurrent.Future import spray.httpx.SprayJsonSupport import spray.json.lenses.JsonLenses._ import java.lang.management.ManagementFactory -import scala.concurrent.duration._ +import kamon.util.ConfigTools.Syntax import Agent._ import JsonProtocol._ import akka.pattern.pipe +import scala.concurrent.duration.FiniteDuration + class Agent extends Actor with SprayJsonSupport with ActorLogging { import context.dispatcher @@ -136,9 +136,9 @@ object AgentSettings { newRelicConfig.getString("app-name"), runtimeName(1), runtimeName(0).toInt, - Timeout(newRelicConfig.getDuration("operation-timeout", milliseconds).millis), + Timeout(newRelicConfig.getFiniteDuration("operation-timeout")), newRelicConfig.getInt("max-connect-retries"), - FiniteDuration(newRelicConfig.getDuration("connect-retry-delay", milliseconds), milliseconds), - newRelicConfig.getDuration("apdexT", milliseconds) / 1E3D) + newRelicConfig.getFiniteDuration("connect-retry-delay"), + newRelicConfig.getFiniteDuration("apdexT").toMillis / 1E3D) } }
\ No newline at end of file diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/MetricReporter.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/MetricReporter.scala index 31c04f7a..7ee7d1e6 100644 --- a/kamon-newrelic/src/main/scala/kamon/newrelic/MetricReporter.scala +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/MetricReporter.scala @@ -1,7 +1,5 @@ package kamon.newrelic -import java.util.concurrent.TimeUnit - import akka.actor.{ Props, ActorLogging, Actor } import akka.pattern.pipe import akka.io.IO @@ -22,10 +20,10 @@ class MetricReporter(settings: AgentSettings) extends Actor with ActorLogging wi val metricsExtension = Kamon.metrics val collectionContext = metricsExtension.buildDefaultCollectionContext val metricsSubscriber = { - val tickInterval = context.system.settings.config.getDuration("kamon.metric.tick-interval", TimeUnit.MILLISECONDS) + val tickInterval = Kamon.metrics.settings.tickInterval // Metrics are always sent to New Relic in 60 seconds intervals. - if (tickInterval == 60000) self + if (tickInterval == 60.seconds) self else context.actorOf(TickMetricSnapshotBuffer.props(1 minute, self), "metric-buffer") } diff --git a/project/Projects.scala b/project/Projects.scala index e2aed340..d52a7764 100644 --- a/project/Projects.scala +++ b/project/Projects.scala @@ -30,14 +30,11 @@ object Projects extends Build { lazy val kamonCore: Project = Project("kamon-core", file("kamon-core")) - .dependsOn(kamonMacros % "compile-internal, test-internal") .settings(basicSettings: _*) .settings(formatSettings: _*) .settings(aspectJSettings: _*) .settings( - javacOptions in Compile ++= Seq("-XDignore.symbol.file"), - mappings in (Compile, packageBin) ++= mappings.in(kamonMacros, Compile, packageBin).value, - mappings in (Compile, packageSrc) ++= mappings.in(kamonMacros, Compile, packageSrc).value, + javacOptions in Compile ++= Seq("-XDignore.symbol.file"), libraryDependencies ++= compile(akkaActor, hdrHistogram) ++ provided(aspectJ) ++ @@ -47,7 +44,6 @@ object Projects extends Build { lazy val kamonAkka = Project("kamon-akka", file("kamon-akka")) .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonMacros % "compile-internal, test-internal") .dependsOn(kamonScala) .settings(basicSettings: _* ) .settings(formatSettings: _*) @@ -62,7 +58,6 @@ object Projects extends Build { lazy val kamonScala = Project("kamon-scala", file("kamon-scala")) .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonMacros % "compile-internal, test-internal") .settings(basicSettings: _* ) .settings(formatSettings: _*) .settings(aspectJSettings: _*) @@ -86,23 +81,18 @@ object Projects extends Build { lazy val kamonSpray = Project("kamon-spray", file("kamon-spray")) - .dependsOn(kamonMacros % "compile-internal, test-internal") + .dependsOn(kamonCore % "compile->compile;test->test", kamonAkka, kamonTestkit % "test") .settings(basicSettings: _*) .settings(formatSettings: _*) .settings(aspectJSettings: _*) .settings( - mappings in (Compile, packageBin) ++= mappings.in(kamonMacros, Compile, packageBin).value, - mappings in (Compile, packageSrc) ++= mappings.in(kamonMacros, Compile, packageSrc).value, libraryDependencies ++= compile(akkaActor, sprayCan, sprayClient, sprayRouting) ++ provided(aspectJ) ++ test(scalatest, akkaTestKit, sprayTestkit, akkaSlf4j, slf4Jul, slf4Log4j, logback)) - .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonAkka) - .dependsOn(kamonTestkit % "test") - lazy val kamonNewrelic = Project("kamon-newrelic", file("kamon-newrelic")) + .dependsOn(kamonCore % "compile->compile;test->test", kamonTestkit % "compile->compile;test->test") .settings(basicSettings: _*) .settings(formatSettings: _*) .settings(aspectJSettings: _*) @@ -111,11 +101,10 @@ object Projects extends Build { compile(sprayCan, sprayClient, sprayRouting, sprayJson, sprayJsonLenses, newrelic, akkaSlf4j) ++ provided(aspectJ) ++ test(scalatest, akkaTestKit, sprayTestkit, slf4Api, akkaSlf4j)) - .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonTestkit % "compile->compile;test->test") lazy val kamonPlayground = Project("kamon-playground", file("kamon-playground")) + .dependsOn(kamonSpray, kamonNewrelic, kamonStatsD, kamonDatadog, kamonLogReporter, kamonSystemMetrics) .settings(basicSettings: _*) .settings(formatSettings: _*) .settings(noPublishing: _*) @@ -123,19 +112,19 @@ object Projects extends Build { .settings( libraryDependencies ++= compile(akkaActor, akkaSlf4j, sprayCan, sprayClient, sprayRouting, logback)) - .dependsOn(kamonSpray, kamonNewrelic, kamonStatsD, kamonDatadog, kamonLogReporter, kamonSystemMetrics) lazy val kamonDashboard = Project("kamon-dashboard", file("kamon-dashboard")) + .dependsOn(kamonCore) .settings(basicSettings: _*) .settings(formatSettings: _*) .settings( libraryDependencies ++= compile(akkaActor, akkaSlf4j, sprayRouting, sprayCan, sprayJson)) - .dependsOn(kamonCore) lazy val kamonTestkit = Project("kamon-testkit", file("kamon-testkit")) + .dependsOn(kamonCore) .settings(basicSettings: _*) .settings(formatSettings: _*) .settings( @@ -143,9 +132,9 @@ object Projects extends Build { compile(akkaActor, akkaTestKit) ++ provided(aspectJ) ++ test(slf4Api, slf4nop)) - .dependsOn(kamonCore) lazy val kamonPlay = Project("kamon-play", file("kamon-play")) + .dependsOn(kamonCore % "compile->compile;test->test", kamonScala, kamonAkka) .settings(basicSettings: _*) .settings(formatSettings: _*) .settings(aspectJSettings: _*) @@ -154,64 +143,55 @@ object Projects extends Build { compile(play, playWS) ++ provided(aspectJ) ++ test(playTest, akkaTestKit, slf4Api)) - .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonScala) - .dependsOn(kamonAkka) lazy val kamonStatsD = Project("kamon-statsd", file("kamon-statsd")) + .dependsOn(kamonCore % "compile->compile;test->test") .settings(basicSettings: _*) .settings(formatSettings: _*) .settings( libraryDependencies ++= compile(akkaActor) ++ test(scalatest, akkaTestKit, slf4Api, slf4nop)) - .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonSystemMetrics % "provided") - + lazy val kamonDatadog = Project("kamon-datadog", file("kamon-datadog")) + .dependsOn(kamonCore % "compile->compile;test->test") .settings(basicSettings: _*) .settings(formatSettings: _*) .settings( libraryDependencies ++= compile(akkaActor) ++ test(scalatest, akkaTestKit, slf4Api, slf4nop)) - .dependsOn(kamonCore % "compile->compile;test->test") - .dependsOn(kamonSystemMetrics % "provided") + lazy val kamonLogReporter = Project("kamon-log-reporter", file("kamon-log-reporter")) + .dependsOn(kamonCore) .settings(basicSettings: _*) .settings(formatSettings: _*) .settings( libraryDependencies ++= compile(akkaActor) ++ test(scalatest, akkaTestKit, slf4Api, slf4nop)) - .dependsOn(kamonCore) - lazy val kamonMacros = Project("kamon-macros", file("kamon-macros")) + + lazy val kamonSystemMetrics = Project("kamon-system-metrics", file("kamon-system-metrics")) + .dependsOn(kamonCore % "compile->compile;test->test") .settings(basicSettings: _*) .settings(formatSettings: _*) - .settings(noPublishing: _*) - .settings(libraryDependencies ++= compile(scalaCompiler)) + .settings(fork in Test := true) + .settings( + libraryDependencies ++= + compile(sigarLoader) ++ + test(scalatest, akkaTestKit, slf4Api, slf4Jul, slf4Log4j, logback)) - lazy val kamonSystemMetrics = Project("kamon-system-metrics", file("kamon-system-metrics")) - .settings(basicSettings: _*) - .settings(formatSettings: _*) - .settings(fork in Test := true) - .settings( - libraryDependencies ++= - compile(sigarLoader) ++ - test(scalatest, akkaTestKit, slf4Api, slf4Jul, slf4Log4j, logback)) - .dependsOn(kamonCore % "compile->compile;test->test") - lazy val kamonJdbc = Project("kamon-jdbc", file("kamon-jdbc")) - .settings(basicSettings: _*) - .settings(formatSettings: _*) - .settings(aspectJSettings: _*) - .settings( - libraryDependencies ++= - test(h2,scalatest, akkaTestKit, slf4Api) ++ - provided(aspectJ)) - .dependsOn(kamonCore % "compile->compile;test->test") + .dependsOn(kamonCore % "compile->compile;test->test") + .settings(basicSettings: _*) + .settings(formatSettings: _*) + .settings(aspectJSettings: _*) + .settings( + libraryDependencies ++= + test(h2,scalatest, akkaTestKit, slf4Api) ++ + provided(aspectJ)) val noPublishing = Seq(publish := (), publishLocal := (), publishArtifact := false) } diff --git a/project/Settings.scala b/project/Settings.scala index c454d63a..3758fb15 100644 --- a/project/Settings.scala +++ b/project/Settings.scala @@ -32,7 +32,7 @@ object Settings { scalaVersion := ScalaVersion, resolvers ++= Dependencies.resolutionRepos, fork in run := true, - testGrouping in Test := singleTests((definedTests in Test).value, (javaOptions in Test).value), + testGrouping in Test := singleTestPerJvm((definedTests in Test).value, (javaOptions in Test).value), javacOptions in compile := Seq( "-Xlint:-options", "-source", JavaVersion, "-target", JavaVersion @@ -56,7 +56,7 @@ object Settings { )) ++ publishSettings ++ releaseSettings ++ graphSettings - def singleTests(tests: Seq[TestDefinition], jvmSettings: Seq[String]): Seq[Group] = + def singleTestPerJvm(tests: Seq[TestDefinition], jvmSettings: Seq[String]): Seq[Group] = tests map { test => new Group( name = test.name, |