public HttpHandlerDiagnosticTest(ITestOutputHelper output)
        {
            _tracer  = new MockTracer();
            _options = new HttpHandlerDiagnosticOptions();

            IServiceProvider serviceProvider = new ServiceCollection()
                                               .AddLogging(logging =>
            {
                logging.AddXunit(output);
            })
                                               .AddOpenTracingCoreServices(builder =>
            {
                builder.AddCoreFx();
                builder.Services.AddSingleton <ITracer>(_tracer);
                builder.Services.AddSingleton(Options.Create(_options));
            })
                                               .BuildServiceProvider();

            _diagnosticsManager = serviceProvider.GetRequiredService <DiagnosticManager>();
            _diagnosticsManager.Start();

            // Inner handler for mocking the result
            _httpHandler = new MockHttpMessageHandler();

            // Wrap with DiagnosticsHandler (which is internal :( )
            Type               type               = typeof(HttpClientHandler).Assembly.GetType("System.Net.Http.DiagnosticsHandler");
            ConstructorInfo    constructor        = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public)[0];
            HttpMessageHandler diagnosticsHandler = (HttpMessageHandler)constructor.Invoke(new object[] { _httpHandler });

            _httpClient = new HttpClient(diagnosticsHandler);
        }
 public HttpHandlerDiagnostics(ILoggerFactory loggerFactory, ITracer tracer,
                               IOptions <HttpHandlerDiagnosticOptions> options)
     : base(loggerFactory, tracer, options?.Value)
 {
     _options = options?.Value ?? throw new ArgumentNullException(nameof(options));
 }