diff --git a/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Remoting/Client/HttpProcessAndSendIntegration.cs b/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Remoting/Client/HttpProcessAndSendIntegration.cs index 8e50fa4ed1c7..3b35d87210de 100644 --- a/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Remoting/Client/HttpProcessAndSendIntegration.cs +++ b/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/Remoting/Client/HttpProcessAndSendIntegration.cs @@ -14,6 +14,7 @@ using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Messaging; using Datadog.Trace.ClrProfiler.CallTarget; +using Datadog.Trace.OpenTelemetry; using Datadog.Trace.Tagging; using Datadog.Trace.Util; using Datadog.Trace.Util.Http; @@ -72,6 +73,13 @@ internal static CallTargetReturn OnMethodEnd(TTarget if (state.Scope?.Span is Span span && span.Tags is HttpTags httpTags && returnValue is HttpWebRequest request) { var requestUri = request.RequestUri; + + if (span.OpenTelemetrySemanticsEnabled) + { + HttpSemanticConventions.SetHttpClientRequestValues(span, httpTags, request.Method, requestUri, Tracer.Instance.TracerManager.QueryStringManager); + return new CallTargetReturn(returnValue); + } + var requestMethod = request.Method.ToUpperInvariant(); if (requestUri != null) diff --git a/tracer/src/Datadog.Trace/ClrProfiler/ScopeFactory.cs b/tracer/src/Datadog.Trace/ClrProfiler/ScopeFactory.cs index b470e6e1dfea..9afb33ef4e5c 100644 --- a/tracer/src/Datadog.Trace/ClrProfiler/ScopeFactory.cs +++ b/tracer/src/Datadog.Trace/ClrProfiler/ScopeFactory.cs @@ -8,6 +8,7 @@ using Datadog.Trace.Configuration; using Datadog.Trace.Configuration.Schema; using Datadog.Trace.Logging; +using Datadog.Trace.OpenTelemetry; using Datadog.Trace.Tagging; using Datadog.Trace.Util; using Datadog.Trace.Util.Http; @@ -109,8 +110,6 @@ internal static Span CreateInactiveOutboundHttpSpan( return null; } - string resourceUrl = requestUri != null ? UriHelpers.CleanUri(requestUri, removeScheme: true, tryRemoveIds: true) : null; - var operationName = tracer.CurrentTraceSettings.Schema.Client.GetOperationNameForProtocol(ClientSchema.Protocol.Http); var (serviceName, serviceNameSource) = tracer.CurrentTraceSettings.Schema.Client.GetServiceNameMetadata(ClientSchema.Component.Http); tags = tracer.CurrentTraceSettings.Schema.Client.CreateHttpTags(); @@ -118,13 +117,22 @@ internal static Span CreateInactiveOutboundHttpSpan( span = tracer.StartSpan(operationName, tags, serviceName: serviceName, serviceNameSource: serviceNameSource, traceId: traceId, spanId: spanId, startTime: startTime, addToTraceContext: addToTraceContext); span.Type = SpanTypes.Http; - span.ResourceName = $"{httpMethod} {resourceUrl}"; - tags.HttpMethod = httpMethod?.ToUpperInvariant(); - if (requestUri is not null) + if (span.OpenTelemetrySemanticsEnabled) + { + HttpSemanticConventions.SetHttpClientRequestValues(span, tags, httpMethod, requestUri, tracer.TracerManager.QueryStringManager); + } + else { - tags.HttpUrl = HttpRequestUtils.GetUrl(requestUri, tracer.TracerManager.QueryStringManager); - tags.Host = HttpRequestUtils.GetNormalizedHost(requestUri.Host); + string resourceUrl = requestUri != null ? UriHelpers.CleanUri(requestUri, removeScheme: true, tryRemoveIds: true) : null; + span.ResourceName = $"{httpMethod} {resourceUrl}"; + + tags.HttpMethod = httpMethod?.ToUpperInvariant(); + if (requestUri is not null) + { + tags.HttpUrl = HttpRequestUtils.GetUrl(requestUri, tracer.TracerManager.QueryStringManager); + tags.Host = HttpRequestUtils.GetNormalizedHost(requestUri.Host); + } } tags.InstrumentationName = IntegrationRegistry.GetName(integrationId); diff --git a/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs b/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs index 81cea58b0535..b6604cb47c12 100644 --- a/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs +++ b/tracer/src/Datadog.Trace/Configuration/TracerSettings.cs @@ -818,6 +818,16 @@ not null when string.Equals(value, "otlp", StringComparison.OrdinalIgnoreCase) = .WithKeys(ConfigurationKeys.OpenTelemetry.OtelSemanticsEnabled) .AsBool(defaultValue: false); + if (OtelSemanticsEnabled && MetadataSchemaVersion != SchemaVersion.V0) + { + // OpenTelemetry semantics mode already fully replaces Datadog attribute naming and values, + // so the V1 schema's Datadog-only attributes (e.g. peer.service) must not be layered on top. + Log.Warning( + $"{ConfigurationKeys.MetadataSchemaVersion} is set to a version other than v0, but {ConfigurationKeys.OpenTelemetry.OtelSemanticsEnabled} is enabled. Using v0 instead."); + MetadataSchemaVersion = SchemaVersion.V0; + telemetry.Record(ConfigurationKeys.MetadataSchemaVersion, "v0", recordValue: true, ConfigurationOrigins.Calculated); + } + var disabledActivitySources = config.WithKeys(ConfigurationKeys.DisabledActivitySources).AsString(); DisabledActivitySources = !string.IsNullOrEmpty(disabledActivitySources) ? TrimSplitString(disabledActivitySources, commaSeparator) : []; diff --git a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs index 7406088379c3..70953f44cb59 100644 --- a/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs +++ b/tracer/src/Datadog.Trace/Generated/net461/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs @@ -23,9 +23,18 @@ partial class HttpTags // HttpMethodBytes = MessagePack.Serialize("http.method"); private static ReadOnlySpan HttpMethodBytes => [171, 104, 116, 116, 112, 46, 109, 101, 116, 104, 111, 100]; + // HttpMethodOtelBytes = MessagePack.Serialize("http.request.method"); + private static ReadOnlySpan HttpMethodOtelBytes => [179, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100]; + + // HttpRequestMethodOriginalBytes = MessagePack.Serialize("http.request.method_original"); + private static ReadOnlySpan HttpRequestMethodOriginalBytes => [188, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100, 95, 111, 114, 105, 103, 105, 110, 97, 108]; + // HttpUrlBytes = MessagePack.Serialize("http.url"); private static ReadOnlySpan HttpUrlBytes => [168, 104, 116, 116, 112, 46, 117, 114, 108]; + // HttpUrlOtelBytes = MessagePack.Serialize("url.full"); + private static ReadOnlySpan HttpUrlOtelBytes => [168, 117, 114, 108, 46, 102, 117, 108, 108]; + // HttpClientHandlerTypeBytes = MessagePack.Serialize("http-client-handler-type"); private static ReadOnlySpan HttpClientHandlerTypeBytes => [184, 104, 116, 116, 112, 45, 99, 108, 105, 101, 110, 116, 45, 104, 97, 110, 100, 108, 101, 114, 45, 116, 121, 112, 101]; @@ -38,6 +47,12 @@ partial class HttpTags // HostBytes = MessagePack.Serialize("out.host"); private static ReadOnlySpan HostBytes => [168, 111, 117, 116, 46, 104, 111, 115, 116]; + // HostOtelBytes = MessagePack.Serialize("server.address"); + private static ReadOnlySpan HostOtelBytes => [174, 115, 101, 114, 118, 101, 114, 46, 97, 100, 100, 114, 101, 115, 115]; + + // ServerPortBytes = MessagePack.Serialize("server.port"); + private static ReadOnlySpan ServerPortBytes => [171, 115, 101, 114, 118, 101, 114, 46, 112, 111, 114, 116]; + public override string? GetTag(string key) { return key switch @@ -45,11 +60,16 @@ partial class HttpTags "span.kind" => SpanKind, "component" => InstrumentationName, "http.method" => HttpMethod, + "http.request.method" => HttpMethod, + "http.request.method_original" => HttpRequestMethodOriginal, "http.url" => HttpUrl, + "url.full" => HttpUrl, "http-client-handler-type" => HttpClientHandlerType, "http.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "http.response.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "out.host" => Host, + "server.address" => Host, + "server.port" => ServerPort is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(ServerPort.Value), _ => base.GetTag(key), }; } @@ -61,10 +81,15 @@ public override void SetTag(string key, string? value) case "component": InstrumentationName = value; break; - case "http.method": + case "http.method": + case "http.request.method": HttpMethod = value; break; - case "http.url": + case "http.request.method_original": + HttpRequestMethodOriginal = value; + break; + case "http.url": + case "url.full": HttpUrl = value; break; case "http-client-handler-type": @@ -82,8 +107,20 @@ public override void SetTag(string key, string? value) } break; - case "out.host": + case "out.host": + case "server.address": Host = value; + break; + case "server.port": + if (int.TryParse(value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out var parsedServerPort)) + { + ServerPort = parsedServerPort; + } + else + { + ServerPort = null; + } + break; case "span.kind": Logger.Value.Warning("Attempted to set readonly tag {TagName} on {TagType}. Ignoring.", key, nameof(HttpTags)); @@ -108,12 +145,31 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (HttpMethod is not null) { - processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("http.request.method", HttpMethod, HttpMethodOtelBytes)); + } + else + { + processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + } + } + + if (HttpRequestMethodOriginal is not null) + { + processor.Process(new TagItem("http.request.method_original", HttpRequestMethodOriginal, HttpRequestMethodOriginalBytes)); } if (HttpUrl is not null) { - processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("url.full", HttpUrl, HttpUrlOtelBytes)); + } + else + { + processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + } } if (HttpClientHandlerType is not null) @@ -135,7 +191,19 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (Host is not null) { - processor.Process(new TagItem("out.host", Host, HostBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("server.address", Host, HostOtelBytes)); + } + else + { + processor.Process(new TagItem("out.host", Host, HostBytes)); + } + } + + if (ServerPort is not null) + { + processor.Process(new TagItem("server.port", ServerPort.Value, ServerPortBytes)); } base.EnumerateTags(ref processor, openTelemetrySemanticsEnabled); @@ -164,6 +232,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (HttpRequestMethodOriginal is not null) + { + sb.Append("http.request.method_original (tag):") + .Append(HttpRequestMethodOriginal) + .Append(','); + } + if (HttpUrl is not null) { sb.Append("http.url (tag):") @@ -192,6 +267,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (ServerPort is not null) + { + sb.Append("server.port (tag):") + .Append(ServerPort.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)) + .Append(','); + } + base.WriteAdditionalTags(sb); } } diff --git a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs index 7406088379c3..70953f44cb59 100644 --- a/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs +++ b/tracer/src/Datadog.Trace/Generated/net6.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs @@ -23,9 +23,18 @@ partial class HttpTags // HttpMethodBytes = MessagePack.Serialize("http.method"); private static ReadOnlySpan HttpMethodBytes => [171, 104, 116, 116, 112, 46, 109, 101, 116, 104, 111, 100]; + // HttpMethodOtelBytes = MessagePack.Serialize("http.request.method"); + private static ReadOnlySpan HttpMethodOtelBytes => [179, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100]; + + // HttpRequestMethodOriginalBytes = MessagePack.Serialize("http.request.method_original"); + private static ReadOnlySpan HttpRequestMethodOriginalBytes => [188, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100, 95, 111, 114, 105, 103, 105, 110, 97, 108]; + // HttpUrlBytes = MessagePack.Serialize("http.url"); private static ReadOnlySpan HttpUrlBytes => [168, 104, 116, 116, 112, 46, 117, 114, 108]; + // HttpUrlOtelBytes = MessagePack.Serialize("url.full"); + private static ReadOnlySpan HttpUrlOtelBytes => [168, 117, 114, 108, 46, 102, 117, 108, 108]; + // HttpClientHandlerTypeBytes = MessagePack.Serialize("http-client-handler-type"); private static ReadOnlySpan HttpClientHandlerTypeBytes => [184, 104, 116, 116, 112, 45, 99, 108, 105, 101, 110, 116, 45, 104, 97, 110, 100, 108, 101, 114, 45, 116, 121, 112, 101]; @@ -38,6 +47,12 @@ partial class HttpTags // HostBytes = MessagePack.Serialize("out.host"); private static ReadOnlySpan HostBytes => [168, 111, 117, 116, 46, 104, 111, 115, 116]; + // HostOtelBytes = MessagePack.Serialize("server.address"); + private static ReadOnlySpan HostOtelBytes => [174, 115, 101, 114, 118, 101, 114, 46, 97, 100, 100, 114, 101, 115, 115]; + + // ServerPortBytes = MessagePack.Serialize("server.port"); + private static ReadOnlySpan ServerPortBytes => [171, 115, 101, 114, 118, 101, 114, 46, 112, 111, 114, 116]; + public override string? GetTag(string key) { return key switch @@ -45,11 +60,16 @@ partial class HttpTags "span.kind" => SpanKind, "component" => InstrumentationName, "http.method" => HttpMethod, + "http.request.method" => HttpMethod, + "http.request.method_original" => HttpRequestMethodOriginal, "http.url" => HttpUrl, + "url.full" => HttpUrl, "http-client-handler-type" => HttpClientHandlerType, "http.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "http.response.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "out.host" => Host, + "server.address" => Host, + "server.port" => ServerPort is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(ServerPort.Value), _ => base.GetTag(key), }; } @@ -61,10 +81,15 @@ public override void SetTag(string key, string? value) case "component": InstrumentationName = value; break; - case "http.method": + case "http.method": + case "http.request.method": HttpMethod = value; break; - case "http.url": + case "http.request.method_original": + HttpRequestMethodOriginal = value; + break; + case "http.url": + case "url.full": HttpUrl = value; break; case "http-client-handler-type": @@ -82,8 +107,20 @@ public override void SetTag(string key, string? value) } break; - case "out.host": + case "out.host": + case "server.address": Host = value; + break; + case "server.port": + if (int.TryParse(value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out var parsedServerPort)) + { + ServerPort = parsedServerPort; + } + else + { + ServerPort = null; + } + break; case "span.kind": Logger.Value.Warning("Attempted to set readonly tag {TagName} on {TagType}. Ignoring.", key, nameof(HttpTags)); @@ -108,12 +145,31 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (HttpMethod is not null) { - processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("http.request.method", HttpMethod, HttpMethodOtelBytes)); + } + else + { + processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + } + } + + if (HttpRequestMethodOriginal is not null) + { + processor.Process(new TagItem("http.request.method_original", HttpRequestMethodOriginal, HttpRequestMethodOriginalBytes)); } if (HttpUrl is not null) { - processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("url.full", HttpUrl, HttpUrlOtelBytes)); + } + else + { + processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + } } if (HttpClientHandlerType is not null) @@ -135,7 +191,19 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (Host is not null) { - processor.Process(new TagItem("out.host", Host, HostBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("server.address", Host, HostOtelBytes)); + } + else + { + processor.Process(new TagItem("out.host", Host, HostBytes)); + } + } + + if (ServerPort is not null) + { + processor.Process(new TagItem("server.port", ServerPort.Value, ServerPortBytes)); } base.EnumerateTags(ref processor, openTelemetrySemanticsEnabled); @@ -164,6 +232,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (HttpRequestMethodOriginal is not null) + { + sb.Append("http.request.method_original (tag):") + .Append(HttpRequestMethodOriginal) + .Append(','); + } + if (HttpUrl is not null) { sb.Append("http.url (tag):") @@ -192,6 +267,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (ServerPort is not null) + { + sb.Append("server.port (tag):") + .Append(ServerPort.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)) + .Append(','); + } + base.WriteAdditionalTags(sb); } } diff --git a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs index 7406088379c3..70953f44cb59 100644 --- a/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs +++ b/tracer/src/Datadog.Trace/Generated/netcoreapp3.1/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs @@ -23,9 +23,18 @@ partial class HttpTags // HttpMethodBytes = MessagePack.Serialize("http.method"); private static ReadOnlySpan HttpMethodBytes => [171, 104, 116, 116, 112, 46, 109, 101, 116, 104, 111, 100]; + // HttpMethodOtelBytes = MessagePack.Serialize("http.request.method"); + private static ReadOnlySpan HttpMethodOtelBytes => [179, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100]; + + // HttpRequestMethodOriginalBytes = MessagePack.Serialize("http.request.method_original"); + private static ReadOnlySpan HttpRequestMethodOriginalBytes => [188, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100, 95, 111, 114, 105, 103, 105, 110, 97, 108]; + // HttpUrlBytes = MessagePack.Serialize("http.url"); private static ReadOnlySpan HttpUrlBytes => [168, 104, 116, 116, 112, 46, 117, 114, 108]; + // HttpUrlOtelBytes = MessagePack.Serialize("url.full"); + private static ReadOnlySpan HttpUrlOtelBytes => [168, 117, 114, 108, 46, 102, 117, 108, 108]; + // HttpClientHandlerTypeBytes = MessagePack.Serialize("http-client-handler-type"); private static ReadOnlySpan HttpClientHandlerTypeBytes => [184, 104, 116, 116, 112, 45, 99, 108, 105, 101, 110, 116, 45, 104, 97, 110, 100, 108, 101, 114, 45, 116, 121, 112, 101]; @@ -38,6 +47,12 @@ partial class HttpTags // HostBytes = MessagePack.Serialize("out.host"); private static ReadOnlySpan HostBytes => [168, 111, 117, 116, 46, 104, 111, 115, 116]; + // HostOtelBytes = MessagePack.Serialize("server.address"); + private static ReadOnlySpan HostOtelBytes => [174, 115, 101, 114, 118, 101, 114, 46, 97, 100, 100, 114, 101, 115, 115]; + + // ServerPortBytes = MessagePack.Serialize("server.port"); + private static ReadOnlySpan ServerPortBytes => [171, 115, 101, 114, 118, 101, 114, 46, 112, 111, 114, 116]; + public override string? GetTag(string key) { return key switch @@ -45,11 +60,16 @@ partial class HttpTags "span.kind" => SpanKind, "component" => InstrumentationName, "http.method" => HttpMethod, + "http.request.method" => HttpMethod, + "http.request.method_original" => HttpRequestMethodOriginal, "http.url" => HttpUrl, + "url.full" => HttpUrl, "http-client-handler-type" => HttpClientHandlerType, "http.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "http.response.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "out.host" => Host, + "server.address" => Host, + "server.port" => ServerPort is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(ServerPort.Value), _ => base.GetTag(key), }; } @@ -61,10 +81,15 @@ public override void SetTag(string key, string? value) case "component": InstrumentationName = value; break; - case "http.method": + case "http.method": + case "http.request.method": HttpMethod = value; break; - case "http.url": + case "http.request.method_original": + HttpRequestMethodOriginal = value; + break; + case "http.url": + case "url.full": HttpUrl = value; break; case "http-client-handler-type": @@ -82,8 +107,20 @@ public override void SetTag(string key, string? value) } break; - case "out.host": + case "out.host": + case "server.address": Host = value; + break; + case "server.port": + if (int.TryParse(value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out var parsedServerPort)) + { + ServerPort = parsedServerPort; + } + else + { + ServerPort = null; + } + break; case "span.kind": Logger.Value.Warning("Attempted to set readonly tag {TagName} on {TagType}. Ignoring.", key, nameof(HttpTags)); @@ -108,12 +145,31 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (HttpMethod is not null) { - processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("http.request.method", HttpMethod, HttpMethodOtelBytes)); + } + else + { + processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + } + } + + if (HttpRequestMethodOriginal is not null) + { + processor.Process(new TagItem("http.request.method_original", HttpRequestMethodOriginal, HttpRequestMethodOriginalBytes)); } if (HttpUrl is not null) { - processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("url.full", HttpUrl, HttpUrlOtelBytes)); + } + else + { + processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + } } if (HttpClientHandlerType is not null) @@ -135,7 +191,19 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (Host is not null) { - processor.Process(new TagItem("out.host", Host, HostBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("server.address", Host, HostOtelBytes)); + } + else + { + processor.Process(new TagItem("out.host", Host, HostBytes)); + } + } + + if (ServerPort is not null) + { + processor.Process(new TagItem("server.port", ServerPort.Value, ServerPortBytes)); } base.EnumerateTags(ref processor, openTelemetrySemanticsEnabled); @@ -164,6 +232,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (HttpRequestMethodOriginal is not null) + { + sb.Append("http.request.method_original (tag):") + .Append(HttpRequestMethodOriginal) + .Append(','); + } + if (HttpUrl is not null) { sb.Append("http.url (tag):") @@ -192,6 +267,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (ServerPort is not null) + { + sb.Append("server.port (tag):") + .Append(ServerPort.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)) + .Append(','); + } + base.WriteAdditionalTags(sb); } } diff --git a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs index 7406088379c3..70953f44cb59 100644 --- a/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs +++ b/tracer/src/Datadog.Trace/Generated/netstandard2.0/Datadog.Trace.SourceGenerators/TagListGenerator/HttpTags.g.cs @@ -23,9 +23,18 @@ partial class HttpTags // HttpMethodBytes = MessagePack.Serialize("http.method"); private static ReadOnlySpan HttpMethodBytes => [171, 104, 116, 116, 112, 46, 109, 101, 116, 104, 111, 100]; + // HttpMethodOtelBytes = MessagePack.Serialize("http.request.method"); + private static ReadOnlySpan HttpMethodOtelBytes => [179, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100]; + + // HttpRequestMethodOriginalBytes = MessagePack.Serialize("http.request.method_original"); + private static ReadOnlySpan HttpRequestMethodOriginalBytes => [188, 104, 116, 116, 112, 46, 114, 101, 113, 117, 101, 115, 116, 46, 109, 101, 116, 104, 111, 100, 95, 111, 114, 105, 103, 105, 110, 97, 108]; + // HttpUrlBytes = MessagePack.Serialize("http.url"); private static ReadOnlySpan HttpUrlBytes => [168, 104, 116, 116, 112, 46, 117, 114, 108]; + // HttpUrlOtelBytes = MessagePack.Serialize("url.full"); + private static ReadOnlySpan HttpUrlOtelBytes => [168, 117, 114, 108, 46, 102, 117, 108, 108]; + // HttpClientHandlerTypeBytes = MessagePack.Serialize("http-client-handler-type"); private static ReadOnlySpan HttpClientHandlerTypeBytes => [184, 104, 116, 116, 112, 45, 99, 108, 105, 101, 110, 116, 45, 104, 97, 110, 100, 108, 101, 114, 45, 116, 121, 112, 101]; @@ -38,6 +47,12 @@ partial class HttpTags // HostBytes = MessagePack.Serialize("out.host"); private static ReadOnlySpan HostBytes => [168, 111, 117, 116, 46, 104, 111, 115, 116]; + // HostOtelBytes = MessagePack.Serialize("server.address"); + private static ReadOnlySpan HostOtelBytes => [174, 115, 101, 114, 118, 101, 114, 46, 97, 100, 100, 114, 101, 115, 115]; + + // ServerPortBytes = MessagePack.Serialize("server.port"); + private static ReadOnlySpan ServerPortBytes => [171, 115, 101, 114, 118, 101, 114, 46, 112, 111, 114, 116]; + public override string? GetTag(string key) { return key switch @@ -45,11 +60,16 @@ partial class HttpTags "span.kind" => SpanKind, "component" => InstrumentationName, "http.method" => HttpMethod, + "http.request.method" => HttpMethod, + "http.request.method_original" => HttpRequestMethodOriginal, "http.url" => HttpUrl, + "url.full" => HttpUrl, "http-client-handler-type" => HttpClientHandlerType, "http.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "http.response.status_code" => HttpStatusCode is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(HttpStatusCode.Value), "out.host" => Host, + "server.address" => Host, + "server.port" => ServerPort is null ? null : Datadog.Trace.Util.IntStringCache.ToInvariantString(ServerPort.Value), _ => base.GetTag(key), }; } @@ -61,10 +81,15 @@ public override void SetTag(string key, string? value) case "component": InstrumentationName = value; break; - case "http.method": + case "http.method": + case "http.request.method": HttpMethod = value; break; - case "http.url": + case "http.request.method_original": + HttpRequestMethodOriginal = value; + break; + case "http.url": + case "url.full": HttpUrl = value; break; case "http-client-handler-type": @@ -82,8 +107,20 @@ public override void SetTag(string key, string? value) } break; - case "out.host": + case "out.host": + case "server.address": Host = value; + break; + case "server.port": + if (int.TryParse(value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out var parsedServerPort)) + { + ServerPort = parsedServerPort; + } + else + { + ServerPort = null; + } + break; case "span.kind": Logger.Value.Warning("Attempted to set readonly tag {TagName} on {TagType}. Ignoring.", key, nameof(HttpTags)); @@ -108,12 +145,31 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (HttpMethod is not null) { - processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("http.request.method", HttpMethod, HttpMethodOtelBytes)); + } + else + { + processor.Process(new TagItem("http.method", HttpMethod, HttpMethodBytes)); + } + } + + if (HttpRequestMethodOriginal is not null) + { + processor.Process(new TagItem("http.request.method_original", HttpRequestMethodOriginal, HttpRequestMethodOriginalBytes)); } if (HttpUrl is not null) { - processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("url.full", HttpUrl, HttpUrlOtelBytes)); + } + else + { + processor.Process(new TagItem("http.url", HttpUrl, HttpUrlBytes)); + } } if (HttpClientHandlerType is not null) @@ -135,7 +191,19 @@ public override void EnumerateTags(ref TProcessor processor, bool op if (Host is not null) { - processor.Process(new TagItem("out.host", Host, HostBytes)); + if (openTelemetrySemanticsEnabled) + { + processor.Process(new TagItem("server.address", Host, HostOtelBytes)); + } + else + { + processor.Process(new TagItem("out.host", Host, HostBytes)); + } + } + + if (ServerPort is not null) + { + processor.Process(new TagItem("server.port", ServerPort.Value, ServerPortBytes)); } base.EnumerateTags(ref processor, openTelemetrySemanticsEnabled); @@ -164,6 +232,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (HttpRequestMethodOriginal is not null) + { + sb.Append("http.request.method_original (tag):") + .Append(HttpRequestMethodOriginal) + .Append(','); + } + if (HttpUrl is not null) { sb.Append("http.url (tag):") @@ -192,6 +267,13 @@ protected override void WriteAdditionalTags(System.Text.StringBuilder sb) .Append(','); } + if (ServerPort is not null) + { + sb.Append("server.port (tag):") + .Append(ServerPort.Value.ToString(System.Globalization.CultureInfo.InvariantCulture)) + .Append(','); + } + base.WriteAdditionalTags(sb); } } diff --git a/tracer/src/Datadog.Trace/OpenTelemetry/HttpSemanticConventions.cs b/tracer/src/Datadog.Trace/OpenTelemetry/HttpSemanticConventions.cs new file mode 100644 index 000000000000..3c4b9cf23111 --- /dev/null +++ b/tracer/src/Datadog.Trace/OpenTelemetry/HttpSemanticConventions.cs @@ -0,0 +1,141 @@ +// +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc. +// + +#nullable enable + +using System; +using System.Collections.Generic; +using Datadog.Trace.Tagging; +using Datadog.Trace.Util; +using Datadog.Trace.Util.Http; + +namespace Datadog.Trace.OpenTelemetry +{ + /// + /// Shapes the values required by the + /// OpenTelemetry HTTP + /// semantic conventions and stores them on the corresponding ITags properties. + /// Only used when OpenTelemetry semantics are enabled. + /// + internal static class HttpSemanticConventions + { + /// + /// The value reported in "http.request.method" when the request method is not one of the + /// . + /// + internal const string OtherRequestMethod = "_OTHER"; + + /// + /// The span name used when the request method is not one of the . + /// + internal const string UnknownMethodSpanName = "HTTP"; + + /// + /// Maps a method name to its canonical form, ignoring case. Contains the methods defined in + /// RFC 9110, plus + /// PATCH and QUERY. Any other method is reported as . + /// + private static readonly Dictionary CanonicalRequestMethods = + new(StringComparer.OrdinalIgnoreCase) + { + { "CONNECT", "CONNECT" }, + { "DELETE", "DELETE" }, + { "GET", "GET" }, + { "HEAD", "HEAD" }, + { "OPTIONS", "OPTIONS" }, + { "PATCH", "PATCH" }, + { "POST", "POST" }, + { "PUT", "PUT" }, + { "QUERY", "QUERY" }, + { "TRACE", "TRACE" }, + }; + + /// + /// Sets the span name and the request tags of an HTTP client span, using the OpenTelemetry + /// HTTP semantic conventions. + /// + /// The HTTP client span + /// The tags of + /// The HTTP method of the request, as provided by the instrumented library + /// The absolute URI of the request, if known + /// Used to truncate and obfuscate the query string + internal static void SetHttpClientRequestValues(Span span, HttpTags tags, string? httpMethod, Uri? requestUri, QueryStringManager? queryStringManager) + { + var requestMethod = NormalizeRequestMethod(httpMethod); + + tags.HttpMethod = requestMethod; + + // "http.request.method_original" is only set when it differs from "http.request.method", + // which happens when the method is unknown, or was not already in its canonical form. + // Always assigned, as some integrations call this more than once for the same span. + tags.HttpRequestMethodOriginal = + !StringUtil.IsNullOrEmpty(httpMethod) && !string.Equals(httpMethod, requestMethod, StringComparison.Ordinal) + ? httpMethod + : null; + + // The span name is "{method} {target}", but there is no low-cardinality target available + // for HTTP client spans until we support "url.template", so we only use the method. + // Note that we must not fall back to using the URI path as the target. + span.ResourceName = GetSpanName(requestMethod); + + if (requestUri is not null) + { + tags.HttpUrl = HttpRequestUtils.GetUrlFull(requestUri, queryStringManager); + tags.Host = HttpRequestUtils.GetNormalizedHost(requestUri.Host); + + // Uri.Port is the default port for the scheme when the URL doesn't specify one, + // which is what we want to report in "server.port" + tags.ServerPort = requestUri.Port; + } + } + + /// + /// Gets the value to report in "http.request.method": the canonical form of + /// , or if it is not one of + /// the . + /// + internal static string NormalizeRequestMethod(string? httpMethod) + { + if (StringUtil.IsNullOrEmpty(httpMethod)) + { + return OtherRequestMethod; + } + + // Fast path: the method is already in its canonical form, which is the common case. + // Kept in sync with CanonicalRequestMethods, but written as a switch because an ordinal + // match is measurably cheaper than the case-insensitive hash the dictionary has to compute. + switch (httpMethod) + { + case "CONNECT": + case "DELETE": + case "GET": + case "HEAD": + case "OPTIONS": + case "PATCH": + case "POST": + case "PUT": + case "QUERY": + case "TRACE": + return httpMethod; + } + + // HTTP methods are case-sensitive, but the libraries we instrument are not always, + // so treat a case-insensitive match as the canonical method. The original value is + // reported separately in "http.request.method_original". + return CanonicalRequestMethods.TryGetValue(httpMethod, out var canonicalMethod) + ? canonicalMethod + : OtherRequestMethod; + } + + /// + /// Gets the span name for a request with the provided "http.request.method" value, when no + /// low-cardinality target is available. + /// + internal static string GetSpanName(string requestMethod) + => string.Equals(requestMethod, OtherRequestMethod, StringComparison.Ordinal) + ? UnknownMethodSpanName + : requestMethod; + } +} diff --git a/tracer/src/Datadog.Trace/Tagging/HttpTags.cs b/tracer/src/Datadog.Trace/Tagging/HttpTags.cs index 095304bee5ca..eabd67865a2d 100644 --- a/tracer/src/Datadog.Trace/Tagging/HttpTags.cs +++ b/tracer/src/Datadog.Trace/Tagging/HttpTags.cs @@ -18,10 +18,22 @@ internal partial class HttpTags : InstrumentationTags, IHasStatusCode [Tag(Trace.Tags.InstrumentationName)] public string InstrumentationName { get; set; } - [Tag(Trace.Tags.HttpMethod)] + [Tag(Trace.Tags.HttpMethod, OtelName = Trace.Tags.HttpRequestMethod)] public string HttpMethod { get; set; } - [Tag(Trace.Tags.HttpUrl)] + /// + /// Gets or sets the original HTTP method, when it differs from the value reported + /// in . This is an OpenTelemetry-only concept, so it is only + /// set when OpenTelemetry semantics are enabled. + /// + [Tag(Trace.Tags.HttpRequestMethodOriginal)] + public string HttpRequestMethodOriginal { get; set; } + + /// + /// Gets or sets the request URL. Serialized as "http.url" with Datadog semantics + /// and as "url.full" with OpenTelemetry semantics. + /// + [Tag(Trace.Tags.HttpUrl, OtelName = Trace.Tags.UrlFull)] public string HttpUrl { get; set; } [Tag(HttpClientHandlerTypeKey)] @@ -30,8 +42,16 @@ internal partial class HttpTags : InstrumentationTags, IHasStatusCode [Tag(Trace.Tags.HttpStatusCode, OtelName = Trace.Tags.HttpResponseStatusCode)] public int? HttpStatusCode { get; set; } - [Tag(Trace.Tags.OutHost)] + [Tag(Trace.Tags.OutHost, OtelName = Trace.Tags.ServerAddress)] public string Host { get; set; } + + /// + /// Gets or sets the port of the remote server. We have never reported a port for + /// HTTP client spans with Datadog semantics, so this is only set when OpenTelemetry + /// semantics are enabled. + /// + [Tag(Trace.Tags.ServerPort)] + public int? ServerPort { get; set; } } internal sealed partial class HttpV1Tags : HttpTags @@ -55,6 +75,8 @@ public string PeerServiceSource { get { + // Do not update this when OpenTelemetry semantics are enabled + // since OpenTelemetry semantics supercedes V1Tags return _peerServiceOverride is not null ? "peer.service" : "out.host"; diff --git a/tracer/src/Datadog.Trace/Tags.cs b/tracer/src/Datadog.Trace/Tags.cs index 36425e4372ca..93ab0e56df77 100644 --- a/tracer/src/Datadog.Trace/Tags.cs +++ b/tracer/src/Datadog.Trace/Tags.cs @@ -56,11 +56,28 @@ public static partial class Tags /// public const string HttpUrl = "http.url"; + /// + /// The OpenTelemetry semantic convention absolute URL of an HTTP request + /// + public const string UrlFull = "url.full"; + /// /// The method of an HTTP request /// public const string HttpMethod = "http.method"; + /// + /// The OpenTelemetry semantic convention method of an HTTP request. The method is reported in its canonical uppercase form. + /// Unrecognized methods are reported as _OTHER. + /// + public const string HttpRequestMethod = "http.request.method"; + + /// + /// The original method of an HTTP request. Only set when it differs (case-sensitive) from + /// the value reported in . + /// + public const string HttpRequestMethodOriginal = "http.request.method_original"; + /// /// The host of an HTTP request /// @@ -155,6 +172,11 @@ public static partial class Tags /// public const string ServerAddress = "server.address"; + /// + /// The server port for the remote service. + /// + public const string ServerPort = "server.port"; + /// /// The size of the message. /// diff --git a/tracer/src/Datadog.Trace/Util/Http/HttpRequestUtils.cs b/tracer/src/Datadog.Trace/Util/Http/HttpRequestUtils.cs index 9e3aa34101a8..cece1e601002 100644 --- a/tracer/src/Datadog.Trace/Util/Http/HttpRequestUtils.cs +++ b/tracer/src/Datadog.Trace/Util/Http/HttpRequestUtils.cs @@ -14,6 +14,10 @@ internal static class HttpRequestUtils { private const string NoHostSpecified = "UNKNOWN_HOST"; + // These include the '@' delimiter so they can be inserted into a URL as-is + private const string RedactedUserName = "REDACTED@"; + private const string RedactedUserNameAndPassword = "REDACTED:REDACTED@"; + #if NET6_0_OR_GREATER // In .NET 6+, we could theoretically bypass a bunch of allocations by using the GetComponents() method which is heavily // optimized. Unfortunately, in .NET FX and < .NET 6, this approach allocates a _lot_ more. And what's more @@ -92,6 +96,40 @@ internal static string GetUrl(Uri uri, QueryStringManager? queryStringManager = } #endif + /// + /// Gets the absolute URL reported in the OpenTelemetry "url.full" attribute. This is the + /// same value as , except that credentials + /// passed in the URL are redacted rather than dropped, as required by the OpenTelemetry + /// HTTP semantic conventions. + /// + /// The absolute URI of the request + /// Used to truncate and obfuscate the query string + internal static string GetUrlFull(Uri uri, QueryStringManager? queryStringManager = null) + { + var userInfo = uri.UserInfo; + var url = GetUrl(uri, queryStringManager); + + if (StringUtil.IsNullOrEmpty(userInfo)) + { + return url; + } + + // GetUrl() never includes the user info, so the redacted form has to be inserted at the + // start of the authority. A scheme cannot contain '/', so the first "//" always delimits + // it. If it somehow isn't there, return the URL that already has no credentials in it + // rather than building something malformed. + var schemeDelimiterIndex = url.IndexOf("//", StringComparison.Ordinal); + if (schemeDelimiterIndex < 0) + { + return url; + } + + // We must never report the credentials, but the URL should still show that they were there + return url.Insert( + schemeDelimiterIndex + 2, + userInfo.IndexOf(':') >= 0 ? RedactedUserNameAndPassword : RedactedUserName); + } + internal static string GetUrl(string scheme, string host, int? port, string pathBase, string path, string queryString, QueryStringManager? queryStringManager = null) { if (queryStringManager != null) diff --git a/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestAgentOtlpCollection.cs b/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestAgentOtlpCollection.cs new file mode 100644 index 000000000000..f0636cd965ca --- /dev/null +++ b/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/Helpers/TestAgentOtlpCollection.cs @@ -0,0 +1,19 @@ +// +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc. +// + +using Xunit; + +namespace Datadog.Trace.ClrProfiler.IntegrationTests.Helpers +{ + /// + /// Serializes every test class that reads from the shared ddapm test-agent OTLP session. + /// Those tests call /test/session/clear, which wipes the session for everyone, so they must + /// not run concurrently with each other. + /// + [CollectionDefinition(nameof(TestAgentOtlpCollection), DisableParallelization = true)] + public class TestAgentOtlpCollection + { + } +} diff --git a/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/OpenTelemetrySdkTests.cs b/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/OpenTelemetrySdkTests.cs index e274cac22fc8..da7cd1c17482 100644 --- a/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/OpenTelemetrySdkTests.cs +++ b/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/OpenTelemetrySdkTests.cs @@ -25,6 +25,7 @@ namespace Datadog.Trace.ClrProfiler.IntegrationTests [Trait("RequiresDockerDependency", "true")] [Trait("DockerGroup", "1")] [UsesVerify] + [Collection(nameof(TestAgentOtlpCollection))] public class OpenTelemetrySdkTests : TracingIntegrationTest { private static readonly string CustomServiceName = "CustomServiceName"; diff --git a/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/WebRequestTests.cs b/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/WebRequestTests.cs index a2665b2442dc..3b4e99ad566d 100644 --- a/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/WebRequestTests.cs +++ b/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/WebRequestTests.cs @@ -3,12 +3,17 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc. // +using System; using System.Globalization; using System.Linq; +using System.Text.RegularExpressions; using System.Threading.Tasks; using Datadog.Trace.ClrProfiler.IntegrationTests.Helpers; using Datadog.Trace.Configuration; +using Datadog.Trace.ExtensionMethods; using Datadog.Trace.TestHelpers; +using Datadog.Trace.Vendors.Newtonsoft.Json; +using Datadog.Trace.Vendors.Newtonsoft.Json.Linq; using FluentAssertions; using VerifyXunit; using Xunit; @@ -17,8 +22,7 @@ namespace Datadog.Trace.ClrProfiler.IntegrationTests { [UsesVerify] - [CollectionDefinition(nameof(WebRequestTests), DisableParallelization = true)] - [Collection(nameof(WebRequestTests))] + [Collection(nameof(TestAgentOtlpCollection))] public class WebRequestTests : TracingIntegrationTest { public WebRequestTests(ITestOutputHelper output) @@ -34,13 +38,102 @@ public WebRequestTests(ITestOutputHelper output) [Trait("Category", "EndToEnd")] [Trait("RunOnWindows", "True")] [Trait("SupportsInstrumentationVerification", "True")] - public Task SubmitsTracesV0() => RunTest("v0"); + public Task SubmitsTracesV0() => RunTest(metadataSchemaVersion: "v0", openTelemetrySemanticsEnabled: false); [SkippableFact] [Trait("Category", "EndToEnd")] [Trait("RunOnWindows", "True")] [Trait("SupportsInstrumentationVerification", "True")] - public Task SubmitsTracesV1() => RunTest("v1"); + public Task SubmitsTracesV1() => RunTest(metadataSchemaVersion: "v1", openTelemetrySemanticsEnabled: false); + + [SkippableFact] + [Trait("Category", "EndToEnd")] + [Trait("RunOnWindows", "True")] + [Trait("SupportsInstrumentationVerification", "True")] + public Task SubmitsTracesV0WithOpenTelemetrySemantics() => RunTest(metadataSchemaVersion: "v0", openTelemetrySemanticsEnabled: true); + + [SkippableFact] + [Trait("Category", "EndToEnd")] + [Trait("RunOnWindows", "True")] + [Trait("SupportsInstrumentationVerification", "True")] + public Task SubmitsTracesV1WithOpenTelemetrySemantics() => RunTest(metadataSchemaVersion: "v1", openTelemetrySemanticsEnabled: true); + + [SkippableTheory] + [Trait("Category", "EndToEnd")] + [Trait("RequiresDockerDependency", "true")] + [Trait("DockerGroup", "1")] + [InlineData("http/json", false)] + [InlineData("http/json", true)] + [InlineData("http/protobuf", false)] + [InlineData("http/protobuf", true)] + public async Task SubmitsOtlpTraces(string protocol, bool openTelemetrySemanticsEnabled) + { + SetInstrumentationVerification(); + + var isJson = protocol == "http/json"; + var names = OtlpFieldNames.For(isJson); + var testAgentHost = Environment.GetEnvironmentVariable("TEST_AGENT_HOST") ?? "127.0.0.1"; + + await OtlpSnapshotHelper.ClearTestAgentSessionAsync(testAgentHost); + + int httpPort = TcpPortProvider.GetOpenPort(); + Output.WriteLine($"Assigning port {httpPort} for the httpPort."); + + // OpenTelemetry semantics unilaterally force the v0 schema, so pin v0 for the + // semantics-off case too and keep the two snapshots directly comparable. + SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", "v0"); + SetEnvironmentVariable("DD_TRACE_OTEL_SEMANTICS_ENABLED", openTelemetrySemanticsEnabled.ToString()); + + // OTEL_TRACES_EXPORTER=otlp is what makes the Datadog SDK emit OTLP instead of msgpack + SetEnvironmentVariable("OTEL_TRACES_EXPORTER", "otlp"); + SetEnvironmentVariable("OTEL_EXPORTER_OTLP_PROTOCOL", protocol); + SetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT", $"http://{testAgentHost}:4318"); + + var applicationStartTimeUnixNano = DateTimeOffset.UtcNow.ToUnixTimeNanoseconds(); + + // Traces go to the test-agent over OTLP, but telemetry still goes to the mock agent + using var telemetry = this.ConfigureTelemetry(); + using var agent = EnvironmentHelper.GetMockAgent(); + using ProcessResult processResult = await RunSampleAndWaitForExit(agent, arguments: $"Port={httpPort}"); + + var tracesRequests = await OtlpSnapshotHelper.WaitForTestAgentDataAsync($"http://{testAgentHost}:4318/test/session/traces"); + tracesRequests.Should().NotBeNullOrEmpty(); + + OtlpSnapshotHelper.NormalizeResourceAttributes(tracesRequests, names); + OtlpSnapshotHelper.NormalizeSpans(tracesRequests, names, applicationStartTimeUnixNano); + NormalizeWebRequestSpans(tracesRequests, names); + OtlpSnapshotHelper.SortSpanAttributes(tracesRequests); + + // Sort by name, then by the request URL, then by the span's own normalized JSON. + // Ids and timestamps are already normalized, so the last key is total: any two spans + // that still tie are byte-identical and their order cannot affect the snapshot. + var merged = OtlpSnapshotHelper.MergeDatadogRequests( + tracesRequests, + names, + spans => spans.OrderBy(s => s["name"]?.ToString() ?? string.Empty, StringComparer.Ordinal) + .ThenBy(s => OtlpSnapshotHelper.GetAttributeStringValue(s, names, "url.full", "http.url") ?? string.Empty, StringComparer.Ordinal) + .ThenBy(s => s.ToString(Formatting.None), StringComparer.Ordinal)); + + var finalJson = merged.ToString(Formatting.Indented); + + var settings = VerifyHelper.GetSpanVerifierSettings(); +#if NETCOREAPP + // different TFMs use different underlying handlers, which we don't really care about for the snapshots + settings.AddSimpleScrubber("System.Net.Http.HttpClientHandler", "System.Net.Http.SocketsHttpHandler"); +#endif + if (!isJson) + { + OtlpSnapshotHelper.AddProtobufToJsonScrubbers(settings); + } + + var suffix = openTelemetrySemanticsEnabled ? "_OtelSemantics" : string.Empty; + await Verifier.Verify(finalJson, settings) + .UseFileName($"{nameof(WebRequestTests)}.{nameof(SubmitsOtlpTraces)}_DD{suffix}") + .DisableRequireUniquePrefix(); + + await telemetry.AssertIntegrationEnabledAsync(IntegrationId.WebRequest); + VerifyInstrumentation(processResult.Process); + } [SkippableFact] [Trait("Category", "EndToEnd")] @@ -71,7 +164,50 @@ public async Task TracingDisabled_DoesNotSubmitsTraces() } } - private async Task RunTest(string metadataSchemaVersion) + /// + /// Normalizes the parts of the OTLP payload that are specific to this sample: the randomly + /// assigned listener port, and the one span whose shape changed on .NET 9. + /// + /// The captured OTLP requests. + /// The field-name casing to use. + private void NormalizeWebRequestSpans(JToken tracesRequests, OtlpFieldNames names) + { + // The sample's HttpListener binds a random port each run. url.full is covered by + // VerifyHelper's localhost: scrubber, but server.port carries the bare number. + foreach (var attribute in tracesRequests.SelectTokens("$..spans[*].attributes[?(@.key == 'server.port')]")) + { + if (attribute["value"] is JObject value) + { + foreach (var property in value.Properties()) + { + // Preserve the value kind (stringValue vs intValue) so http/json and + // http/protobuf still render identically after scrubbing. + property.Value = property.Value.Type == JTokenType.String ? (JToken)"8080" : (JToken)8080; + } + } + } + +#if NET9_0_OR_GREATER + // .NET 9.0 changed the behaviour when AllowWriteStreamBuffering=false + // The net result is that we end up creating a "WebRequest" span instead + // of an "HttpClient" span in one of the cases. Rather than creating a whole + // separate set of snapshots for .NET 9+, just "fixing" that one span instead. + var rogueSpan = tracesRequests + .SelectTokens("$..spans[*]") + .SingleOrDefault(s => OtlpSnapshotHelper.GetAttributeStringValue(s, names, "url.full", "http.url") + ?.EndsWith("?BeginGetResponseAsync_NoBuffering") == true); + + // it should never be null, but fall through to fail the snapshots for easier debuggability if it is + if (rogueSpan is not null) + { + Output.WriteLine("Updating span with HttpClient tags"); + OtlpSnapshotHelper.SetAttributeStringValue(rogueSpan, names, "component", "HttpMessageHandler"); // previously "WebRequest" + OtlpSnapshotHelper.SetAttributeStringValue(rogueSpan, names, "http-client-handler-type", "System.Net.Http.SocketsHttpHandler"); // previously not set + } +#endif + } + + private async Task RunTest(string metadataSchemaVersion, bool openTelemetrySemanticsEnabled) { SetInstrumentationVerification(); @@ -81,7 +217,8 @@ private async Task RunTest(string metadataSchemaVersion) Output.WriteLine($"Assigning port {httpPort} for the httpPort."); SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", metadataSchemaVersion); - var isExternalSpan = metadataSchemaVersion == "v0"; + SetEnvironmentVariable("DD_TRACE_OTEL_SEMANTICS_ENABLED", openTelemetrySemanticsEnabled.ToString()); + var isExternalSpan = metadataSchemaVersion == "v0" || openTelemetrySemanticsEnabled; // For OpenTelemetry Semantics enabled, we are unilaterally setting the metadata schema to v0 var clientSpanServiceName = isExternalSpan ? $"{EnvironmentHelper.FullSampleName}-http-client" : EnvironmentHelper.FullSampleName; using var telemetry = this.ConfigureTelemetry(); @@ -112,7 +249,10 @@ private async Task RunTest(string metadataSchemaVersion) // different TFMs use different underlying handlers, which we don't really care about for the snapshots settings.AddSimpleScrubber("System.Net.Http.HttpClientHandler", "System.Net.Http.SocketsHttpHandler"); #endif + settings.AddRegexScrubber(new Regex("\"time_unix_nano\":\\d+"), "\"time_unix_nano\":"); + settings.AddRegexScrubber(new Regex("server.port: \\d+"), "server.port: 8080"); var suffix = EnvironmentHelper.IsCoreClr() ? string.Empty : "_netfx"; + var schema = openTelemetrySemanticsEnabled ? "otel" : metadataSchemaVersion; await VerifyHelper.VerifySpans( allSpans, settings, @@ -122,11 +262,12 @@ await VerifyHelper.VerifySpans( .ThenBy(x => x.Tags.TryGetValue("http.url", out var url) ? url : string.Empty) .ThenBy(x => x.Start) .ThenBy(x => x.Duration)) - .UseFileName($"{nameof(WebRequestTests)}{suffix}_{metadataSchemaVersion}"); + .DisableRequireUniquePrefix() + .UseFileName($"{nameof(WebRequestTests)}{suffix}_{schema}"); allSpans.Should().OnlyHaveUniqueItems(s => new { s.SpanId, s.TraceId }); var httpSpans = allSpans.Where(s => s.Type == SpanTypes.Http).ToList(); - ValidateIntegrationSpans(httpSpans, metadataSchemaVersion, expectedServiceName: clientSpanServiceName, isExternalSpan); + ValidateIntegrationSpans(httpSpans, schema, expectedServiceName: clientSpanServiceName, isExternalSpan); await telemetry.AssertIntegrationEnabledAsync(IntegrationId.WebRequest); VerifyInstrumentation(processResult.Process); diff --git a/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataAPI.cs b/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataAPI.cs index 1d6750146749..8fc91b14ce55 100644 --- a/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataAPI.cs +++ b/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataAPI.cs @@ -389,6 +389,7 @@ public static Result IsWcf(this MockSpan span, string metadataSchemaVersion, ISe public static Result IsWebRequest(this MockSpan span, string metadataSchemaVersion) => metadataSchemaVersion switch { + "otel" => span.IsHttpClientRequestOTel(), "v1" => span.IsWebRequestV1(), _ => span.IsWebRequestV0(), }; diff --git a/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataOTelRules.cs b/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataOTelRules.cs new file mode 100644 index 000000000000..4b17a6efc26c --- /dev/null +++ b/tracer/test/Datadog.Trace.TestHelpers/SpanMetadataOTelRules.cs @@ -0,0 +1,43 @@ +// +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc. +// + +using System.Collections.Generic; +using static Datadog.Trace.TestHelpers.SpanMetadataRulesHelpers; + +namespace Datadog.Trace.TestHelpers +{ +#pragma warning disable SA1601 // Partial elements should be documented + internal static class SpanMetadataOTelRules + { + // See: https://opentelemetry.io/docs/specs/semconv/http/http-spans/ + public static Result IsHttpClientRequestOTel(this MockSpan span) => Result.FromSpan(span) + .Properties(s => s + .Matches(Name, "http.request") + .Matches(Type, "http")) + .Tags(s => s + // Required + .IsPresent("http.request.method") + .IsPresent("server.address") + .IsPresent("url.full") + // Conditionally required + .IsOptional("error.type") + .IsOptional("http.request.method_original") + .IsOptional("http.response.status_code") + .IsOptional("network.protocol.name") + .IsOptional("server.port") + // Recommended + .IsOptional("http.request.resend_count") + .IsOptional("network.peer.address") + .IsOptional("network.peer.port") + .IsOptional("network.protocol.version") + // DD Only + .IsPresent("component") + .IsOptional("http-client-handler-type") + .IsOptional("_dd.base_service") + .IsOptional("_dd.tags.process") + .IsOptional("_dd.svc_src") + .Matches("span.kind", "client")); + } +} diff --git a/tracer/test/Datadog.Trace.TestHelpers/SpanTagAssertion.cs b/tracer/test/Datadog.Trace.TestHelpers/SpanTagAssertion.cs index a1a6d11e3943..9ba71e81f492 100644 --- a/tracer/test/Datadog.Trace.TestHelpers/SpanTagAssertion.cs +++ b/tracer/test/Datadog.Trace.TestHelpers/SpanTagAssertion.cs @@ -26,6 +26,7 @@ public static void DefaultTagAssertions(SpanTagAssertion s) => s .IsOptional("runtime-id") // TODO: Make runtime-id required on all spans, per our span attributes push .IsOptional("language") // TODO: Make language required on all spans, per our span attributes push .IsOptional("version") + .IsOptional("events") .IsOptional("_dd.p.dm") // "decision maker", but contains the sampling mechanism .IsOptional("_dd.p.tid") // contains the upper 64 bits of a 128-bit trace id .IsOptional("_dd.p.ksr") // Knuth sampling rate, propagated tag added by the tracer diff --git a/tracer/test/Datadog.Trace.Tests/ClrProfiler/ScopeFactoryTests.cs b/tracer/test/Datadog.Trace.Tests/ClrProfiler/ScopeFactoryTests.cs new file mode 100644 index 000000000000..d28574da9cfb --- /dev/null +++ b/tracer/test/Datadog.Trace.Tests/ClrProfiler/ScopeFactoryTests.cs @@ -0,0 +1,199 @@ +// +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc. +// + +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Globalization; +using System.Linq; +using System.Threading.Tasks; +using Datadog.Trace.ClrProfiler; +using Datadog.Trace.Configuration; +using Datadog.Trace.Processors; +using Datadog.Trace.Tagging; +using Datadog.Trace.TestHelpers.TestTracer; +using FluentAssertions; +using Xunit; + +namespace Datadog.Trace.Tests.ClrProfiler; + +public class ScopeFactoryTests +{ + private static readonly Uri RequestUri = new("http://localhost:8080/api/users?q=1"); + + [Fact] + public async Task CreateOutboundHttpScope_WithDatadogSemantics_UsesDatadogNamesAndValues() + { + await using var tracer = CreateTracer(otelSemanticsEnabled: false); + using var parent = StartParentScope(tracer); + + using var scope = ScopeFactory.CreateOutboundHttpScope(tracer, "GET", RequestUri, IntegrationId.HttpMessageHandler, out var tags); + + scope.Span.ResourceName.Should().Be("GET localhost:8080/api/users"); + scope.Span.Type.Should().Be(SpanTypes.Http); + + tags.HttpMethod.Should().Be("GET"); + tags.HttpUrl.Should().Be("http://localhost:8080/api/users?q=1"); + tags.Host.Should().Be("localhost"); + + // OpenTelemetry-only concepts are not populated + tags.ServerPort.Should().BeNull(); + tags.HttpRequestMethodOriginal.Should().BeNull(); + + var serializedTags = GetSerializedTags(scope.Span); + serializedTags.Should().Contain( + [ + new KeyValuePair(Tags.HttpMethod, "GET"), + new KeyValuePair(Tags.HttpUrl, "http://localhost:8080/api/users?q=1"), + new KeyValuePair(Tags.OutHost, "localhost"), + ]); + serializedTags.Keys.Should().NotContain([Tags.HttpRequestMethod, Tags.UrlFull, Tags.ServerAddress, Tags.ServerPort]); + } + + [Fact] + public async Task CreateOutboundHttpScope_WithOpenTelemetrySemantics_UsesOpenTelemetryNamesAndValues() + { + await using var tracer = CreateTracer(otelSemanticsEnabled: true); + using var parent = StartParentScope(tracer); + + using var scope = ScopeFactory.CreateOutboundHttpScope(tracer, "GET", RequestUri, IntegrationId.HttpMessageHandler, out var tags); + + // there is no low-cardinality target available for HTTP client spans, so the name is just the method + scope.Span.ResourceName.Should().Be("GET"); + scope.Span.Type.Should().Be(SpanTypes.Http); + + tags.HttpMethod.Should().Be("GET"); + tags.HttpUrl.Should().Be("http://localhost:8080/api/users?q=1"); + tags.Host.Should().Be("localhost"); + tags.ServerPort.Should().Be(8080); + tags.HttpRequestMethodOriginal.Should().BeNull(); + + var serializedTags = GetSerializedTags(scope.Span); + serializedTags.Should().Contain( + [ + new KeyValuePair(Tags.HttpRequestMethod, "GET"), + new KeyValuePair(Tags.UrlFull, "http://localhost:8080/api/users?q=1"), + new KeyValuePair(Tags.ServerAddress, "localhost"), + new KeyValuePair(Tags.ServerPort, "8080"), + ]); + serializedTags.Keys.Should().NotContain([Tags.HttpMethod, Tags.HttpUrl, Tags.OutHost, Tags.HttpRequestMethodOriginal]); + } + + [Fact] + public async Task CreateOutboundHttpScope_WithOpenTelemetrySemantics_UsesTheDefaultPortWhenNotSpecified() + { + await using var tracer = CreateTracer(otelSemanticsEnabled: true); + using var parent = StartParentScope(tracer); + + using var scope = ScopeFactory.CreateOutboundHttpScope(tracer, "GET", new Uri("https://example.com/api"), IntegrationId.HttpMessageHandler, out var tags); + + tags.ServerPort.Should().Be(443); + tags.HttpUrl.Should().Be("https://example.com/api"); + } + + [Theory] + // known methods are reported in their canonical form, with the original value when it differs + [InlineData("GET", "GET", null, "GET")] + [InlineData("get", "GET", "get", "GET")] + [InlineData("Patch", "PATCH", "Patch", "PATCH")] + + // unknown methods are reported as _OTHER, and the span is named HTTP + [InlineData("FOO", "_OTHER", "FOO", "HTTP")] + [InlineData(null, "_OTHER", null, "HTTP")] + public async Task CreateOutboundHttpScope_WithOpenTelemetrySemantics_NormalizesTheRequestMethod( + string httpMethod, string expectedMethod, string expectedOriginalMethod, string expectedSpanName) + { + await using var tracer = CreateTracer(otelSemanticsEnabled: true); + using var parent = StartParentScope(tracer); + + using var scope = ScopeFactory.CreateOutboundHttpScope(tracer, httpMethod, RequestUri, IntegrationId.HttpMessageHandler, out var tags); + + scope.Span.ResourceName.Should().Be(expectedSpanName); + tags.HttpMethod.Should().Be(expectedMethod); + tags.HttpRequestMethodOriginal.Should().Be(expectedOriginalMethod); + } + + [Fact] + public async Task CreateOutboundHttpScope_WithOpenTelemetrySemantics_RedactsCredentialsInTheUrl() + { + await using var tracer = CreateTracer(otelSemanticsEnabled: true); + using var parent = StartParentScope(tracer); + + using var scope = ScopeFactory.CreateOutboundHttpScope(tracer, "GET", new Uri("http://user:pass@localhost/api"), IntegrationId.HttpMessageHandler, out var tags); + + tags.HttpUrl.Should().Be("http://REDACTED:REDACTED@localhost/api"); + } + + // DD_TRACE_OTEL_SEMANTICS_ENABLED forces the effective metadata schema version to v0 (see + // TracerSettings), because OpenTelemetry semantics already fully replace Datadog attribute naming + // and values, so the V1 schema's Datadog-only attributes (e.g. peer.service) must not coexist with them. + [Theory] + [InlineData("v1")] + [InlineData("v0")] + [InlineData(null)] + public async Task CreateOutboundHttpScope_WithOpenTelemetrySemantics_NeverUsesV1SchemaTags(string requestedSchemaVersion) + { + await using var tracer = CreateTracer(otelSemanticsEnabled: true, schemaVersion: requestedSchemaVersion); + using var parent = StartParentScope(tracer); + + using var scope = ScopeFactory.CreateOutboundHttpScope(tracer, "GET", RequestUri, IntegrationId.HttpMessageHandler, out var tags); + + tags.Should().BeOfType(); + tags.GetTag(Tags.PeerService).Should().BeNull(); + tags.GetTag(Tags.PeerServiceSource).Should().BeNull(); + } + + private static Scope StartParentScope(Tracer tracer) + { + // Azure Functions support installs a PlatformStrategy.ShouldSkipClientSpan callback that + // skips parentless client spans. It is a mutable static, so another test in this assembly + // may already have installed it: always create the client span inside an active scope. + return tracer.StartActiveInternal("parent"); + } + + private static ScopedTracer CreateTracer(bool otelSemanticsEnabled, string schemaVersion = null) + { + var collection = new NameValueCollection + { + { ConfigurationKeys.OpenTelemetry.OtelSemanticsEnabled, otelSemanticsEnabled ? "true" : "false" }, + }; + + if (schemaVersion is not null) + { + collection.Add(ConfigurationKeys.MetadataSchemaVersion, schemaVersion); + } + + var settings = new TracerSettings(new NameValueConfigurationSource(collection)); + return TracerHelper.CreateWithFakeAgent(settings); + } + + private static Dictionary GetSerializedTags(Span span) + { + var result = new Dictionary(); + var processor = new TagCollectorProcessor(result); + span.Tags.EnumerateTags(ref processor, span.OpenTelemetrySemanticsEnabled); + return result; + } + + private readonly struct TagCollectorProcessor : IItemProcessor, IItemProcessor + { + private readonly Dictionary _items; + + public TagCollectorProcessor(Dictionary items) + { + _items = items; + } + + public void Process(TagItem item) + { + _items[item.Key] = item.Value; + } + + public void Process(TagItem item) + { + _items[item.Key] = item.Value.ToString(CultureInfo.InvariantCulture); + } + } +} diff --git a/tracer/test/Datadog.Trace.Tests/Configuration/TracerSettingsTests.cs b/tracer/test/Datadog.Trace.Tests/Configuration/TracerSettingsTests.cs index 080a0e9aabc1..97560eaec6f5 100644 --- a/tracer/test/Datadog.Trace.Tests/Configuration/TracerSettingsTests.cs +++ b/tracer/test/Datadog.Trace.Tests/Configuration/TracerSettingsTests.cs @@ -108,6 +108,23 @@ public void MetadataSchemaVersion(string value, object expected) settings.MetadataSchemaVersion.Should().Be((SchemaVersion)expected); } + [Theory] + [InlineData("v1", true, SchemaVersion.V0)] + [InlineData("V1", true, SchemaVersion.V0)] + [InlineData("v0", true, SchemaVersion.V0)] + [InlineData(null, true, SchemaVersion.V0)] + [InlineData("v1", false, SchemaVersion.V1)] + [InlineData(null, false, SchemaVersion.V0)] + public void MetadataSchemaVersion_IsForcedToV0WhenOtelSemanticsEnabled(string schemaVersion, bool otelSemanticsEnabled, object expected) + { + var source = CreateConfigurationSource( + (ConfigurationKeys.MetadataSchemaVersion, schemaVersion), + (ConfigurationKeys.OpenTelemetry.OtelSemanticsEnabled, otelSemanticsEnabled ? "true" : "false")); + var settings = new TracerSettings(source); + + settings.MetadataSchemaVersion.Should().Be((SchemaVersion)expected); + } + [Theory] [InlineData("key1:value1,key2:value2", new[] { "key1:value1", "key2:value2" })] [InlineData("key1 :value1,invalid,key2: value2", new[] { "key1:value1", "key2:value2" })] diff --git a/tracer/test/Datadog.Trace.Tests/OpenTelemetry/HttpSemanticConventionsTests.cs b/tracer/test/Datadog.Trace.Tests/OpenTelemetry/HttpSemanticConventionsTests.cs new file mode 100644 index 000000000000..fbd9a1d34cf5 --- /dev/null +++ b/tracer/test/Datadog.Trace.Tests/OpenTelemetry/HttpSemanticConventionsTests.cs @@ -0,0 +1,67 @@ +// +// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License. +// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc. +// + +using Datadog.Trace.OpenTelemetry; +using FluentAssertions; +using Xunit; + +namespace Datadog.Trace.Tests.OpenTelemetry; + +public class HttpSemanticConventionsTests +{ + public static TheoryData AllKnownMethods() => + new() { "CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "QUERY", "TRACE" }; + + [Theory] + // The RFC 9110 methods, plus PATCH and QUERY + [InlineData("CONNECT", "CONNECT")] + [InlineData("DELETE", "DELETE")] + [InlineData("GET", "GET")] + [InlineData("HEAD", "HEAD")] + [InlineData("OPTIONS", "OPTIONS")] + [InlineData("PATCH", "PATCH")] + [InlineData("POST", "POST")] + [InlineData("PUT", "PUT")] + [InlineData("QUERY", "QUERY")] + [InlineData("TRACE", "TRACE")] + + // Known methods are converted to their canonical form + [InlineData("get", "GET")] + [InlineData("Post", "POST")] + [InlineData("pAtCh", "PATCH")] + + // Anything else is _OTHER + [InlineData("FOO", "_OTHER")] + [InlineData("GETS", "_OTHER")] + [InlineData("GE", "_OTHER")] + [InlineData("_OTHER", "_OTHER")] + [InlineData(" GET", "_OTHER")] + [InlineData("", "_OTHER")] + [InlineData(null, "_OTHER")] + public void NormalizeRequestMethod_ReturnsKnownMethodOrOther(string httpMethod, string expected) + { + HttpSemanticConventions.NormalizeRequestMethod(httpMethod).Should().Be(expected); + } + + [Theory] + [InlineData("GET", "GET")] + [InlineData("POST", "POST")] + [InlineData("_OTHER", "HTTP")] + public void GetSpanName_UsesHttpForUnknownMethods(string requestMethod, string expected) + { + HttpSemanticConventions.GetSpanName(requestMethod).Should().Be(expected); + } + + // NormalizeRequestMethod holds the known methods twice: an ordinal switch for the fast path, + // and a case-insensitive dictionary for the fallback. Exercising every method in both its + // canonical and its lower-case form covers both, so the two cannot drift apart unnoticed. + [Theory] + [MemberData(nameof(AllKnownMethods))] + public void NormalizeRequestMethod_TakesTheSameDecisionOnBothPaths(string canonicalMethod) + { + HttpSemanticConventions.NormalizeRequestMethod(canonicalMethod).Should().Be(canonicalMethod); + HttpSemanticConventions.NormalizeRequestMethod(canonicalMethod.ToLowerInvariant()).Should().Be(canonicalMethod); + } +} diff --git a/tracer/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs b/tracer/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs index 4357163523f3..d144b9cca4a9 100644 --- a/tracer/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs +++ b/tracer/test/Datadog.Trace.Tests/Tagging/TagsListTests.cs @@ -190,6 +190,72 @@ public void StronglyTypedStatusCodeAliasCanBeClearedByEitherName() tags.GetTag(Tags.HttpResponseStatusCode).Should().BeNull(); } + [Theory] + [InlineData(false, Tags.HttpMethod, Tags.HttpUrl, Tags.OutHost)] + [InlineData(true, Tags.HttpRequestMethod, Tags.UrlFull, Tags.ServerAddress)] + public void HttpClientTagAliasesEnumerateSelectedNames(bool openTelemetrySemanticsEnabled, string methodKey, string urlKey, string hostKey) + { + const string url = "http://localhost/api"; + var tags = new HttpTags { HttpMethod = "GET", HttpUrl = url, Host = "localhost" }; + + var snapshot = GetTagsSnapshot(tags, openTelemetrySemanticsEnabled); + + snapshot.Should().Contain( + [ + new KeyValuePair(methodKey, "GET"), + new KeyValuePair(urlKey, url), + new KeyValuePair(hostKey, "localhost"), + ]); + + // the aliases are mutually exclusive, so only one name is reported for each concept + var aliases = new[] { Tags.HttpMethod, Tags.HttpRequestMethod, Tags.HttpUrl, Tags.UrlFull, Tags.OutHost, Tags.ServerAddress }; + snapshot.Select(x => x.Key) + .Where(aliases.Contains) + .Should() + .BeEquivalentTo(new[] { methodKey, urlKey, hostKey }); + } + + [Fact] + public void HttpClientTagAliasesCanBeReadAndWrittenByEitherName() + { + var tags = new HttpTags(); + + tags.SetTag(Tags.HttpMethod, "GET"); + tags.GetTag(Tags.HttpRequestMethod).Should().Be("GET"); + tags.SetTag(Tags.HttpRequestMethod, "POST"); + tags.GetTag(Tags.HttpMethod).Should().Be("POST"); + tags.HttpMethod.Should().Be("POST"); + + tags.SetTag(Tags.HttpUrl, "http://localhost/1"); + tags.GetTag(Tags.UrlFull).Should().Be("http://localhost/1"); + tags.SetTag(Tags.UrlFull, "http://localhost/2"); + tags.GetTag(Tags.HttpUrl).Should().Be("http://localhost/2"); + tags.HttpUrl.Should().Be("http://localhost/2"); + + tags.SetTag(Tags.OutHost, "host1"); + tags.GetTag(Tags.ServerAddress).Should().Be("host1"); + tags.SetTag(Tags.ServerAddress, "host2"); + tags.GetTag(Tags.OutHost).Should().Be("host2"); + tags.Host.Should().Be("host2"); + } + + [Fact] + public void ServerPortIsOnlyReportedWhenSet() + { + var tags = new HttpTags(); + + GetTagsSnapshot(tags, openTelemetrySemanticsEnabled: true) + .Select(x => x.Key) + .Should() + .NotContain(Tags.ServerPort); + + tags.ServerPort = 8080; + + GetTagsSnapshot(tags, openTelemetrySemanticsEnabled: true) + .Should() + .Contain(new KeyValuePair(Tags.ServerPort, "8080")); + } + [Fact] public void GetTag_GetMetric_ReturnUpdatedValues() { diff --git a/tracer/test/Datadog.Trace.Tests/Util/Http/HttpRequestUtilsTests.cs b/tracer/test/Datadog.Trace.Tests/Util/Http/HttpRequestUtilsTests.cs index 00b9755c5fc8..5f63036cecff 100644 --- a/tracer/test/Datadog.Trace.Tests/Util/Http/HttpRequestUtilsTests.cs +++ b/tracer/test/Datadog.Trace.Tests/Util/Http/HttpRequestUtilsTests.cs @@ -200,6 +200,57 @@ public void GetUrl_ShouldFormatCorrectly(string url, bool useQueryManager, bool result.Should().Be(expected); } + [Theory] + // No credentials, so the value is identical to GetUrl() + [InlineData("http://localhost/path", false, "http://localhost/path")] + [InlineData("https://example.com/api/users", false, "https://example.com/api/users")] + [InlineData("http://localhost:8080/test", false, "http://localhost:8080/test")] + [InlineData("http://localhost/path?key=value", false, "http://localhost/path")] + [InlineData("http://localhost/path?key=value", true, "http://localhost/path?key=value")] + + // Credentials are redacted instead of dropped + [InlineData("http://user:pass@localhost/path", false, "http://REDACTED:REDACTED@localhost/path")] + [InlineData("https://user:pass@example.com/api/users", false, "https://REDACTED:REDACTED@example.com/api/users")] + [InlineData("http://user:pass@localhost:8080/path", false, "http://REDACTED:REDACTED@localhost:8080/path")] + [InlineData("http://user:pass@localhost", false, "http://REDACTED:REDACTED@localhost/")] + + // A username without a password is redacted without inventing a password + [InlineData("http://user@localhost/path", false, "http://REDACTED@localhost/path")] + + // The query string is still truncated and obfuscated + [InlineData("http://user:pass@localhost/path?q=1", false, "http://REDACTED:REDACTED@localhost/path")] + [InlineData("http://user:pass@localhost/path?q=1", true, "http://REDACTED:REDACTED@localhost/path?q=1")] + [InlineData("http://user:pass@localhost/login?password=secret123", true, "http://REDACTED:REDACTED@localhost/login?")] + + // The rows below pin KNOWN DEVIATIONS from the OpenTelemetry semantic conventions for + // "url.full" (https://opentelemetry.io/docs/specs/semconv/registry/attributes/url/), so that + // they are recorded rather than mistaken for compliance. Update them if the behaviour is fixed. + // + // Deviation 1: query scrubbing uses DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP, which replaces the + // match with "" and does not preserve the key (see the "password" row above), whereas + // the spec asks for "sig=REDACTED" with the key preserved. Its default key list also differs + // from ours: of the five keys the spec redacts by default, "sig" and "X-Amz-Credential" are not + // matched at all, so they are reported verbatim. That part of the spec is Development stability, + // and it allows the default list to be fully overridden, which is what our regex effectively does. + [InlineData("http://localhost/path?sig=abc123", true, "http://localhost/path?sig=abc123")] + [InlineData("http://localhost/path?color=blue&sig=abc123", true, "http://localhost/path?color=blue&sig=abc123")] + + // Deviation 2: a known fragment is dropped, whereas the spec says that although it is not + // transmitted over HTTP it SHOULD be included when known. Asserted on both code paths, because + // only the credential path builds the URL by hand instead of delegating to GetUrl(). + [InlineData("http://localhost/path?q=1#SemConv", true, "http://localhost/path?q=1")] + [InlineData("http://user:pass@localhost/path?q=1#SemConv", true, "http://REDACTED:REDACTED@localhost/path?q=1")] + public void GetUrlFull_ShouldRedactCredentials(string url, bool useQueryManager, string expected) + { + var uri = new Uri(url); + var queryStringManager = useQueryManager + ? new QueryStringManager(reportQueryString: true, timeout: 30_000, maxSizeBeforeObfuscation: 50, pattern: TracerSettingsConstants.DefaultObfuscationQueryStringRegex) + : null; + + var result = HttpRequestUtils.GetUrlFull(uri, queryStringManager); + result.Should().Be(expected); + } + [Theory] [InlineData("http://localhost/path", "http://localhost/path")] [InlineData("https://example.com/api/users?id=123", "https://example.com/api/users")] diff --git a/tracer/test/snapshots/WebRequestTests.SubmitsOtlpTraces_DD.verified.txt b/tracer/test/snapshots/WebRequestTests.SubmitsOtlpTraces_DD.verified.txt new file mode 100644 index 000000000000..9c6327a341af --- /dev/null +++ b/tracer/test/snapshots/WebRequestTests.SubmitsOtlpTraces_DD.verified.txt @@ -0,0 +1,10000 @@ +{ + "resourceSpans": [ + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "service.version", + "value": { + "stringValue": "1.0.0" + } + }, + { + "key": "deployment.environment.name", + "value": { + "stringValue": "integration_tests" + } + }, + { + "key": "telemetry.sdk.name", + "value": { + "stringValue": "sdk-name" + } + }, + { + "key": "telemetry.sdk.language", + "value": { + "stringValue": "dotnet" + } + }, + { + "key": "telemetry.sdk.version", + "value": { + "stringValue": "sdk-version" + } + }, + { + "key": "git.commit.sha", + "value": { + "stringValue": "normalized-git-commit-sha" + } + }, + { + "key": "git.repository_url", + "value": { + "stringValue": "https://github.com/DataDog/dd-trace-dotnet" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + } + ] + }, + "scopeSpans": [ + { + "spans": [ + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetRequestStream", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetRequestStream" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetRequestStreamWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetRequestStreamWithDistributedTracingHeaders" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponse", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetResponse" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponse TaskFactoryFromAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetResponse TaskFactoryFromAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponseNotFound", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetResponseNotFound" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponseTeapot", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetResponseTeapot" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponseWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "BeginGetResponseWithDistributedTracingHeaders" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadData", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadData" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadDataAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadDataAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadDataTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadDataTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadFile", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadFile" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadFileAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadFileAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadFileTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadFileTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadString", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadString" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadStringAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadStringAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadStringTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "DownloadStringTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadData" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadData2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFile" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFile2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadString" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadString2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponse" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponse" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "error.msg", + "value": { + "stringValue": "The remote server returned an error: (404) Not Found." + } + }, + { + "key": "error.stack", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (404) Not Found.\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n--- End of stack trace from previous location ---\n at System.Net.WebRequest.GetResponseAsync()" + } + }, + { + "key": "error.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "404" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsyncNotFound" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "error.msg", + "value": { + "stringValue": "The remote server returned an error: (418) ." + } + }, + { + "key": "error.stack", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (418) .\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n--- End of stack trace from previous location ---\n at System.Net.WebRequest.GetResponseAsync()" + } + }, + { + "key": "error.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "418" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsyncTeapot" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "error.msg", + "value": { + "stringValue": "The remote server returned an error: (404) Not Found." + } + }, + { + "key": "error.stack", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (404) Not Found.\n at System.Net.HttpWebRequest.GetResponse()\n at Samples.WebRequest.RequestHelpers.SendWebRequestRequests(Boolean tracingDisabled, String url, String requestContent) in {SolutionDirectory}tracer/test/test-applications/integrations/Samples.WebRequest/RequestHelpers.cs:line 377" + } + }, + { + "key": "error.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "404" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseNotFound" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "error.msg", + "value": { + "stringValue": "The remote server returned an error: (418) ." + } + }, + { + "key": "error.stack", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (418) .\n at System.Net.HttpWebRequest.GetResponse()\n at Samples.WebRequest.RequestHelpers.SendWebRequestRequests(Boolean tracingDisabled, String url, String requestContent) in {SolutionDirectory}tracer/test/test-applications/integrations/Samples.WebRequest/RequestHelpers.cs:line 400" + } + }, + { + "key": "error.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "418" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseTeapot" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponse_NoBuffering" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenRead" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenRead2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?TaskFactoryFromAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GET localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetRequestStream", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetRequestStream" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetRequestStreamWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetRequestStreamWithDistributedTracingHeaders" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponse", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponse" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsyncNotFound", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseAsyncNotFound" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsyncTeapot", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseAsyncTeapot" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsyncWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseAsyncWithDistributedTracingHeaders" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseNotFound", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseNotFound" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseTeapot", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseTeapot" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "GetResponseWithDistributedTracingHeaders" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "OpenRead", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "OpenRead" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "OpenReadAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "OpenReadAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "OpenReadTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "OpenReadTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream_NoBuffering" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseAsync_NoBuffering" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "404" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseNotFoundAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "error.msg", + "value": { + "stringValue": "The HTTP response has status code 418." + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "418" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseTeapotAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream_NoBuffering" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync2" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync3" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST localhost:00000/?/", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "http.url", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync4" + } + }, + { + "key": "operation.name", + "value": { + "stringValue": "http.request" + } + }, + { + "key": "out.host", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "POST localhost:00000/?/" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest-http-client" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "client" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "http" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadData", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadData" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadDataAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadDataAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadDataTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadDataTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadFile", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadFile" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadFileAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadFileAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadFileTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadFileTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadString", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadString" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadStringAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadStringAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadStringTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadStringTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadValues", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadValues" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadValuesAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadValuesAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadValuesTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "UploadValuesTaskAsync" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "WebClient", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "WebClient" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "WebRequest", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "operation.name", + "value": { + "stringValue": "internal" + } + }, + { + "key": "otel.library.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "otel.status_code", + "value": { + "stringValue": "STATUS_CODE_UNSET" + } + }, + { + "key": "otel.trace_id", + "value": { + "stringValue": "normalized-otel-trace-id" + } + }, + { + "key": "resource.name", + "value": { + "stringValue": "WebRequest" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + }, + { + "key": "service.name", + "value": { + "stringValue": "samples.webrequest" + } + }, + { + "key": "span.kind", + "value": { + "stringValue": "internal" + } + }, + { + "key": "span.type", + "value": { + "stringValue": "custom" + } + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tracer/test/snapshots/WebRequestTests.SubmitsOtlpTraces_DD_OtelSemantics.verified.txt b/tracer/test/snapshots/WebRequestTests.SubmitsOtlpTraces_DD_OtelSemantics.verified.txt new file mode 100644 index 000000000000..8b76239ed5d6 --- /dev/null +++ b/tracer/test/snapshots/WebRequestTests.SubmitsOtlpTraces_DD_OtelSemantics.verified.txt @@ -0,0 +1,4300 @@ +{ + "resourceSpans": [ + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "Samples.WebRequest" + } + }, + { + "key": "service.version", + "value": { + "stringValue": "1.0.0" + } + }, + { + "key": "deployment.environment.name", + "value": { + "stringValue": "integration_tests" + } + }, + { + "key": "telemetry.sdk.name", + "value": { + "stringValue": "sdk-name" + } + }, + { + "key": "telemetry.sdk.language", + "value": { + "stringValue": "dotnet" + } + }, + { + "key": "telemetry.sdk.version", + "value": { + "stringValue": "sdk-version" + } + }, + { + "key": "git.commit.sha", + "value": { + "stringValue": "normalized-git-commit-sha" + } + }, + { + "key": "git.repository_url", + "value": { + "stringValue": "https://github.com/DataDog/dd-trace-dotnet" + } + }, + { + "key": "runtime-id", + "value": { + "stringValue": "Guid_1" + } + } + ] + }, + "scopeSpans": [ + { + "spans": [ + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetRequestStream", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetRequestStreamWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponse", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponse TaskFactoryFromAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponseNotFound", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponseTeapot", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "BeginGetResponseWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadData", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadDataAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadDataTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadFile", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadFileAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadFileTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadString", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadStringAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "DownloadStringTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadData" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadData2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadDataTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFile" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFile2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadFileTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadString" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadString2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?DownloadStringTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponse" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponse" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "404" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsyncNotFound" + } + } + ], + "events": [ + { + "timeUnixNano": "0", + "name": "exception", + "attributes": [ + { + "key": "exception.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "exception.message", + "value": { + "stringValue": "The remote server returned an error: (404) Not Found." + } + }, + { + "key": "exception.stacktrace", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (404) Not Found.\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n--- End of stack trace from previous location ---\n at System.Net.WebRequest.GetResponseAsync()" + } + } + ] + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "418" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseAsyncTeapot" + } + } + ], + "events": [ + { + "timeUnixNano": "0", + "name": "exception", + "attributes": [ + { + "key": "exception.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "exception.message", + "value": { + "stringValue": "The remote server returned an error: (418) ." + } + }, + { + "key": "exception.stacktrace", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (418) .\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n--- End of stack trace from previous location ---\n at System.Net.WebRequest.GetResponseAsync()" + } + } + ] + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "404" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseNotFound" + } + } + ], + "events": [ + { + "timeUnixNano": "0", + "name": "exception", + "attributes": [ + { + "key": "exception.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "exception.message", + "value": { + "stringValue": "The remote server returned an error: (404) Not Found." + } + }, + { + "key": "exception.stacktrace", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (404) Not Found.\n at System.Net.HttpWebRequest.GetResponse()\n at Samples.WebRequest.RequestHelpers.SendWebRequestRequests(Boolean tracingDisabled, String url, String requestContent) in {SolutionDirectory}tracer/test/test-applications/integrations/Samples.WebRequest/RequestHelpers.cs:line 377" + } + } + ] + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "418" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponseTeapot" + } + } + ], + "events": [ + { + "timeUnixNano": "0", + "name": "exception", + "attributes": [ + { + "key": "exception.type", + "value": { + "stringValue": "System.Net.WebException" + } + }, + { + "key": "exception.message", + "value": { + "stringValue": "The remote server returned an error: (418) ." + } + }, + { + "key": "exception.stacktrace", + "value": { + "stringValue": "System.Net.WebException: The remote server returned an error: (418) .\n at System.Net.HttpWebRequest.GetResponse()\n at Samples.WebRequest.RequestHelpers.SendWebRequestRequests(Boolean tracingDisabled, String url, String requestContent) in {SolutionDirectory}tracer/test/test-applications/integrations/Samples.WebRequest/RequestHelpers.cs:line 400" + } + } + ] + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetResponse_NoBuffering" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenRead" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenRead2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?OpenReadTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GET", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "GET" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?TaskFactoryFromAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetRequestStream", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetRequestStreamWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponse", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsyncNotFound", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsyncTeapot", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseAsyncWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseNotFound", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseTeapot", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "GetResponseWithDistributedTracingHeaders", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "OpenRead", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "OpenReadAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "OpenReadTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetRequestStream_NoBuffering" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "component", + "value": { + "stringValue": "HttpMessageHandler" + } + }, + { + "key": "http-client-handler-type", + "value": { + "stringValue": "System.Net.Http.SocketsHttpHandler" + } + }, + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseAsync_NoBuffering" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "404" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseNotFoundAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "418" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?BeginGetResponseTeapotAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?GetRequestStream_NoBuffering" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadData4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadDataTaskAsync4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFile4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadFileTaskAsync4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadString4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadStringTaskAsync4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValues4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync2" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync3" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "POST", + "kind": 3, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0", + "attributes": [ + { + "key": "http.request.method", + "value": { + "stringValue": "POST" + } + }, + { + "key": "http.response.status_code", + "value": { + "intValue": "200" + } + }, + { + "key": "server.address", + "value": { + "stringValue": "localhost" + } + }, + { + "key": "server.port", + "value": { + "intValue": "8080" + } + }, + { + "key": "url.full", + "value": { + "stringValue": "http://localhost:00000/Guid_2/?UploadValuesTaskAsync4" + } + } + ] + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadData", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadDataAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadDataTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadFile", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadFileAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadFileTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadString", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadStringAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadStringTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadValues", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadValuesAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "parentSpanId": "normalized-parent-span-id", + "name": "UploadValuesTaskAsync", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "WebClient", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + }, + { + "traceId": "normalized-trace-id", + "spanId": "normalized-span-id", + "name": "WebRequest", + "kind": 1, + "startTimeUnixNano": "0", + "endTimeUnixNano": "0" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tracer/test/snapshots/WebRequestTests_otel.verified.txt b/tracer/test/snapshots/WebRequestTests_otel.verified.txt new file mode 100644 index 000000000000..67ee7d7e7fbc --- /dev/null +++ b/tracer/test/snapshots/WebRequestTests_otel.verified.txt @@ -0,0 +1,3131 @@ +[ + { + TraceId: Id_1, + SpanId: Id_2, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetRequestStream, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + process_id: 0, + _dd.top_level: 1.0, + _dd.tracer_kr: 1.0, + _sampling_priority_v1: 1.0 + } + }, + { + TraceId: Id_3, + SpanId: Id_4, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetRequestStream, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + process_id: 0, + _dd.top_level: 1.0, + _dd.tracer_kr: 1.0, + _sampling_priority_v1: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_6, + Name: internal, + Resource: WebClient, + Service: Samples.WebRequest, + Type: custom, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + runtime-id: Guid_1, + span.kind: internal, + version: 1.0.0 + }, + Metrics: { + process_id: 0, + _dd.top_level: 1.0, + _dd.tracer_kr: 1.0, + _sampling_priority_v1: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_7, + Name: internal, + Resource: DownloadData, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_8, + Name: internal, + Resource: DownloadDataAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_9, + Name: internal, + Resource: DownloadDataTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_10, + Name: internal, + Resource: DownloadFile, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_11, + Name: internal, + Resource: DownloadFileAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_12, + Name: internal, + Resource: DownloadFileTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_13, + Name: internal, + Resource: DownloadString, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_14, + Name: internal, + Resource: DownloadStringAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_15, + Name: internal, + Resource: DownloadStringTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_16, + Name: internal, + Resource: OpenRead, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_17, + Name: internal, + Resource: OpenReadAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_18, + Name: internal, + Resource: OpenReadTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_19, + Name: internal, + Resource: UploadData, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_20, + Name: internal, + Resource: UploadDataAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_21, + Name: internal, + Resource: UploadDataTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_22, + Name: internal, + Resource: UploadFile, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_23, + Name: internal, + Resource: UploadFileAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_24, + Name: internal, + Resource: UploadFileTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_25, + Name: internal, + Resource: UploadString, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_26, + Name: internal, + Resource: UploadStringAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_27, + Name: internal, + Resource: UploadStringTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_28, + Name: internal, + Resource: UploadValues, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_29, + Name: internal, + Resource: UploadValuesAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_30, + Name: internal, + Resource: UploadValuesTaskAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_6, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_31, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_7, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadData, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_32, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_7, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadData2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_33, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_8, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadDataAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_34, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_8, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadDataAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_35, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_9, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadDataTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_36, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_9, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadDataTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_37, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_10, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadFile, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_38, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_10, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadFile2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_39, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_11, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadFileAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_40, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_11, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadFileAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_41, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_12, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadFileTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_42, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_12, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadFileTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_43, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_13, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadString, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_44, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_13, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadString2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_45, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_14, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadStringAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_46, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_14, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadStringAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_47, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_15, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadStringTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_48, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_15, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?DownloadStringTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_49, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_16, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?OpenRead, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_50, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_16, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?OpenRead2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_51, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_17, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?OpenReadAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_52, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_17, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?OpenReadAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_53, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_18, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?OpenReadTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_54, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_18, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?OpenReadTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_55, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_19, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadData, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_56, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_19, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadData2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_57, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_19, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadData3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_58, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_19, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadData4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_59, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_20, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_60, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_20, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_61, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_20, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_62, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_21, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_63, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_21, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_64, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_21, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataTaskAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_65, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_21, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadDataTaskAsync4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_66, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_22, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFile, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_67, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_22, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFile2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_68, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_22, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFile3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_69, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_22, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFile4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_70, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_23, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_71, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_23, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_72, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_23, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_73, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_24, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_74, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_24, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_75, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_24, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileTaskAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_76, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_24, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadFileTaskAsync4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_77, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_25, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadString, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_78, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_25, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadString2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_79, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_25, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadString3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_80, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_25, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadString4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_81, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_26, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_82, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_26, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_83, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_26, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_84, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_27, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_85, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_27, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_86, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_27, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringTaskAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_87, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_27, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadStringTaskAsync4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_88, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_28, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValues, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_89, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_28, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValues2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_90, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_28, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValues3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_91, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_28, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValues4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_92, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_29, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_93, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_29, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_94, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_29, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_95, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_30, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesTaskAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_96, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_30, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesTaskAsync2, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_97, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_30, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesTaskAsync3, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_5, + SpanId: Id_98, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_30, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?UploadValuesTaskAsync4, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_100, + Name: internal, + Resource: WebRequest, + Service: Samples.WebRequest, + Type: custom, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + runtime-id: Guid_1, + span.kind: internal, + version: 1.0.0 + }, + Metrics: { + process_id: 0, + _dd.top_level: 1.0, + _dd.tracer_kr: 1.0, + _sampling_priority_v1: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_101, + Name: internal, + Resource: GetResponse, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_102, + Name: internal, + Resource: GetResponseWithDistributedTracingHeaders, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_103, + Name: internal, + Resource: GetResponseNotFound, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_104, + Name: internal, + Resource: GetResponseTeapot, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_105, + Name: internal, + Resource: GetResponseAsyncWithDistributedTracingHeaders, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_106, + Name: internal, + Resource: GetResponseAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_107, + Name: internal, + Resource: GetResponseAsyncNotFound, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_108, + Name: internal, + Resource: GetResponseAsyncTeapot, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_109, + Name: internal, + Resource: GetRequestStream, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_110, + Name: internal, + Resource: GetRequestStreamWithDistributedTracingHeaders, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_111, + Name: internal, + Resource: BeginGetRequestStream, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_112, + Name: internal, + Resource: BeginGetRequestStreamWithDistributedTracingHeaders, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_113, + Name: internal, + Resource: BeginGetResponse, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_114, + Name: internal, + Resource: BeginGetResponseWithDistributedTracingHeaders, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_115, + Name: internal, + Resource: BeginGetResponseNotFound, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_116, + Name: internal, + Resource: BeginGetResponseTeapot, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_117, + Name: internal, + Resource: BeginGetResponse TaskFactoryFromAsync, + Service: Samples.WebRequest, + Type: custom, + ParentId: Id_100, + Tags: { + env: integration_tests, + language: dotnet, + otel.status_code: STATUS_CODE_UNSET, + span.kind: internal, + version: 1.0.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_118, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_101, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponse, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_119, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_101, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponse_NoBuffering, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_120, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_102, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponse, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_121, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_103, + Tags: { + component: WebRequest, + env: integration_tests, + events: [{"name":"exception","time_unix_nano":,"attributes":{"exception.type":"System.Net.WebException","exception.message":"The remote server returned an error: (404) Not Found.","exception.stacktrace":"System.Net.WebException: The remote server returned an error: (404) Not Found.\n at System.Net.HttpWebRequest.GetResponse()\n at Samples.WebRequest.RequestHelpers.SendWebRequestRequests(Boolean tracingDisabled, String url, String requestContent) in {SolutionDirectory}tracer/test/test-applications/integrations/Samples.WebRequest/RequestHelpers.cs:line 377"}}], + http.request.method: GET, + http.response.status_code: 404, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponseNotFound, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_122, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_104, + Error: 1, + Tags: { + component: WebRequest, + env: integration_tests, + error.msg: The HTTP response has status code 418., + events: [{"name":"exception","time_unix_nano":,"attributes":{"exception.type":"System.Net.WebException","exception.message":"The remote server returned an error: (418) .","exception.stacktrace":"System.Net.WebException: The remote server returned an error: (418) .\n at System.Net.HttpWebRequest.GetResponse()\n at Samples.WebRequest.RequestHelpers.SendWebRequestRequests(Boolean tracingDisabled, String url, String requestContent) in {SolutionDirectory}tracer/test/test-applications/integrations/Samples.WebRequest/RequestHelpers.cs:line 400"}}], + http.request.method: GET, + http.response.status_code: 418, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponseTeapot, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_123, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_105, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponseAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_124, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_106, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponseAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_125, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_107, + Tags: { + component: WebRequest, + env: integration_tests, + events: [{"name":"exception","time_unix_nano":,"attributes":{"exception.type":"System.Net.WebException","exception.message":"The remote server returned an error: (404) Not Found.","exception.stacktrace":"System.Net.WebException: The remote server returned an error: (404) Not Found.\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n--- End of stack trace from previous location ---\n at System.Net.WebRequest.GetResponseAsync()"}}], + http.request.method: GET, + http.response.status_code: 404, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponseAsyncNotFound, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_126, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_108, + Error: 1, + Tags: { + component: WebRequest, + env: integration_tests, + error.msg: The HTTP response has status code 418., + events: [{"name":"exception","time_unix_nano":,"attributes":{"exception.type":"System.Net.WebException","exception.message":"The remote server returned an error: (418) .","exception.stacktrace":"System.Net.WebException: The remote server returned an error: (418) .\n at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\n at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n--- End of stack trace from previous location ---\n at System.Net.WebRequest.GetResponseAsync()"}}], + http.request.method: GET, + http.response.status_code: 418, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetResponseAsyncTeapot, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_127, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_109, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetRequestStream, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_128, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_109, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetRequestStream_NoBuffering, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_129, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_110, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?GetRequestStream, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_130, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_111, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetRequestStream, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_131, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_111, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetRequestStream_NoBuffering, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_132, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_112, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetRequestStream, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_133, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_113, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetResponseAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_134, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_113, + Tags: { + component: WebRequest, + env: integration_tests, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetResponseAsync_NoBuffering, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_135, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_114, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetResponseAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_136, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_115, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 404, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetResponseNotFoundAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_137, + Name: http.request, + Resource: POST, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_116, + Error: 1, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + error.msg: The HTTP response has status code 418., + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: POST, + http.response.status_code: 418, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?BeginGetResponseTeapotAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + }, + { + TraceId: Id_99, + SpanId: Id_138, + Name: http.request, + Resource: GET, + Service: Samples.WebRequest-http-client, + Type: http, + ParentId: Id_117, + Tags: { + component: HttpMessageHandler, + env: integration_tests, + http-client-handler-type: System.Net.Http.SocketsHttpHandler, + http.request.method: GET, + http.response.status_code: 200, + language: dotnet, + runtime-id: Guid_1, + server.address: localhost, + server.port: 8080, + span.kind: client, + url.full: http://localhost:00000/Guid_2/?TaskFactoryFromAsync, + _dd.base_service: Samples.WebRequest, + _dd.svc_src: http-client + }, + Metrics: { + _dd.top_level: 1.0 + } + } +] \ No newline at end of file