opentelemetry-java-instrume.../benchmark-integration/play-perftest/app/controllers/Worker.scala

31 lines
841 B
Scala

package controllers
import io.opentelemetry.OpenTelemetry
import io.opentelemetry.trace.Tracer
import java.util.concurrent.TimeUnit
object Worker {
val TRACER: Tracer = OpenTelemetry.getTracerProvider.get("io.opentelemetry.auto")
def doWork(workTimeMS: Long) = {
val span = TRACER.spanBuilder("work").startSpan()
val scope = TRACER.withSpan(span)
try {
if (span != null) {
span.setAttribute("work-time", workTimeMS)
span.setAttribute("info", "interesting stuff")
span.setAttribute("additionalInfo", "interesting stuff")
}
val doneTimestamp = System.nanoTime + TimeUnit.MILLISECONDS.toNanos(workTimeMS)
while ( {
System.nanoTime < doneTimestamp
}) {
// busy-wait to simulate work
}
} finally {
span.end()
scope.close()
}
}
}