/** * Instrument an HTTP span after a message is received. Typically called for every chunk of * request or response is received. * * @param context request specific {@link HttpRequestContext} * @param bytes bytes received. * @since 0.19 */ public final void handleMessageReceived(HttpRequestContext context, long bytes) { checkNotNull(context, "context"); context.receiveMessageSize.addAndGet(bytes); if (context.span.getOptions().contains(Options.RECORD_EVENTS)) { // record compressed size recordMessageEvent( context.span, context.receviedSeqId.addAndGet(1L), Type.RECEIVED, bytes, 0L); } }
/** * Instrument an HTTP span after a message is sent. Typically called for every chunk of request or * response is sent. * * @param context request specific {@link HttpRequestContext} * @param bytes bytes sent. * @since 0.19 */ public final void handleMessageSent(HttpRequestContext context, long bytes) { checkNotNull(context, "context"); context.sentMessageSize.addAndGet(bytes); if (context.span.getOptions().contains(Options.RECORD_EVENTS)) { // record compressed size recordMessageEvent(context.span, context.sentSeqId.addAndGet(1L), Type.SENT, bytes, 0L); } }
/** * Instrument an HTTP span after a message is sent. Typically called for every chunk of request or * response is sent. * * @param context request specific {@link HttpRequestContext} * @param bytes bytes sent. * @since 0.19 */ public final void handleMessageSent(HttpRequestContext context, long bytes) { checkNotNull(context, "context"); context.sentMessageSize.addAndGet(bytes); if (context.span.getOptions().contains(Options.RECORD_EVENTS)) { // record compressed size recordMessageEvent(context.span, context.sentSeqId.addAndGet(1L), Type.SENT, bytes, 0L); } }
/** * Instrument an HTTP span after a message is received. Typically called for every chunk of * request or response is received. * * @param context request specific {@link HttpRequestContext} * @param bytes bytes received. * @since 0.19 */ public final void handleMessageReceived(HttpRequestContext context, long bytes) { checkNotNull(context, "context"); context.receiveMessageSize.addAndGet(bytes); if (context.span.getOptions().contains(Options.RECORD_EVENTS)) { // record compressed size recordMessageEvent( context.span, context.receviedSeqId.addAndGet(1L), Type.RECEIVED, bytes, 0L); } }
void spanEnd(Span span, @Nullable P response, @Nullable Throwable error) { int statusCode = extractor.getStatusCode(response); if (span.getOptions().contains(Options.RECORD_EVENTS)) { span.putAttribute( HttpTraceAttributeConstants.HTTP_STATUS_CODE, AttributeValue.longAttributeValue(statusCode)); } span.setStatus(HttpTraceUtil.parseResponseStatus(statusCode, error)); span.end(); }
void spanEnd(Span span, @Nullable P response, @Nullable Throwable error) { int statusCode = extractor.getStatusCode(response); if (span.getOptions().contains(Options.RECORD_EVENTS)) { span.putAttribute( HttpTraceAttributeConstants.HTTP_STATUS_CODE, AttributeValue.longAttributeValue(statusCode)); } span.setStatus(HttpTraceUtil.parseResponseStatus(statusCode, error)); span.end(); }
@Test public void getOptions_WhenNullOptions() { Span span = new NoopSpan(notSampledSpanContext, null); assertThat(span.getOptions()).isEmpty(); }
Span span = builder.startSpan(); if (span.getOptions().contains(Options.RECORD_EVENTS)) { addSpanRequestAttributes(span, request, extractor);
Span span = builder.startSpan(); if (span.getOptions().contains(Options.RECORD_EVENTS)) { addSpanRequestAttributes(span, request, extractor);
@Test public void getContextAndOptions() { Span span = new NoopSpan(spanContext, spanOptions); assertThat(span.getContext()).isEqualTo(spanContext); assertThat(span.getOptions()).isEqualTo(spanOptions); }
if (span.getOptions().contains(Options.RECORD_EVENTS)) { addSpanRequestAttributes(span, request, extractor);
if (span.getOptions().contains(Options.RECORD_EVENTS)) { addSpanRequestAttributes(span, request, extractor);
@Test public void startSpanNullParentNoRecordOptions() { Span span = SpanBuilderImpl.createWithParent(SPAN_NAME, null, spanBuilderOptions) .setSampler(Samplers.neverSample()) .startSpan(); assertThat(span.getContext().isValid()).isTrue(); assertThat(span.getOptions().contains(Options.RECORD_EVENTS)).isFalse(); assertThat(span.getContext().getTraceOptions().isSampled()).isFalse(); }
@Test public void startChildSpan() { Span rootSpan = SpanBuilderImpl.createWithParent(SPAN_NAME, null, spanBuilderOptions).startSpan(); assertThat(rootSpan.getContext().isValid()).isTrue(); assertThat(rootSpan.getOptions().contains(Options.RECORD_EVENTS)).isTrue(); assertThat(rootSpan.getContext().getTraceOptions().isSampled()).isTrue(); assertThat(((RecordEventsSpanImpl) rootSpan).toSpanData().getHasRemoteParent()).isNull(); Span childSpan = SpanBuilderImpl.createWithParent(SPAN_NAME, rootSpan, spanBuilderOptions).startSpan(); assertThat(childSpan.getContext().isValid()).isTrue(); assertThat(childSpan.getContext().getTraceId()).isEqualTo(rootSpan.getContext().getTraceId()); assertThat(((RecordEventsSpanImpl) childSpan).toSpanData().getParentSpanId()) .isEqualTo(rootSpan.getContext().getSpanId()); assertThat(((RecordEventsSpanImpl) childSpan).toSpanData().getHasRemoteParent()).isFalse(); assertThat(((RecordEventsSpanImpl) childSpan).getTimestampConverter()) .isEqualTo(((RecordEventsSpanImpl) rootSpan).getTimestampConverter()); }