@Override public boolean isChildOf(TraceContextHolder parent) { return parent.getTraceContext().getTraceId().equals(traceId) && parent.getTraceContext().getId().equals(parentId); }
private void serializeTraceContext(TraceContext traceContext, boolean serializeTransactionId) { // errors might only have an id writeHexField("id", traceContext.getId()); if (!traceContext.getTraceId().isEmpty()) { writeHexField("trace_id", traceContext.getTraceId()); } if (serializeTransactionId && !traceContext.getTransactionId().isEmpty()) { writeHexField("transaction_id", traceContext.getTransactionId()); } if (!traceContext.getParentId().isEmpty()) { writeHexField("parent_id", traceContext.getParentId()); } }
@Test void testRandomValue() { final TraceContext traceContext = TraceContext.with64BitId(mock(ElasticApmTracer.class)); traceContext.asRootSpan(ConstantSampler.of(true)); assertThat(traceContext.getTraceId().isEmpty()).isFalse(); assertThat(traceContext.getParentId().isEmpty()).isTrue(); assertThat(traceContext.getId().isEmpty()).isFalse(); }
@Test void testTransactionWithParentReference() { final String traceContextHeader = "00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01"; final Transaction transaction = tracerImpl.startTransaction(TraceContext.fromTraceparentHeader(), traceContextHeader, ConstantSampler.of(false), 0); // the traced flag in the header overrides the sampler assertThat(transaction.isSampled()).isTrue(); assertThat(transaction.getTraceContext().getParentId().toString()).isEqualTo("b9c7c989f97918e1"); assertThat(transaction.getTraceContext().getTraceId().toString()).isEqualTo("0af7651916cd43dd8448eb211c80319c"); transaction.end(1); assertThat(reporter.getTransactions()).hasSize(1); assertThat(reporter.getSpans()).hasSize(0); }