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)); }