Opentelemetry 上下文传播测试

Opentelemetry context propagation test

我正在尝试测试一些 opentelemetry 跨度是否在父子关系中正确构建和链接。

clientSpan = Span.wrap(
                SpanContext.createFromRemoteParent(
                  "12345678123456781234567812345678",
                  "1234567812345678",
                  TraceFlags.getDefault,
                  TraceState.getDefault
                )
              )
              .updateName("clientSpan") 

我要测试的代码创建了一个新跨度,它是它接收到的客户端跨度的子跨度

tracer.spanBuilder("my-endpoint")
.setSpanKind(SpanKind.SERVER)
.setParent(Context.current().`with`(clientSpan))
.startSpan()

我的问题是每当我通过 clientSpan InMemorySpanExporter.getFinishedSpanItems() returns 为空。 它 returns 非空,并且在没有使用 clientSpan 时符合预期。

在单元测试中,我尝试结束父跨度或保持打开状态:clientSpan.end()但 getFinishedSpanItems 始终为空。

也许我在单元测试中没有正确构建 clientSpan? (在产品代码中,它是从 carrier-propagator-getter 组合中提取的)

wrap returns 包含提供的跨度上下文但没有功能的非记录跨度。所有操作都是空操作。所以无论你做什么 clientSpan 都没有效果。

请将 TraceFlags.getDefault() 更改为 TraceFlags.getSampled()。默认 returns 一个所有位都关闭的标志,这意味着将不考虑子跨度