zipkin2.Span.duration()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(7.1k)|赞(0)|评价(0)|浏览(97)

本文整理了Java中zipkin2.Span.duration()方法的一些代码示例,展示了Span.duration()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Span.duration()方法的具体详情如下:
包路径:zipkin2.Span
类名称:Span
方法名:duration

Span.duration介绍

[英]Measurement in microseconds of the critical path, if known. Durations of less than one microsecond must be rounded up to 1 microsecond.

This value should be set directly, as opposed to implicitly via annotation timestamps. Doing so encourages precision decoupled from problems of clocks, such as skew or NTP updates causing time to move backwards.

If this field is persisted as unset, zipkin will continue to work, except duration query support will be implementation-specific. Similarly, setting this field non-atomically is implementation-specific.

This field is i64 vs i32 to support spans longer than 35 minutes.
[中]以微秒为单位测量关键路径(如果已知)。小于1微秒的持续时间必须四舍五入到1微秒。
这个值应该直接设置,而不是通过注释时间戳隐式设置。这样做会鼓励精度与时钟问题脱钩,例如倾斜或NTP更新导致时间向后移动。
如果此字段被持久化为未设置,zipkin将继续工作,但持续时间查询支持将是特定于实现的。类似地,以非原子方式设置此字段是特定于实现的。
该字段为i64 vs i32,以支持超过35分钟的跨度。

代码示例

代码示例来源:origin: openzipkin/brave

/**
 * This ensures thread-state is propagated from trace interceptors to user code. The endpoint
 * "/child" is expected to create an in-process span. When this works, it should be a child of the
 * "current span", in this case the span representing an incoming server request. When thread
 * state isn't managed properly, the child span will appear as a new trace.
 */
@Test
public void createsChildSpan() throws Exception {
 get("/child");
 Span child = takeSpan();
 Span parent = takeSpan();
 assertThat(parent.traceId()).isEqualTo(child.traceId());
 assertThat(parent.id()).isEqualTo(child.parentId());
 assertThat(parent.timestamp()).isLessThan(child.timestamp());
 assertThat(parent.duration()).isGreaterThan(child.duration());
}

代码示例来源:origin: io.zipkin.brave/brave-http-tests

/**
 * This ensures thread-state is propagated from trace interceptors to user code. The endpoint
 * "/child" is expected to create a local span. When this works, it should be a child of the
 * "current span", in this case the span representing an incoming server request. When thread
 * state isn't managed properly, the child span will appear as a new trace.
 */
private void createsChildSpan(String path) {
 Request request = new Request.Builder().url(url(path)).build();
 try (Response response = client.newCall(request).execute()) {
  if (response.code() == 404) throw new AssumptionViolatedException(path + " not supported");
 } catch (AssumptionViolatedException e) {
  throw e;
 } catch (Exception e) {
  // ok, but the span should include an error!
 }
 List<Span> trace = collectedSpans();
 assertThat(trace).hasSize(2);
 Span child = trace.get(0);
 Span parent = trace.get(1);
 assertThat(parent.traceId()).isEqualTo(child.traceId());
 assertThat(parent.id()).isEqualTo(child.parentId());
 assertThat(parent.timestamp()).isLessThan(child.timestamp());
 assertThat(parent.duration()).isGreaterThan(child.duration());
}

代码示例来源:origin: io.zipkin.brave/brave-instrumentation-http-tests

/**
 * This ensures thread-state is propagated from trace interceptors to user code. The endpoint
 * "/child" is expected to create an in-process span. When this works, it should be a child of the
 * "current span", in this case the span representing an incoming server request. When thread
 * state isn't managed properly, the child span will appear as a new trace.
 */
@Test
public void createsChildSpan() throws Exception {
 get("/child");
 Span child = takeSpan();
 Span parent = takeSpan();
 assertThat(parent.traceId()).isEqualTo(child.traceId());
 assertThat(parent.id()).isEqualTo(child.parentId());
 assertThat(parent.timestamp()).isLessThan(child.timestamp());
 assertThat(parent.duration()).isGreaterThan(child.duration());
}

代码示例来源:origin: openzipkin/zipkin-finagle

@Test public void reportsSpanOn_ServerSend() throws Exception {
 advanceAndRecord(0, root, Annotation.ServerRecv$.MODULE$);
 advanceAndRecord(1, root, Annotation.ServerSend$.MODULE$);
 Span span = spansSent.take();
 assertThat(span.kind()).isEqualTo(Span.Kind.SERVER);
 assertThat(span.annotations()).isEmpty();
 assertThat(span.timestamp()).isEqualTo(TODAY * 1000);
 assertThat(span.duration()).isEqualTo(1000);
}

