public async Task SendAsync_NoTrace()
        {
            var managedTracer = new FakeManagedTracer(null, null);
            var traceHandler  = new TraceHeaderPropagatingHandler(() => managedTracer, new BounceBackRequestHandler());

            using var httpClient = new HttpClient(traceHandler);
            var response = await httpClient.GetAsync("https://www.google.com");

            AssertDoesNotContainGoogleTraceHeader(response.RequestMessage);
            AssertDoesNotContainTraceProperties(response.RequestMessage);

            managedTracer.AssertNoRanInSpan();
        }
        public async Task SendAsync_Trace_Default()
        {
            var managedTracer = new FakeManagedTracer(TraceId, SpanId);
            var traceHandler  = new TraceHeaderPropagatingHandler(() => managedTracer, new BounceBackRequestHandler());

            var url = "https://www.google.com/";

            using var httpClient = new HttpClient(traceHandler);
            var response = await httpClient.GetAsync(url);

            AssertContainsGoogleTraceHeader(response.RequestMessage);
            AssertDoesNotContainTraceProperties(response.RequestMessage);

            managedTracer.AssertSingleRanInSpan(url);
        }
        public async Task SendAsync_Trace_Custom()
        {
            var managedTracer = new FakeManagedTracer(TraceId, SpanId);

#pragma warning disable CS0618 // Type or member is obsolete
            var traceHandler = new TraceHeaderPropagatingHandler(
#pragma warning restore CS0618 // Type or member is obsolete
                () => managedTracer, SetOutgoingHttpTraceContext, new BounceBackRequestHandler());

            var url = "https://www.google.com/";

            using var httpClient = new HttpClient(traceHandler);
            var response = await httpClient.GetAsync(url);

            AssertContainsTraceProperties(response.RequestMessage);
            AssertDoesNotContainGoogleTraceHeader(response.RequestMessage);

            managedTracer.AssertSingleRanInSpan(url);
        }