diff options
author | Tristan Sallé <tristan.salle@teads.tv> | 2015-05-27 10:14:11 +0200 |
---|---|---|
committer | Tristan Sallé <tristan.salle@teads.tv> | 2015-07-15 09:26:38 +0200 |
commit | 02e18a1186f9b0dd9a7133ff30aa73774822db13 (patch) | |
tree | fbcf49e57eb671c47357f1b8cb151f07d9fc0522 /kamon-core/src/main/scala/kamon/trace/TraceSettings.scala | |
parent | dd9fec8b235b055b7a513ac74710618ba23532a5 (diff) | |
download | Kamon-02e18a1186f9b0dd9a7133ff30aa73774822db13.tar.gz Kamon-02e18a1186f9b0dd9a7133ff30aa73774822db13.tar.bz2 Kamon-02e18a1186f9b0dd9a7133ff30aa73774822db13.zip |
+ core: add a clock-sampler, fix ordered-sampler, add unit tests for samplers
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TraceSettings.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/TraceSettings.scala | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceSettings.scala b/kamon-core/src/main/scala/kamon/trace/TraceSettings.scala new file mode 100644 index 00000000..06677314 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/trace/TraceSettings.scala @@ -0,0 +1,49 @@ +/* + * ========================================================================================= + * Copyright © 2013-2015 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.trace + +import kamon.util.ConfigTools.Syntax +import com.typesafe.config.Config +import kamon.util.NanoInterval + +case class TraceSettings(levelOfDetail: LevelOfDetail, sampler: Sampler, tokenGeneratorFQN: String) + +object TraceSettings { + def apply(config: Config): TraceSettings = { + val tracerConfig = config.getConfig("kamon.trace") + + val detailLevel: LevelOfDetail = tracerConfig.getString("level-of-detail") match { + case "metrics-only" ⇒ LevelOfDetail.MetricsOnly + case "simple-trace" ⇒ LevelOfDetail.SimpleTrace + case other ⇒ sys.error(s"Unknown tracer level of detail [$other] present in the configuration file.") + } + + val sampler: Sampler = + if (detailLevel == LevelOfDetail.MetricsOnly) NoSampling + else tracerConfig.getString("sampling") match { + case "all" ⇒ SampleAll + case "random" ⇒ new RandomSampler(tracerConfig.getInt("random-sampler.chance")) + case "ordered" ⇒ new OrderedSampler(tracerConfig.getInt("ordered-sampler.sample-interval")) + case "threshold" ⇒ new ThresholdSampler(new NanoInterval(tracerConfig.getFiniteDuration("threshold-sampler.minimum-elapsed-time").toNanos)) + case "clock" ⇒ new ClockSampler(new NanoInterval(tracerConfig.getFiniteDuration("clock-sampler.pause").toNanos)) + } + + val tokenGeneratorFQN = tracerConfig.getString("token-generator") + + TraceSettings(detailLevel, sampler, tokenGeneratorFQN) + } +}
\ No newline at end of file |