/// <summary> /// Initializes an instance of <see cref="TransactionContext"/>. /// </summary> public TransactionContext( string name, string operation, SentryTraceHeader traceHeader) : this(traceHeader.SpanId, traceHeader.TraceId, name, operation, traceHeader.IsSampled) { }
public async Task SendAsync_SentryTraceHeaderAlreadySet_NotOverwritten() { // Arrange var hub = Substitute.For <IHub>(); hub.GetTraceHeader().ReturnsForAnyArgs( SentryTraceHeader.Parse("75302ac48a024bde9a3b3734a82e36c8-1000000000000000-0") ); using var innerHandler = new RecordingHttpMessageHandler(new FakeHttpMessageHandler()); using var sentryHandler = new SentryHttpMessageHandler(innerHandler, hub); using var client = new HttpClient(sentryHandler); client.DefaultRequestHeaders.Add("sentry-trace", "foobar"); // Act await client.GetAsync("https://example.com/"); using var request = innerHandler.GetRequests().Single(); // Assert request.Headers.Should().Contain(h => h.Key == "sentry-trace" && string.Concat(h.Value) == "foobar" ); }
private static SentryTraceHeader?TryGetTraceHeader(NameValueCollection headers) { try { var traceHeader = headers.Get(SentryTraceHeader.HttpHeaderName); return(SentryTraceHeader.Parse(traceHeader)); } catch { return(null); } }
public void Parse_WithoutSampled_Works() { // Arrange const string headerValue = "75302ac48a024bde9a3b3734a82e36c8-1000000000000000"; // Act var header = SentryTraceHeader.Parse(headerValue); // Assert header.TraceId.Should().Be(SentryId.Parse("75302ac48a024bde9a3b3734a82e36c8")); header.SpanId.Should().Be(SpanId.Parse("1000000000000000")); header.IsSampled.Should().BeNull(); }
private SentryTraceHeader?TryGetSentryTraceHeader(HttpContext context) { var value = context.Request.Headers.GetValueOrDefault(SentryTraceHeader.HttpHeaderName); if (string.IsNullOrWhiteSpace(value)) { return(null); } _options.DiagnosticLogger?.LogDebug("Received Sentry trace header '{0}'.", value); try { return(SentryTraceHeader.Parse(value)); } catch (Exception ex) { _options.DiagnosticLogger?.LogError("Invalid Sentry trace header '{0}'.", ex, value); return(null); } }