use of com.google.devtools.cloudtrace.v2.Span in project zipkin by openzipkin.
the class ElasticsearchSpanConsumer method indexSpans.
void indexSpans(BulkSpanIndexer indexer, List<Span> spans) {
for (Span span : spans) {
// which index to store this span into
final long indexTimestamp;
if (span.timestampAsLong() != 0L) {
indexTimestamp = span.timestampAsLong() / 1000L;
} else if (!span.annotations().isEmpty()) {
// guessTimestamp is made for determining the span's authoritative timestamp. When choosing
// the index bucket, any annotation is better than using current time.
indexTimestamp = span.annotations().get(0).timestamp() / 1000L;
} else {
indexTimestamp = System.currentTimeMillis();
}
indexer.add(indexTimestamp, span);
if (searchEnabled && !span.tags().isEmpty()) {
indexer.addAutocompleteValues(indexTimestamp, span);
}
}
}
use of com.google.devtools.cloudtrace.v2.Span in project zipkin by openzipkin.
the class ITEnsureIndexTemplate method createZipkinIndexTemplate_getTraces_returnsSuccess.
@Test
void createZipkinIndexTemplate_getTraces_returnsSuccess(TestInfo testInfo) throws Exception {
String testSuffix = testSuffix(testInfo);
storage = newStorageBuilder(testInfo).templatePriority(10).build();
try {
// Delete all templates in order to create the "catch-all" index template, because
// ES does not allow multiple index templates of the same index_patterns and priority
http(DELETE, "/_template/*");
setUpCatchAllTemplate();
// Implicitly creates an index template
checkStorage();
// Get all templates. We don't assert on this at the moment. This is for logging on ES_DEBUG.
http(GET, "/_template");
// Now, add a span, which should be indexed differently than default.
Span span = spanBuilder(testSuffix).putTag("queryTest", "ok").build();
accept(asList(span));
// Assert that Zipkin's templates work and source is returned
assertGetTracesReturns(requestBuilder().parseAnnotationQuery("queryTest=" + span.tags().get("queryTest")).build(), asList(span));
} finally {
// Delete "catch-all" index template so it does not interfere with any other test
http(DELETE, catchAllIndexPath());
}
}
use of com.google.devtools.cloudtrace.v2.Span in project zipkin by openzipkin.
the class BulkIndexWriterTest method spanSearchFields_addsTimestampFieldWhenNoTags.
@Test
public void spanSearchFields_addsTimestampFieldWhenNoTags() {
Span span = Span.newBuilder().traceId("20").id("22").name("").parentId("21").timestamp(1000L).localEndpoint(FRONTEND).kind(Kind.CLIENT).build();
BulkIndexWriter.SPAN.writeDocument(span, buffer);
assertThat(buffer.buffer().toString(StandardCharsets.UTF_8)).startsWith("{\"timestamp_millis\":1,\"traceId\":");
}
use of com.google.devtools.cloudtrace.v2.Span in project zipkin by openzipkin.
the class BulkIndexWriterTest method spanSearchFields_addsQueryFieldForTags.
@Test
public void spanSearchFields_addsQueryFieldForTags() {
Span span = Span.newBuilder().traceId("20").id("22").parentId("21").localEndpoint(FRONTEND).putTag("\"foo", "\"bar").build();
BulkIndexWriter.SPAN.writeDocument(span, buffer);
assertThat(buffer.buffer().toString(StandardCharsets.UTF_8)).startsWith("{\"_q\":[\"\\\"foo\",\"\\\"foo=\\\"bar\"],\"traceId");
}
use of com.google.devtools.cloudtrace.v2.Span in project zipkin by openzipkin.
the class BulkIndexWriterTest method spanSearchFields_readableByNormalJsonCodec.
@Test
public void spanSearchFields_readableByNormalJsonCodec() {
Span span = Span.newBuilder().traceId("20").id("20").name("get").timestamp(TODAY * 1000).build();
BulkIndexWriter.SPAN.writeDocument(span, buffer);
assertThat(SpanBytesDecoder.JSON_V2.decodeOne(ByteBufUtil.getBytes(buffer.buffer()))).isEqualTo(// ignores timestamp_millis field
span);
}
Aggregations