aboutsummaryrefslogtreecommitdiff
path: root/kamon-trace/src/main
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2013-11-23 21:30:34 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2013-11-23 21:30:34 -0300
commit6ba7487204e0339437c7279e6330fc03419a2c5c (patch)
treeeda414d575a20d4000d04f3f06207b6843919ca7 /kamon-trace/src/main
parent741ac431e7b156c782f5f02a29a17686912cb590 (diff)
downloadKamon-6ba7487204e0339437c7279e6330fc03419a2c5c.tar.gz
Kamon-6ba7487204e0339437c7279e6330fc03419a2c5c.tar.bz2
Kamon-6ba7487204e0339437c7279e6330fc03419a2c5c.zip
Put FutureTracing instrumentation in place, simpler and more explicit test
Diffstat (limited to 'kamon-trace/src/main')
-rw-r--r--kamon-trace/src/main/resources/META-INF/aop.xml13
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/Trace.scala2
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala (renamed from kamon-trace/src/main/scala/kamon/trace/instrumentation/RunnableTracing.scala)14
3 files changed, 19 insertions, 10 deletions
diff --git a/kamon-trace/src/main/resources/META-INF/aop.xml b/kamon-trace/src/main/resources/META-INF/aop.xml
new file mode 100644
index 00000000..fdc1c496
--- /dev/null
+++ b/kamon-trace/src/main/resources/META-INF/aop.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
+
+<aspectj>
+ <aspects>
+ <aspect name="kamon.trace.instrumentation.FutureTracing" />
+
+ <include within="scala.concurrent..*"/>
+ <include within="akka..*"/>
+ <include within="spray..*"/>
+ <include within="kamon..*"/>
+ </aspects>
+
+</aspectj>
diff --git a/kamon-trace/src/main/scala/kamon/trace/Trace.scala b/kamon-trace/src/main/scala/kamon/trace/Trace.scala
index 0ef438d4..fbd4ea8b 100644
--- a/kamon-trace/src/main/scala/kamon/trace/Trace.scala
+++ b/kamon-trace/src/main/scala/kamon/trace/Trace.scala
@@ -35,6 +35,8 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
ctx
}
+ def withValue[T](ctx: Option[TraceContext])(thunk: => T): T = traceContext.withValue(ctx)(thunk)
+
def transformContext(f: TraceContext => TraceContext): Unit = {
context.map(f).foreach(set(_))
}
diff --git a/kamon-trace/src/main/scala/kamon/trace/instrumentation/RunnableTracing.scala b/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala
index 5c16a648..10daa2da 100644
--- a/kamon-trace/src/main/scala/kamon/trace/instrumentation/RunnableTracing.scala
+++ b/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala
@@ -5,7 +5,7 @@ import org.aspectj.lang.ProceedingJoinPoint
import kamon.trace.{ContextAware, TraceContext, Trace}
@Aspect
-class RunnableTracing {
+class FutureTracing {
/**
* These are the Runnables that need to be instrumented and make the TraceContext available
@@ -15,16 +15,11 @@ class RunnableTracing {
def onCompleteCallbacksRunnable: ContextAware = ContextAware.default
- /**
- * Pointcuts
- */
-
@Pointcut("execution(kamon.trace.ContextAware+.new(..)) && this(runnable)")
def instrumentedRunnableCreation(runnable: ContextAware): Unit = {}
@Pointcut("execution(* kamon.trace.ContextAware+.run()) && this(runnable)")
- def runnableExecution(runnable: ContextAware) = {}
-
+ def futureRunnableExecution(runnable: ContextAware) = {}
@After("instrumentedRunnableCreation(runnable)")
@@ -33,12 +28,11 @@ class RunnableTracing {
runnable.traceContext
}
-
- @Around("runnableExecution(runnable)")
+ @Around("futureRunnableExecution(runnable)")
def around(pjp: ProceedingJoinPoint, runnable: ContextAware): Any = {
import pjp._
- Trace.traceContext.withValue(runnable.traceContext) {
+ Trace.withValue(runnable.traceContext) {
proceed()
}
}