use of zipkin2.Span.Kind.CONSUMER in project zipkin by openzipkin.
the class CassandraSpanConsumerTest method strictTraceIdFalse_setsTraceIdHigh.
@Test
public void strictTraceIdFalse_setsTraceIdHigh() {
consumer = spanConsumer(CassandraStorage.newBuilder().strictTraceId(false));
Span span = spanWithoutAnnotationsOrTags.toBuilder().traceId("77fcac3d4c5be8d2a037812820c65f28").build();
AggregateCall<?, Void> call = (AggregateCall<?, Void>) consumer.accept(singletonList(span));
assertThat(call.delegate()).filteredOn(c -> c instanceof InsertSpan).extracting("input.trace_id_high", "input.trace_id").containsExactly(tuple("77fcac3d4c5be8d2", "a037812820c65f28"));
}
use of zipkin2.Span.Kind.CONSUMER in project zipkin by openzipkin.
the class SpanConverterTest method producerAndConsumer.
/**
* shared v1 IDs for messaging spans isn't supported, but shouldn't break
*/
@Test
public void producerAndConsumer() {
V1Span v1 = V1Span.newBuilder().traceId(1L).parentId(2L).id(3L).name("whatev").addAnnotation(1472470996199000L, "ms", FRONTEND).addAnnotation(1472470996238000L, "ws", FRONTEND).addAnnotation(1472470996403000L, "wr", BACKEND).addAnnotation(1472470996406000L, "mr", BACKEND).addBinaryAnnotation("ma", kafka).build();
Span.Builder newBuilder = Span.newBuilder().traceId("1").parentId("2").id("3").name("whatev");
Span producer = newBuilder.clone().kind(Kind.PRODUCER).localEndpoint(FRONTEND).remoteEndpoint(kafka).timestamp(1472470996199000L).duration(1472470996238000L - 1472470996199000L).build();
Span consumer = newBuilder.clone().kind(Kind.CONSUMER).shared(true).localEndpoint(BACKEND).remoteEndpoint(kafka).timestamp(1472470996403000L).duration(1472470996406000L - 1472470996403000L).build();
assertThat(v1SpanConverter.convert(v1)).containsExactly(producer, consumer);
}
use of zipkin2.Span.Kind.CONSUMER in project zipkin by openzipkin.
the class SpanConverterTest method consumer.
@Test
public void consumer() {
Span v2 = Span.newBuilder().traceId("1").parentId("2").id("3").name("next-message").kind(Kind.CONSUMER).localEndpoint(BACKEND).timestamp(1472470996199000L).build();
V1Span v1 = V1Span.newBuilder().traceId(1L).parentId(2L).id(3L).name("next-message").timestamp(1472470996199000L).addAnnotation(1472470996199000L, "mr", BACKEND).build();
assertThat(v2SpanConverter.convert(v2)).usingRecursiveComparison().isEqualTo(v1);
assertThat(v1SpanConverter.convert(v1)).containsExactly(v2);
}
use of zipkin2.Span.Kind.CONSUMER in project brave by openzipkin.
the class ITKafkaTracing method nextSpan_makes_child.
@Test
public void nextSpan_makes_child() throws Exception {
producer = createTracingProducer();
consumer = createTracingConsumer();
producer.send(new ProducerRecord<>(testName.getMethodName(), TEST_KEY, TEST_VALUE)).get();
ConsumerRecords<String, String> records = consumer.poll(10000);
assertThat(records).hasSize(1);
Span producerSpan = producerSpans.take();
Span consumerSpan = consumerSpans.take();
for (ConsumerRecord<String, String> record : records) {
brave.Span processor = consumerTracing.nextSpan(record);
assertThat(consumerSpan.tags()).containsEntry(KAFKA_TOPIC_TAG, record.topic());
assertThat(processor.context().traceIdString()).isEqualTo(consumerSpan.traceId());
assertThat(HexCodec.toLowerHex(processor.context().parentId())).isEqualTo(consumerSpan.id());
processor.start().name("processor").finish();
// The processor doesn't taint the consumer span which has already finished
Span processorSpan = consumerSpans.take();
assertThat(processorSpan.id()).isNotEqualTo(consumerSpan.id());
}
}
use of zipkin2.Span.Kind.CONSUMER in project brave by openzipkin.
the class ITKafkaTracing method joinSpan_deprecated_because_it_writes_to_old_span.
@Test
public void joinSpan_deprecated_because_it_writes_to_old_span() throws Exception {
producer = createTracingProducer();
consumer = createTracingConsumer();
producer.send(new ProducerRecord<>(testName.getMethodName(), TEST_KEY, TEST_VALUE)).get();
ConsumerRecords<String, String> records = consumer.poll(10000);
assertThat(records).hasSize(1);
Span producerSpan = producerSpans.take();
Span consumerSpan = consumerSpans.take();
assertThat(consumerSpan.traceId()).isEqualTo(producerSpan.traceId());
for (ConsumerRecord<String, String> record : records) {
brave.Span joined = consumerTracing.joinSpan(record);
joined.abandon();
// Re-using this span happens "after" it is completed, which will make the UI look strange
// Instead, use nextSpan to create a span representing message processing.
assertThat(consumerSpan.id()).isEqualTo(HexCodec.toLowerHex(joined.context().spanId()));
}
}
Aggregations