public async Task TraceSingleAsync(Func <IHostBuilder> createHostBuilder) { IHost host = null; try { host = createHostBuilder().Build(); await host.StartAsync(); ITraceContext traceContext = new SimpleTraceContext(null, null, true); var tracerFactory = host.Services.GetRequiredService <Func <ITraceContext, IManagedTracer> >(); IManagedTracer tracer = tracerFactory(traceContext); ContextTracerManager.SetCurrentTracer(tracer); using (tracer.StartSpan(_testId)) { IManagedTracer currentTracer = host.Services.GetRequiredService <IManagedTracer>(); currentTracer.RunInSpan( () => Console.WriteLine("Using Cloud Trace from a non ASP.NET Core app"), "testing_tracing"); } var trace = TraceEntryPolling.Default.GetTrace(_testId, _startTime); TraceEntryVerifiers.AssertParentChildSpan(trace, _testId, "testing_tracing"); } finally { if (host is object) { await host.StopAsync(); } } }
public async Task TraceOutGoing() { string googleUri = "https://google.com/"; var spanName = EntryData.GetMessage(nameof(TraceOutGoing), _testId); await TraceOutGoingRequest(spanName, googleUri, false); var trace = TraceEntryPolling.Default.GetTrace(spanName, _startTime); TraceEntryVerifiers.AssertParentChildSpan(trace, spanName, googleUri); TraceEntryVerifiers.AssertSpanLabelsExact( trace.Spans.First(s => s.Name == googleUri), TraceEntryData.HttpGetSuccessLabels); }
public async Task TraceOutGoing_HttpError() { string fakeUri = "https://google.com/404"; var spanName = EntryData.GetMessage(nameof(TraceOutGoing_HttpError), _testId); await TraceOutGoingRequest(spanName, fakeUri, false); var trace = TraceEntryPolling.Default.GetTrace(spanName, _startTime); TraceEntryVerifiers.AssertParentChildSpan(trace, spanName, fakeUri); TraceEntryVerifiers.AssertSpanLabelsExact(trace.Spans.Where(s => s.Name == fakeUri).Single(), new Dictionary <string, string> { { TraceLabels.HttpMethod, "GET" }, { TraceLabels.HttpStatusCode, "404" } }); }
public async Task TraceOutGoing_Exception() { string fakeUri = "http://www.thiscannotpossiblyexist934719238.com/"; var spanName = EntryData.GetMessage(nameof(TraceOutGoing_Exception), _testId); await TraceOutGoingRequest(spanName, fakeUri, true); var trace = TraceEntryPolling.Default.GetTrace(spanName, _startTime); TraceEntryVerifiers.AssertParentChildSpan(trace, spanName, fakeUri); var span = trace.Spans.Where(s => s.Name == fakeUri).Single(); TraceEntryVerifiers.AssertSpanLabelsContains(span, new Dictionary <string, string> { { TraceLabels.HttpMethod, "GET" }, }); TraceEntryVerifiers.AssertContainsStackTrace(span); }