Esempio n. 1
0
        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);
        }