Skip to content

Commit

Permalink
Apply default DD tags when continuing a span
Browse files Browse the repository at this point in the history
  • Loading branch information
voidcontext committed Apr 12, 2024
1 parent 3839faa commit 9557e9e
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,10 @@ object Datadog {
.widen

def continue(name: String, kernel: Kernel, options: Span.Options): Resource[F, Span[F]] =
DatadogSpan.fromKernel(queue, names(name), kernel).widen
DatadogSpan.fromKernel(queue, names(name), kernel, meta).widen

def continueOrElseRoot(name: String, kernel: Kernel, options: Span.Options): Resource[F, Span[F]] =
DatadogSpan.fromKernel(queue, names(name), kernel).widen
DatadogSpan.fromKernel(queue, names(name), kernel, meta).widen
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,14 @@ object DatadogSpan {
def fromKernel[F[_]: Async](
queue: Queue[F, SubmittableSpan],
names: SpanNames,
kernel: Kernel
kernel: Kernel,
meta: Map[String, TraceValue] = Map.empty
): Resource[F, DatadogSpan[F]] =
Resource
.eval(
SpanIdentifiers
.fromKernel(kernel)
.flatMap(Ref.of[F, SpanIdentifiers])
)
.flatMap(create(queue, names))
.flatMap(create(queue, names, meta))
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import org.http4s.syntax.literals._
import org.typelevel.ci.CIStringSyntax

import scala.concurrent.duration._
import natchez.Kernel

/**
* This tests both the datadog span code itself and the submission of metrics over HTTP
Expand Down Expand Up @@ -141,6 +142,36 @@ class DatadogTest extends CatsEffectSuite {
}
}

test("Allow you to provide default tags using continue") {
for {
res <- run(
_.continue("bar", Kernel(Map.empty)).use(_.span("subspan").use(_ => IO.unit)),
Map("defaultTag1" -> "some-value", "defaultTag2" -> "some-other-value")
)
spans <- res.flatTraverse(_.as[List[List[SubmittableSpan]]]).map(_.flatten)
} yield {
assertEquals(spans.head.meta.get("defaultTag1"), Some("some-value"))
assertEquals(spans.head.meta.get("defaultTag2"), Some("some-other-value"))
assertEquals(spans.tail.head.meta.get("defaultTag1"), Some("some-value"))
assertEquals(spans.tail.head.meta.get("defaultTag2"), Some("some-other-value"))
}
}

test("Allow you to provide default tags using continueOrElseRoot") {
for {
res <- run(
_.continueOrElseRoot("bar", Kernel(Map.empty)).use(_.span("subspan").use(_ => IO.unit)),
Map("defaultTag1" -> "some-value", "defaultTag2" -> "some-other-value")
)
spans <- res.flatTraverse(_.as[List[List[SubmittableSpan]]]).map(_.flatten)
} yield {
assertEquals(spans.head.meta.get("defaultTag1"), Some("some-value"))
assertEquals(spans.head.meta.get("defaultTag2"), Some("some-other-value"))
assertEquals(spans.tail.head.meta.get("defaultTag1"), Some("some-value"))
assertEquals(spans.tail.head.meta.get("defaultTag2"), Some("some-other-value"))
}
}

test("Inherit metadata into subspans but only at the time of creation") {
run(
_.root("bar:res").use { root =>
Expand Down

0 comments on commit 9557e9e

Please sign in to comment.