Search in sources :

Example 16 with CONSUMER

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"));
}
Also used : AggregateCall(zipkin2.internal.AggregateCall) Span(zipkin2.Span) Test(org.junit.Test)

Example 17 with CONSUMER

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);
}
Also used : Span(zipkin2.Span) Test(org.junit.Test)

Example 18 with 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);
}
Also used : Span(zipkin2.Span) Test(org.junit.Test)

Example 19 with CONSUMER

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());
    }
}
Also used : ProducerRecord(org.apache.kafka.clients.producer.ProducerRecord) Span(zipkin2.Span) Test(org.junit.Test)

Example 20 with CONSUMER

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()));
    }
}
Also used : ProducerRecord(org.apache.kafka.clients.producer.ProducerRecord) Span(zipkin2.Span) Test(org.junit.Test)

Aggregations

Span (zipkin2.Span)17 Test (org.junit.Test)13 Test (org.junit.jupiter.api.Test)7 LogEntry (zipkin2.collector.scribe.generated.LogEntry)6 ProducerRecord (org.apache.kafka.clients.producer.ProducerRecord)4 Call (zipkin2.Call)4 Endpoint (zipkin2.Endpoint)4 StorageComponent (zipkin2.storage.StorageComponent)4 List (java.util.List)3 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)3 TopicPartition (org.apache.kafka.common.TopicPartition)3 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)3 Before (org.junit.Before)3 Tracing (brave.Tracing)2 Sampler (brave.sampler.Sampler)2 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 TimeUnit (java.util.concurrent.TimeUnit)2 MethodInvocation (org.aopalliance.intercept.MethodInvocation)2 ConsumerRecord (org.apache.kafka.clients.consumer.ConsumerRecord)2