代码示例来源:origin: openzipkin/zipkin-finagle

@Test public void reportsSpanOn_ClientRecv() throws Exception {
 advanceAndRecord(0, root, Annotation.ClientSend$.MODULE$);
 advanceAndRecord(1, root, Annotation.ClientRecv$.MODULE$);
 Span span = spansSent.take();
 assertThat(span.kind()).isEqualTo(Span.Kind.CLIENT);
 assertThat(span.annotations()).isEmpty();
 assertThat(span.timestamp()).isEqualTo(TODAY * 1000);
 assertThat(span.duration()).isEqualTo(1000);
}

代码示例来源:origin: openzipkin/zipkin-finagle

@Test public void reportsSpanOn_Timeout() throws Exception {
 advanceAndRecord(0, root, Annotation.ClientSend$.MODULE$);
 advanceAndRecord(1, root, new Annotation.Message(TimeoutFilter.TimeoutAnnotation()));
 Span span = spansSent.take();
 assertThat(span.kind()).isEqualTo(Span.Kind.CLIENT);
 assertThat(span.annotations()).extracting(zipkin2.Annotation::value).containsExactly(
   "finagle.timeout"
 );
 assertThat(span.timestamp()).isEqualTo(TODAY * 1000);
 assertThat(span.duration()).isEqualTo(1000);
}

代码示例来源:origin: com.google.cloud.trace.adapters.zipkin/translation

TraceSpan.Builder translate(TraceSpan.Builder spanBuilder, Span zipkinSpan) {
 spanBuilder.setName(zipkinSpan.name());
 SpanKind kind = getSpanKind(zipkinSpan.kind());
 spanBuilder.setKind(kind);
 rewriteIds(zipkinSpan, spanBuilder, kind);
 if (zipkinSpan.timestamp() != null) {
  spanBuilder.setStartTime(createTimestamp(zipkinSpan.timestamp()));
  if (zipkinSpan.duration() != null) {
   Timestamp endTime = createTimestamp(zipkinSpan.timestamp() + zipkinSpan.duration());
   spanBuilder.setEndTime(endTime);
  }
 }
 spanBuilder.putAllLabels(labelExtractor.extract(zipkinSpan));
 return spanBuilder;
}

代码示例来源:origin: Nike-Inc/wingtips

assertThat(zipkinSpan.timestamp()).isEqualTo(wingtipsSpan.getSpanStartTimeEpochMicros());
assertThat(zipkinSpan.traceId()).isEqualTo(wingtipsSpan.getTraceId());
assertThat(zipkinSpan.duration()).isEqualTo(durationMicros);
assertThat(zipkinSpan.localEndpoint()).isEqualTo(zipkinEndpoint);
assertThat(zipkinSpan.tags()).isEqualTo(wingtipsSpan.getTags());

代码示例来源:origin: openzipkin/zipkin-finagle

@Test public void flushesIncompleteSpans() throws Exception {
 advanceAndRecord(0, root, new Annotation.Rpc("GET"));
 advanceAndRecord(15, root, new Annotation.ServiceName("frontend"));
 advanceAndRecord(0, root, Annotation.ServerRecv$.MODULE$);
 // Note: there's no ServerSend() which would complete the span.
 time.advance(recorder.ttl.plus(Duration.fromMilliseconds(1))); // advance timer
 timer.tick(); // invokes a flush
 Span span = spansSent.take();
 assertThat(span.id()).isEqualTo(root.spanId().toString());
 assertThat(span.name()).isEqualTo("get");
 assertThat(span.kind()).isEqualTo(Span.Kind.SERVER);
 assertThat(span.annotations()).extracting(zipkin2.Annotation::value).containsExactly(
   "finagle.flush"
 );
 assertThat(span.duration()).isNull();
}

代码示例来源:origin: Nike-Inc/wingtips

assertThat(zipkinSpan.timestamp()).isEqualTo(wingtipsSpan.getSpanStartTimeEpochMicros());
assertThat(zipkinSpan.traceId()).isEqualTo(wingtipsSpan.getTraceId());
assertThat(zipkinSpan.duration()).isEqualTo(durationMicros);
assertThat(zipkinSpan.localEndpoint()).isEqualTo(zipkinEndpoint);
assertThat(zipkinSpan.tags()).isEqualTo(wingtipsSpan.getTags()).isEmpty();

代码示例来源:origin: io.zipkin.brave/brave-core

Long endTs = in.duration() == null ? 0L : in.timestamp() + in.duration();
if (startTs != 0L) {
 result.timestamp(startTs);
 result.duration(in.duration());

相关文章