public void SpanContext_ToString() { Assert.Contains(TraceId.FromBytes(firstTraceIdBytes).ToString(), first.ToString()); Assert.Contains(SpanId.FromBytes(firstSpanIdBytes).ToString(), first.ToString()); Assert.Contains(TraceOptions.DEFAULT.ToString(), first.ToString()); Assert.Contains(TraceId.FromBytes(secondTraceIdBytes).ToString(), second.ToString()); Assert.Contains(SpanId.FromBytes(secondSpanIdBytes).ToString(), second.ToString()); Assert.Contains(TraceOptions.Builder().SetIsSampled(true).Build().ToString(), second.ToString()); }
public void SpanData_ToString() { string spanDataString = SpanData.Create( spanContext, parentSpanId, false, SPAN_NAME, StartTimestamp, attributes, annotations, messageEvents, links, CHILD_SPAN_COUNT, Status, EndTimestamp) .ToString(); Assert.Contains(spanContext.ToString(), spanDataString); Assert.Contains(parentSpanId.ToString(), spanDataString); Assert.Contains(SPAN_NAME, spanDataString); Assert.Contains(StartTimestamp.ToString(), spanDataString); Assert.Contains(attributes.ToString(), spanDataString); Assert.Contains(annotations.ToString(), spanDataString); Assert.Contains(messageEvents.ToString(), spanDataString); Assert.Contains(links.ToString(), spanDataString); Assert.Contains(Status.ToString(), spanDataString); Assert.Contains(EndTimestamp.ToString(), spanDataString); }
public void SpanData_ToString() { string spanDataString = SpanData.Create( spanContext, parentSpanId, false, SPAN_NAME, startTimestamp, attributes, events, links, CHILD_SPAN_COUNT, status, kind, endTimestamp) .ToString(); Assert.Contains(spanContext.ToString(), spanDataString); Assert.Contains(parentSpanId.ToString(), spanDataString); Assert.Contains(SPAN_NAME, spanDataString); Assert.Contains(startTimestamp.ToString(), spanDataString); Assert.Contains(attributes.ToString(), spanDataString); Assert.Contains(events.ToString(), spanDataString); Assert.Contains(links.ToString(), spanDataString); Assert.Contains(status.ToString(), spanDataString); Assert.Contains(endTimestamp.ToString(), spanDataString); }
public void Inject(ISpanContext spanContext, ITextMap carrier) { carrier.Set(_spanContextKey, spanContext.ToString()); foreach (var baggage in spanContext.GetBaggageItems()) { carrier.Set(baggage.Key, baggage.Value); } }
public void Broadcast_Context() { Tracer tracer = new Tracer(); string address = "127.0.0.1"; string port = "8080"; tracer.Configure(address, port); Tracer tracer2 = new Tracer(); tracer2.Configure(address, port); BinaryCarrier carrier_beginning = new BinaryCarrier(); var scope = tracer.BuildSpan("kek").StartActive(); tracer.Inject(scope.Span.Context, BuiltinFormats.Binary, carrier_beginning); tracer.registry.SendAsync(carrier_beginning.Get().ToArray(), WebSocketMessageType.Binary, true, CancellationToken.None); var buffer = new byte[4096 * 20]; BinaryCarrier carrier_end = new BinaryCarrier(); WebSocketReceiveResult result = tracer2.registry.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None).Result; if (result.Count != 0 || result.CloseStatus == WebSocketCloseStatus.Empty) { carrier_end.Set(new MemoryStream(buffer)); ISpanContext context = tracer2.Extract(BuiltinFormats.Binary, carrier_end); Console.WriteLine(context.ToString()); } /* * byte[] array2 = Encoding.UTF8.GetBytes("context2"); * tracer2.registry.SendAsync(array2, WebSocketMessageType.Binary, true, CancellationToken.None); * * * var buffer2 = new byte[4096 * 20]; * * WebSocketReceiveResult result2 = tracer.registry.ReceiveAsync(new ArraySegment<byte>(buffer2), CancellationToken.None).Result; * if (result2.Count != 0 || result2.CloseStatus == WebSocketCloseStatus.Empty) * { * string message = Encoding.UTF8.GetString(buffer2, 0, result2.Count); * Console.WriteLine(message); * } * * var buffer3 = new byte[4096 * 20]; * WebSocketReceiveResult result3 = tracer.registry.ReceiveAsync(new ArraySegment<byte>(buffer3), CancellationToken.None).Result; * if (result3.Count != 0 || result3.CloseStatus == WebSocketCloseStatus.Empty) * { * string message = Encoding.UTF8.GetString(buffer3, 0, result3.Count); * Console.WriteLine(message); * } */ tracer.Dispose(); tracer2.Dispose(); }
public void broadcast_context_via_Registry() { Tracer tracer1 = new Tracer(); Tracer tracer2 = new Tracer(); ASCIIEncoding encoding = new ASCIIEncoding(); BinaryCarrier carrier = new BinaryCarrier(); var scope = tracer1.BuildSpan("kek").StartActive(); tracer1.Inject(scope.Span.Context, BuiltinFormats.Binary, carrier); ISpanContext context = tracer2.Extract(BuiltinFormats.Binary, carrier); Assert.AreEqual(context.ToString(), scope.Span.Context.ToString()); }
public void Inject <TCarrier>(ISpanContext spanContext, TCarrier carrier) { if (carrier is ITextMap map) { map.Set(_headersConfig.TraceContextHeaderName, _encodeValue(spanContext.ToString())); foreach (var baggage in spanContext.GetBaggageItems()) { map.Set($"{_headersConfig.TraceBaggageHeaderPrefix}-{baggage.Key}", _encodeValue(baggage.Value)); } return; } throw new ArgumentException($"{nameof(carrier)} is not ITextMap"); }
public void ReceiveAndSendContext_viaRegistry() { string address = "127.0.0.1"; string port = "8080"; Tracer tracer1 = new Tracer(); Tracer tracer2 = new Tracer(); tracer1.Configure(address, port); tracer2.Configure(address, port); var scope = tracer1.BuildSpan("kek").StartActive(); tracer1.SendContext(scope.Span).GetAwaiter().GetResult(); ISpanContext ctx = tracer2.ReceiveContext().GetAwaiter().GetResult(); Assert.AreEqual(ctx.ToString(), scope.Span.Context.ToString()); }
protected internal void HandleStartEvent(HttpContext context) { if (ShouldIgnoreRequest(context.Request.Path)) { Logger?.LogDebug("HandleStartEvent: Ignoring path: {path}", context.Request.Path.ToString()); return; } if (active.Value != null) { Logger?.LogDebug("HandleStartEvent: Continuing existing span!"); return; } ISpanContext traceContext = ExtractTraceContext(context); string spanName = ExtractSpanName(context); ISpan span; IScope scope; if (traceContext != null) { Logger?.LogDebug("HandleStartEvent: Found parent span {parent}", traceContext.ToString()); scope = Tracer.SpanBuilderWithRemoteParent(spanName, traceContext) .StartScopedSpan(out span); } else { scope = Tracer.SpanBuilder(spanName) .StartScopedSpan(out span); } span.PutServerSpanKindAttribute() .PutHttpRawUrlAttribute(context.Request.GetDisplayUrl()) .PutHttpMethodAttribute(context.Request.Method.ToString()) .PutHttpPathAttribute(context.Request.Path.ToString()) .PutHttpHostAttribute(context.Request.Host.Host, context.Request.Host.Port ?? 80); if (context.Request.Headers != null) { span.PutHttpRequestHeadersAttribute(AsList(context.Request.Headers)); } active.Value = new SpanContext(span, scope); }
public override string ToString() { string dateTimeFormat = "MM/dd/yyyy hh:mm:ss.ffff tt"; string result = operationName + ";" + startTimeStamp.ToString(dateTimeFormat) + ";" + spanContext.ToString(); if (!endTimeStamp.Equals(DateTime.MinValue)) { result += ";" + endTimeStamp.ToString(dateTimeFormat); } if (references.Count != 0) { result += "{"; foreach (var entry in references) { result += entry.SpanId + ":" + entry.Referencetyp; } result += "}"; } return(result); }