aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-11-09 22:55:43 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2014-11-09 22:56:03 +0100
commit2f274788aa8c96eed918ef3ddb69de496d5d0346 (patch)
treea4c373ad250dad44caa88497771db46a00178975 /kamon-core/src
parent17ff90ce6e91554b464a9951ddd5e6ffafb4d3ff (diff)
downloadKamon-2f274788aa8c96eed918ef3ddb69de496d5d0346.tar.gz
Kamon-2f274788aa8c96eed918ef3ddb69de496d5d0346.tar.bz2
Kamon-2f274788aa8c96eed918ef3ddb69de496d5d0346.zip
+ core,play,spray: allow segments to identify the library they belong to.
Diffstat (limited to 'kamon-core/src')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceContext.scala24
-rw-r--r--kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala8
-rw-r--r--kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala4
3 files changed, 19 insertions, 17 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
index 9555daba..5b74e6b2 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
@@ -37,14 +37,15 @@ sealed trait TraceContext {
def isClosed: Boolean = !isOpen
def isEmpty: Boolean
def nonEmpty: Boolean = !isEmpty
- def startSegment(segmentName: String, label: String): Segment
+ def startSegment(segmentName: String, category: String, library: String): Segment
def nanoTimestamp: Long
}
sealed trait Segment {
def name: String
def rename(newName: String): Unit
- def label: String
+ def category: String
+ def library: String
def finish(): Unit
def isEmpty: Boolean
}
@@ -57,12 +58,13 @@ case object EmptyTraceContext extends TraceContext {
def origin: TraceContextOrigin = TraceContextOrigin.Local
def isOpen: Boolean = false
def isEmpty: Boolean = true
- def startSegment(segmentName: String, label: String): Segment = EmptySegment
+ def startSegment(segmentName: String, category: String, library: String): Segment = EmptySegment
def nanoTimestamp: Long = 0L
case object EmptySegment extends Segment {
val name: String = "empty-segment"
- val label: String = "empty-label"
+ val category: String = "empty-category"
+ val library: String = "empty-library"
def isEmpty: Boolean = true
def rename(newName: String): Unit = {}
def finish: Unit = {}
@@ -99,7 +101,7 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean,
}
}
- def startSegment(segmentName: String, segmentLabel: String): Segment = new DefaultSegment(segmentName, segmentLabel)
+ def startSegment(segmentName: String, category: String, library: String): Segment = new DefaultSegment(segmentName, category, library)
@tailrec private def drainFinishedSegments(metricRecorder: TraceMetricRecorder): Unit = {
val segment = finishedSegments.poll()
@@ -109,8 +111,8 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean,
}
}
- private def finishSegment(segmentName: String, label: String, duration: Long): Unit = {
- finishedSegments.add(SegmentData(SegmentMetricIdentity(segmentName, label), duration))
+ private def finishSegment(segmentName: String, category: String, library: String, duration: Long): Unit = {
+ finishedSegments.add(SegmentData(SegmentMetricIdentity(segmentName, category, library), duration))
if (isClosed) {
metricsExtension.register(TraceMetrics(name), TraceMetrics.Factory).map { traceMetrics ⇒
@@ -119,7 +121,7 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean,
}
}
- class DefaultSegment(segmentName: String, val label: String) extends Segment {
+ class DefaultSegment(segmentName: String, val category: String, val library: String) extends Segment {
private val _segmentStartNanoTime = System.nanoTime()
@volatile private var _segmentName = segmentName
@volatile private var _isOpen = true
@@ -130,15 +132,15 @@ class DefaultTraceContext(traceName: String, val token: String, izOpen: Boolean,
def finish: Unit = {
val segmentFinishNanoTime = System.nanoTime()
- finishSegment(name, label, (segmentFinishNanoTime - _segmentStartNanoTime))
+ finishSegment(name, category, library, (segmentFinishNanoTime - _segmentStartNanoTime))
}
}
}
-case class SegmentMetricIdentity(name: String, label: String) extends MetricIdentity
+case class SegmentMetricIdentity(name: String, category: String, library: String) extends MetricIdentity
case class SegmentData(identity: SegmentMetricIdentity, duration: Long)
-object SegmentMetricIdentityLabel {
+object SegmentCategory {
val HttpClient = "http-client"
}
diff --git a/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala b/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala
index 6453dd77..cd10f2d3 100644
--- a/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala
+++ b/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala
@@ -53,7 +53,7 @@ class TraceMetricsSpec extends TestKitBase with WordSpecLike with Matchers with
"record the elapsed time for segments that occur inside a given trace" in {
TraceRecorder.withNewTraceContext("trace-with-segments") {
- val segment = TraceRecorder.currentContext.startSegment("test-segment", "test-label")
+ val segment = TraceRecorder.currentContext.startSegment("test-segment", "test-category", "test-library")
segment.finish()
TraceRecorder.finish()
}
@@ -61,12 +61,12 @@ class TraceMetricsSpec extends TestKitBase with WordSpecLike with Matchers with
val snapshot = takeSnapshotOf("trace-with-segments")
snapshot.elapsedTime.numberOfMeasurements should be(1)
snapshot.segments.size should be(1)
- snapshot.segments(SegmentMetricIdentity("test-segment", "test-label")).numberOfMeasurements should be(1)
+ snapshot.segments(SegmentMetricIdentity("test-segment", "test-category", "test-library")).numberOfMeasurements should be(1)
}
"record the elapsed time for segments that finish after their correspondent trace has finished" in {
val segment = TraceRecorder.withNewTraceContext("closing-segment-after-trace") {
- val s = TraceRecorder.currentContext.startSegment("test-segment", "test-label")
+ val s = TraceRecorder.currentContext.startSegment("test-segment", "test-category", "test-library")
TraceRecorder.finish()
s
}
@@ -80,7 +80,7 @@ class TraceMetricsSpec extends TestKitBase with WordSpecLike with Matchers with
val afterFinishSegmentSnapshot = takeSnapshotOf("closing-segment-after-trace")
afterFinishSegmentSnapshot.elapsedTime.numberOfMeasurements should be(0)
afterFinishSegmentSnapshot.segments.size should be(1)
- afterFinishSegmentSnapshot.segments(SegmentMetricIdentity("test-segment", "test-label")).numberOfMeasurements should be(1)
+ afterFinishSegmentSnapshot.segments(SegmentMetricIdentity("test-segment", "test-category", "test-library")).numberOfMeasurements should be(1)
}
}
diff --git a/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala b/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala
index e2031a72..0875deff 100644
--- a/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala
+++ b/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala
@@ -78,7 +78,7 @@ class TraceContextManipulationSpec extends TestKitBase with WordSpecLike with Ma
"allow creating a segment within a trace" in {
val createdContext = TraceRecorder.withNewTraceContext("trace-with-segments") {
- val segment = TraceRecorder.currentContext.startSegment("segment-1", "segment-1-label")
+ val segment = TraceRecorder.currentContext.startSegment("segment-1", "segment-1-category", "segment-library")
TraceRecorder.currentContext
}
@@ -88,7 +88,7 @@ class TraceContextManipulationSpec extends TestKitBase with WordSpecLike with Ma
"allow renaming a segment" in {
TraceRecorder.withNewTraceContext("trace-with-renamed-segment") {
- val segment = TraceRecorder.currentContext.startSegment("original-segment-name", "segment-label")
+ val segment = TraceRecorder.currentContext.startSegment("original-segment-name", "segment-label", "segment-library")
segment.name should be("original-segment-name")
segment.rename("new-segment-name")