diff --git a/tracer/missing-nullability-files.csv b/tracer/missing-nullability-files.csv
index 5aa540291a4f..74759b858cbe 100644
--- a/tracer/missing-nullability-files.csv
+++ b/tracer/missing-nullability-files.csv
@@ -242,8 +242,6 @@ src/Datadog.Trace/Agent/TraceSamplers/ErrorSampler.cs
src/Datadog.Trace/Agent/TraceSamplers/ITraceChunkSampler.cs
src/Datadog.Trace/Agent/TraceSamplers/PrioritySampler.cs
src/Datadog.Trace/Agent/TraceSamplers/RareSampler.cs
-src/Datadog.Trace/Agent/Transports/ApiWebRequest.cs
-src/Datadog.Trace/Agent/Transports/ApiWebRequestFactory.cs
src/Datadog.Trace/Agent/Transports/HttpClientRequest.cs
src/Datadog.Trace/Agent/Transports/HttpClientRequestFactory.cs
src/Datadog.Trace/Agent/Transports/HttpStreamRequest.cs
diff --git a/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml b/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml
index b2c71c22161e..e40b5114dbad 100644
--- a/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml
+++ b/tracer/src/Datadog.Trace.Trimming/build/Datadog.Trace.Trimming.xml
@@ -438,7 +438,6 @@
-
diff --git a/tracer/src/Datadog.Trace/Agent/AgentTransportStrategy.cs b/tracer/src/Datadog.Trace/Agent/AgentTransportStrategy.cs
index f512fc08dda1..1341ccd32d52 100644
--- a/tracer/src/Datadog.Trace/Agent/AgentTransportStrategy.cs
+++ b/tracer/src/Datadog.Trace/Agent/AgentTransportStrategy.cs
@@ -72,13 +72,8 @@ public static IApiRequestFactory Get(
#endif
case TracesTransportType.Default:
default:
-#if NETCOREAPP
Log.Information("Using " + nameof(HttpClientRequestFactory) + " for {ProductName} transport.", productName);
return new HttpClientRequestFactory(getBaseEndpoint(settings.AgentUri), defaultAgentHeaders, timeout: tcpTimeout);
-#else
- Log.Information("Using " + nameof(ApiWebRequestFactory) + " for {ProductName} transport.", productName);
- return new ApiWebRequestFactory(getBaseEndpoint(settings.AgentUri), defaultAgentHeaders, timeout: tcpTimeout);
-#endif
}
}
}
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/ApiWebRequest.cs b/tracer/src/Datadog.Trace/Agent/Transports/ApiWebRequest.cs
deleted file mode 100644
index 8142af44ccb6..000000000000
--- a/tracer/src/Datadog.Trace/Agent/Transports/ApiWebRequest.cs
+++ /dev/null
@@ -1,191 +0,0 @@
-//
-// 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.IO;
-using System.IO.Compression;
-using System.Net;
-using System.Text;
-using System.Threading.Tasks;
-using Datadog.Trace.Logging;
-using Datadog.Trace.Util;
-using static Datadog.Trace.HttpOverStreams.DatadogHttpValues;
-
-namespace Datadog.Trace.Agent.Transports
-{
- internal class ApiWebRequest : IApiRequest
- {
- private const string BoundarySeparator = $"{CrLf}--{Boundary}{CrLf}";
- private const string BoundaryTrailer = $"{CrLf}--{Boundary}--{CrLf}";
-
- private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor();
- private readonly HttpWebRequest _request;
-
- private byte[] _boundarySeparatorInBytes;
- private byte[] _boundaryTrailerInBytes;
-
- public ApiWebRequest(HttpWebRequest request)
- {
- _request = request;
- }
-
- public void AddHeader(string name, string value)
- {
- _request.Headers.Add(name, value);
- }
-
- public Task GetAsync()
- {
- ResetRequest(method: "GET", contentType: null, contentEncoding: null);
-
- return FinishAndGetResponse();
- }
-
- public Task PostAsync(ArraySegment bytes, string contentType)
- => PostAsync(bytes, contentType, null);
-
- public async Task PostAsync(ArraySegment bytes, string contentType, string contentEncoding)
- {
- ResetRequest(method: "POST", contentType, contentEncoding);
-
- using (var requestStream = await _request.GetRequestStreamAsync().ConfigureAwait(false))
- {
- await requestStream.WriteAsync(bytes.Array, bytes.Offset, bytes.Count).ConfigureAwait(false);
- }
-
- return await FinishAndGetResponse().ConfigureAwait(false);
- }
-
- public async Task PostAsync(Func writeToRequestStream, string contentType, string contentEncoding, string multipartBoundary)
- {
- ResetRequest(method: "POST", ContentTypeHelper.GetContentType(contentType, multipartBoundary), contentEncoding);
-
- using (var requestStream = await _request.GetRequestStreamAsync().ConfigureAwait(false))
- {
- await writeToRequestStream(requestStream).ConfigureAwait(false);
- }
-
- return await FinishAndGetResponse().ConfigureAwait(false);
- }
-
- ///
- /// Send a Post request using multipart form data.
- /// WARNING: Name and FileName of each MultipartFormItem instance must be ASCII encoding compatible.
- ///
- /// Multipart form data items
- /// Multipart compression
- /// Task with the response
- public async Task PostAsync(MultipartFormItem[] items, MultipartCompression multipartCompression = MultipartCompression.None)
- {
- if (items is null)
- {
- ThrowHelper.ThrowArgumentNullException(nameof(items));
- }
-
- Log.Debug("Sending multipart form request with {Count} items.", items.Length);
-
- ResetRequest(method: "POST", contentType: "multipart/form-data; boundary=" + Boundary, contentEncoding: multipartCompression == MultipartCompression.GZip ? "gzip" : null);
- using (var reqStream = await _request.GetRequestStreamAsync().ConfigureAwait(false))
- {
- if (multipartCompression == MultipartCompression.GZip)
- {
- Log.Debug("Using MultipartCompression.GZip");
- using var gzip = new GZipStream(reqStream, CompressionMode.Compress, leaveOpen: true);
- await WriteToStreamAsync(items, gzip).ConfigureAwait(false);
- await gzip.FlushAsync().ConfigureAwait(false);
- Log.Debug("Compressing multipart payload...");
- }
- else
- {
- await WriteToStreamAsync(items, reqStream).ConfigureAwait(false);
- }
- }
-
- return await FinishAndGetResponse().ConfigureAwait(false);
-
- async Task WriteToStreamAsync(MultipartFormItem[] multipartItems, Stream requestStream)
- {
- // Write form request using the boundary
- var boundaryBytes = _boundarySeparatorInBytes ??= Encoding.ASCII.GetBytes(BoundarySeparator);
- var trailerBytes = _boundaryTrailerInBytes ??= Encoding.ASCII.GetBytes(BoundaryTrailer);
-
- // Write each MultipartFormItem
- var itemsWritten = 0;
- foreach (var item in multipartItems)
- {
- if (!item.IsValid(Log))
- {
- continue;
- }
-
- var headerBytes = Encoding.ASCII.GetBytes(
- item.FileName is not null
- ? $"Content-Type: {item.ContentType}\r\nContent-Disposition: form-data; name=\"{item.Name}\"; filename=\"{item.FileName}\"\r\n\r\n"
- : $"Content-Type: {item.ContentType}\r\nContent-Disposition: form-data; name=\"{item.Name}\"\r\n\r\n");
-
- if (itemsWritten == 0)
- {
- // If we are writing the first item, we skip the initial `\r\n` in the array
- await requestStream.WriteAsync(boundaryBytes, 2, boundaryBytes.Length - 2).ConfigureAwait(false);
- }
- else
- {
- await requestStream.WriteAsync(boundaryBytes, 0, boundaryBytes.Length).ConfigureAwait(false);
- }
-
- await requestStream.WriteAsync(headerBytes, 0, headerBytes.Length).ConfigureAwait(false);
- if (item.ContentInBytes is { } arraySegment)
- {
- Log.Debug("Adding to Multipart Byte Array | Name: {Name} | FileName: {FileName} | ContentType: {ContentType}", item.Name, item.FileName, item.ContentType);
- await requestStream.WriteAsync(arraySegment.Array, arraySegment.Offset, arraySegment.Count).ConfigureAwait(false);
- }
- else if (item.ContentInStream is { } stream)
- {
- Log.Debug("Adding to Multipart Stream | Name: {Name} | FileName: {FileName} | ContentType: {ContentType}", item.Name, item.FileName, item.ContentType);
- await stream.CopyToAsync(requestStream).ConfigureAwait(false);
- }
-
- itemsWritten++;
- }
-
- if (itemsWritten == 0)
- {
- await requestStream.WriteAsync(boundaryBytes, 2, boundaryBytes.Length - 2).ConfigureAwait(false);
- }
-
- await requestStream.WriteAsync(trailerBytes, 0, trailerBytes.Length).ConfigureAwait(false);
- }
- }
-
- private void ResetRequest(string method, string contentType, string contentEncoding)
- {
- _request.Method = method;
- _request.ContentType = string.IsNullOrEmpty(contentType) ? null : contentType;
- if (string.IsNullOrEmpty(contentEncoding))
- {
- _request.Headers.Remove(HttpRequestHeader.ContentEncoding);
- }
- else
- {
- _request.Headers.Set(HttpRequestHeader.ContentEncoding, contentEncoding);
- }
- }
-
- private async Task FinishAndGetResponse()
- {
- try
- {
- var httpWebResponse = (HttpWebResponse)await _request.GetResponseAsync().ConfigureAwait(false);
- return new ApiWebResponse(httpWebResponse);
- }
- catch (WebException exception)
- when (exception.Status == WebExceptionStatus.ProtocolError && exception.Response != null)
- {
- // If the exception is caused by an error status code, ignore it and let the caller handle the result
- return new ApiWebResponse((HttpWebResponse)exception.Response);
- }
- }
- }
-}
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/ApiWebRequestFactory.cs b/tracer/src/Datadog.Trace/Agent/Transports/ApiWebRequestFactory.cs
deleted file mode 100644
index 55cfb933d0f0..000000000000
--- a/tracer/src/Datadog.Trace/Agent/Transports/ApiWebRequestFactory.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// 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.Net;
-using Datadog.Trace.Util;
-
-#pragma warning disable CS0618 // WebRequest, HttpWebRequest, ServicePoint, and WebClient are obsolete. Use HttpClient instead.
-
-namespace Datadog.Trace.Agent.Transports
-{
- internal class ApiWebRequestFactory : IApiRequestFactory
- {
- private readonly KeyValuePair[] _defaultHeaders;
- private readonly Uri _baseEndpoint;
- private WebProxy _proxy;
- private NetworkCredential _credential;
- private TimeSpan? _timeout;
-
- public ApiWebRequestFactory(Uri baseEndpoint, KeyValuePair[] defaultHeaders, TimeSpan? timeout = null)
- {
- _baseEndpoint = baseEndpoint;
- _defaultHeaders = defaultHeaders;
- _timeout = timeout;
- }
-
- public string Info(Uri endpoint)
- {
- return endpoint.ToString();
- }
-
- public Uri GetEndpoint(string relativePath) => UriHelpers.Combine(_baseEndpoint, relativePath);
-
- public IApiRequest Create(Uri endpoint)
- {
- var request = WebRequest.CreateHttp(endpoint);
- if (_proxy is not null)
- {
- request.Proxy = _proxy;
- }
-
- if (_credential is not null)
- {
- request.Credentials = _credential;
- }
-
- if (_timeout.HasValue)
- {
- request.Timeout = (int)_timeout.Value.TotalMilliseconds;
- }
-
- foreach (var pair in _defaultHeaders)
- {
- request.Headers.Add(pair.Key, pair.Value);
- }
-
- return new ApiWebRequest(request);
- }
-
- public void SetProxy(WebProxy proxy, NetworkCredential credential)
- {
- _proxy = proxy;
- _credential = credential;
- }
- }
-}
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/ApiWebResponse.cs b/tracer/src/Datadog.Trace/Agent/Transports/ApiWebResponse.cs
deleted file mode 100644
index ced78e83c14e..000000000000
--- a/tracer/src/Datadog.Trace/Agent/Transports/ApiWebResponse.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// 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.IO;
-using System.Net;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Datadog.Trace.Agent.Transports
-{
- internal class ApiWebResponse : IApiResponse, IDisposable
- {
- private readonly HttpWebResponse _response;
-
- public ApiWebResponse(HttpWebResponse response)
- {
- _response = response;
- }
-
- public int StatusCode => (int)_response.StatusCode;
-
- public long ContentLength => _response.ContentLength;
-
- public string? ContentTypeHeader => _response.ContentType;
-
- public string? ContentEncodingHeader => _response.ContentEncoding;
-
- public string? GetHeader(string headerName) => _response.Headers[headerName];
-
- public Encoding GetCharsetEncoding() => ApiResponseExtensions.GetCharsetEncoding(ContentTypeHeader);
-
- public ContentEncodingType GetContentEncodingType() => ApiResponseExtensions.GetContentEncodingType(ContentEncodingHeader);
-
- public Task GetStreamAsync()
- {
- return Task.FromResult(_response.GetResponseStream());
- }
-
- public void Dispose()
- {
- _response?.Dispose();
- }
- }
-}
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/GzipCompressedContent.cs b/tracer/src/Datadog.Trace/Agent/Transports/GzipCompressedContent.cs
index bb6d237de486..2d6b264ca832 100644
--- a/tracer/src/Datadog.Trace/Agent/Transports/GzipCompressedContent.cs
+++ b/tracer/src/Datadog.Trace/Agent/Transports/GzipCompressedContent.cs
@@ -5,7 +5,6 @@
#nullable enable
-#if NETCOREAPP
using System.IO;
using System.IO.Compression;
using System.Net;
@@ -47,5 +46,3 @@ protected override bool TryComputeLength(out long length)
return false;
}
}
-
-#endif
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequest.cs b/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequest.cs
index e5f5d5ecb6a4..0780da61a7ab 100644
--- a/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequest.cs
+++ b/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequest.cs
@@ -3,13 +3,11 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
//
-#if NETCOREAPP
using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
-using Datadog.Trace.AppSec;
using Datadog.Trace.HttpOverStreams;
using Datadog.Trace.Logging;
@@ -152,4 +150,3 @@ public async Task PostAsync(MultipartFormItem[] items, MultipartCo
}
}
}
-#endif
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequestFactory.cs b/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequestFactory.cs
index ec4f55694fe2..c96edf47f5f2 100644
--- a/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequestFactory.cs
+++ b/tracer/src/Datadog.Trace/Agent/Transports/HttpClientRequestFactory.cs
@@ -3,7 +3,6 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
//
-#if NETCOREAPP
using System;
using System.Collections.Generic;
using System.Net;
@@ -62,4 +61,3 @@ public void SetProxy(WebProxy proxy, NetworkCredential credential)
}
}
}
-#endif
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/HttpClientResponse.cs b/tracer/src/Datadog.Trace/Agent/Transports/HttpClientResponse.cs
index b47f4655c340..d6c09ba36b6e 100644
--- a/tracer/src/Datadog.Trace/Agent/Transports/HttpClientResponse.cs
+++ b/tracer/src/Datadog.Trace/Agent/Transports/HttpClientResponse.cs
@@ -5,7 +5,7 @@
#nullable enable
-#if NETCOREAPP
+using System;
using System.IO;
using System.Linq;
using System.Net.Http;
@@ -28,7 +28,11 @@ public HttpClientResponse(HttpResponseMessage response)
public long ContentLength => _response.Content.Headers.ContentLength ?? -1;
+#if NETCOREAPP
public string? ContentEncodingHeader => string.Join(',', _response.Content.Headers.ContentEncoding);
+#else
+ public string? ContentEncodingHeader => string.Join(",", _response.Content.Headers.ContentEncoding);
+#endif
public string? ContentTypeHeader => _response.Content.Headers.ContentType?.ToString();
@@ -43,12 +47,12 @@ public ContentEncodingType GetContentEncodingType() =>
public Encoding GetCharsetEncoding()
{
var charset = _response.Content.Headers.ContentType?.CharSet;
- if (string.IsNullOrEmpty(charset))
+ if (StringUtil.IsNullOrEmpty(charset))
{
return EncodingHelpers.Utf8NoBom;
}
- if (EncodingHelpers.TryGetWellKnownCharset(charset, out var wellKnown))
+ if (EncodingHelpers.TryGetWellKnownCharset(charset.AsSpan(), out var wellKnown))
{
return wellKnown;
}
@@ -89,4 +93,3 @@ public Task GetStreamAsync()
}
}
}
-#endif
diff --git a/tracer/src/Datadog.Trace/Agent/Transports/PushStreamContent.cs b/tracer/src/Datadog.Trace/Agent/Transports/PushStreamContent.cs
index deef98c05867..762a94528779 100644
--- a/tracer/src/Datadog.Trace/Agent/Transports/PushStreamContent.cs
+++ b/tracer/src/Datadog.Trace/Agent/Transports/PushStreamContent.cs
@@ -11,8 +11,6 @@
#nullable enable
-#if NETCOREAPP
-
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
@@ -72,4 +70,3 @@ protected override bool TryComputeLength(out long length)
return false;
}
}
-#endif
diff --git a/tracer/src/Datadog.Trace/Ci/TestOptimizationTracerManagement.cs b/tracer/src/Datadog.Trace/Ci/TestOptimizationTracerManagement.cs
index 3a509250d10b..2d711d5a46ba 100644
--- a/tracer/src/Datadog.Trace/Ci/TestOptimizationTracerManagement.cs
+++ b/tracer/src/Datadog.Trace/Ci/TestOptimizationTracerManagement.cs
@@ -172,17 +172,13 @@ public IApiRequestFactory GetRequestFactory(TracerSettings tracerSettings, TimeS
}
else
{
-#if NETCOREAPP
Log.Information("TestOptimizationTracerManagement: Using {FactoryType} for trace transport.", nameof(HttpClientRequestFactory));
factory = new HttpClientRequestFactory(
exporterSettings.AgentUri,
AgentHttpHeaderNames.DefaultHeaders,
handler: new System.Net.Http.HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate, },
timeout: timeout);
-#else
- Log.Information("TestOptimizationTracerManagement: Using {FactoryType} for trace transport.", nameof(ApiWebRequestFactory));
- factory = new ApiWebRequestFactory(tracerSettings.Exporter.AgentUri, AgentHttpHeaderNames.DefaultHeaders, timeout: timeout);
-#endif
+
if (!string.IsNullOrWhiteSpace(_settings.ProxyHttps))
{
var proxyHttpsUriBuilder = new UriBuilder(_settings.ProxyHttps!);
diff --git a/tracer/src/Datadog.Trace/Datadog.Trace.csproj b/tracer/src/Datadog.Trace/Datadog.Trace.csproj
index f7c0749e6db7..496d5bb13a22 100644
--- a/tracer/src/Datadog.Trace/Datadog.Trace.csproj
+++ b/tracer/src/Datadog.Trace/Datadog.Trace.csproj
@@ -49,6 +49,7 @@
+
diff --git a/tracer/src/Datadog.Trace/Debugger/DebuggerTransportStrategy.cs b/tracer/src/Datadog.Trace/Debugger/DebuggerTransportStrategy.cs
index 866506de2413..233a5f6a86db 100644
--- a/tracer/src/Datadog.Trace/Debugger/DebuggerTransportStrategy.cs
+++ b/tracer/src/Datadog.Trace/Debugger/DebuggerTransportStrategy.cs
@@ -17,13 +17,8 @@ internal static class DebuggerTransportStrategy
public static IApiRequestFactory Get(Uri baseEndpoint)
{
-#if NETCOREAPP
Log.Information("Using {FactoryType} for debugger transport.", nameof(HttpClientRequestFactory));
return new HttpClientRequestFactory(baseEndpoint, AgentHttpHeaderNames.DefaultHeaders);
-#else
- Log.Information("Using {FactoryType} for debugger transport.", nameof(ApiWebRequestFactory));
- return new ApiWebRequestFactory(baseEndpoint, AgentHttpHeaderNames.DefaultHeaders);
-#endif
}
}
}
diff --git a/tracer/src/Datadog.Trace/Logging/DirectSubmission/LogsTransportStrategy.cs b/tracer/src/Datadog.Trace/Logging/DirectSubmission/LogsTransportStrategy.cs
index dece2330a165..a390257ce061 100644
--- a/tracer/src/Datadog.Trace/Logging/DirectSubmission/LogsTransportStrategy.cs
+++ b/tracer/src/Datadog.Trace/Logging/DirectSubmission/LogsTransportStrategy.cs
@@ -20,13 +20,8 @@ public static IApiRequestFactory Get(DirectLogSubmissionSettings settings)
// Still quite a long time, but we could be sending a lot of data
var timeout = TimeSpan.FromSeconds(15);
-#if NETCOREAPP
Log.Information("Using {FactoryType} for log submission transport.", nameof(HttpClientRequestFactory));
return new HttpClientRequestFactory(settings.IntakeUrl, LogsApiHeaderNames.DefaultHeaders, timeout: timeout);
-#else
- Log.Information("Using {FactoryType} for log submission transport.", nameof(ApiWebRequestFactory));
- return new ApiWebRequestFactory(settings.IntakeUrl, LogsApiHeaderNames.DefaultHeaders, timeout: timeout);
-#endif
}
}
}
diff --git a/tracer/src/Datadog.Trace/Telemetry/Transports/TelemetryTransportStrategy.cs b/tracer/src/Datadog.Trace/Telemetry/Transports/TelemetryTransportStrategy.cs
index 252922ba24c4..50eaec4904ae 100644
--- a/tracer/src/Datadog.Trace/Telemetry/Transports/TelemetryTransportStrategy.cs
+++ b/tracer/src/Datadog.Trace/Telemetry/Transports/TelemetryTransportStrategy.cs
@@ -20,13 +20,8 @@ internal static class TelemetryTransportStrategy
public static IApiRequestFactory GetDirectIntakeFactory(TelemetrySettings.AgentlessSettings settings)
{
-#if NETCOREAPP
Log.Information("Using {FactoryType} for telemetry transport direct to intake.", nameof(HttpClientRequestFactory));
return new HttpClientRequestFactory(settings.AgentlessUri, TelemetryHttpHeaderNames.GetDefaultIntakeHeaders(settings), timeout: Timeout);
-#else
- Log.Information("Using {FactoryType} for telemetry transport direct to intake.", nameof(ApiWebRequestFactory));
- return new ApiWebRequestFactory(settings.AgentlessUri, TelemetryHttpHeaderNames.GetDefaultIntakeHeaders(settings), timeout: Timeout);
-#endif
}
public static IApiRequestFactory GetAgentIntakeFactory(ExporterSettings settings)
diff --git a/tracer/test/Datadog.Trace.Tests/Agent/Transports/ApiWebRequestFactoryTests.cs b/tracer/test/Datadog.Trace.Tests/Agent/Transports/ApiWebRequestFactoryTests.cs
deleted file mode 100644
index 3a24b758fc73..000000000000
--- a/tracer/test/Datadog.Trace.Tests/Agent/Transports/ApiWebRequestFactoryTests.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// 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.Net;
-using System.Reflection;
-using Datadog.Trace.Agent.Transports;
-using Xunit;
-
-namespace Datadog.Trace.Tests.Agent.Transports
-{
- [Collection(nameof(WebRequestCollection))]
- public class ApiWebRequestFactoryTests
- {
- ///
- /// This test ensures that the ApiWebRequestFactory behaves correctly when
- /// a different type of WebRequest is assigned to the http:// prefix
- ///
- [Fact]
- public void OverrideHttpPrefix()
- {
- // Couldn't find a way to "officially" unregister a prefix but that shouldn't stop us
- var prefixListProperty = typeof(WebRequest).GetProperty("PrefixList", BindingFlags.Static | BindingFlags.NonPublic);
- var oldPrefixList = prefixListProperty.GetValue(null);
-
- WebRequest.RegisterPrefix("http://", new CustomWebRequestCreator());
-
- // Make sure we properly hooked the WebRequest factory
- Assert.IsType(WebRequest.Create("http://localhost/"));
-
- try
- {
- var factory = new ApiWebRequestFactory(new Uri("http://localhost"), AgentHttpHeaderNames.DefaultHeaders);
-
- var request = factory.Create(factory.GetEndpoint(string.Empty));
-
- Assert.NotNull(request);
- }
- finally
- {
- // Unregister the prefix
- prefixListProperty.SetValue(null, oldPrefixList);
- }
-
- // Make sure we properly restored the old WebRequest factory
- Assert.IsType(WebRequest.Create("http://localhost/"));
- }
-
- private class CustomWebRequestCreator : IWebRequestCreate
- {
- public WebRequest Create(Uri uri)
- {
- return new FakeWebRequest();
- }
- }
-
- private class FakeWebRequest : WebRequest
- {
- }
- }
-}
diff --git a/tracer/test/Datadog.Trace.Tests/MultipartFormTests.cs b/tracer/test/Datadog.Trace.Tests/MultipartFormTests.cs
index 4155eacda59a..c377011a0666 100644
--- a/tracer/test/Datadog.Trace.Tests/MultipartFormTests.cs
+++ b/tracer/test/Datadog.Trace.Tests/MultipartFormTests.cs
@@ -24,6 +24,8 @@ namespace Datadog.Trace.Tests
[UsesVerify]
public class MultipartFormTests
{
+ private const string AwrMultipartTest = "ApiWebRequest_MultipartTest";
+ private const string AwrValidationTest = "ApiWebRequest_ValidationTest";
private static readonly Uri Localhost = new Uri("http://localhost");
private readonly ITestOutputHelper _output;
@@ -38,28 +40,6 @@ public static IEnumerable