public async Task Trace_Header() { string traceId = TraceIdFactory.Create().NextId(); ulong spanId = SpanIdFactory.Create().NextId(); string testId = Utils.GetTestId(); var startTime = Timestamp.FromDateTime(DateTime.UtcNow); var builder = new WebHostBuilder().UseStartup <TraceTestNoBufferLowQpsApplication>(); using (var server = new TestServer(builder)) { var client = server.CreateClient(); var header = TraceHeaderContext.Create(traceId, spanId, shouldTrace: true); client.DefaultRequestHeaders.Add(TraceHeaderContext.TraceHeader, header.ToString()); await client.GetAsync($"/Trace/Trace/{testId}"); } var spanName = TraceController.GetMessage(nameof(TraceController.Trace), testId); var trace = _polling.GetTrace(spanName, startTime); Assert.NotNull(trace); Assert.Equal(traceId, trace.TraceId); Assert.Equal(2, trace.Spans.Count); var span = trace.Spans.First(s => s.Name.StartsWith("/Trace")); Assert.Equal(spanId, span.ParentSpanId); }
public async Task Trace_Header() { string traceId = TraceIdFactory.Create().NextId(); ulong spanId = SpanIdFactory.Create().NextId(); string testId = Utils.GetTestId(); var startTime = Timestamp.FromDateTime(DateTime.UtcNow); var client = _noBufferLowQps.CreateClient(); var header = TraceHeaderContext.Create(traceId, spanId, shouldTrace: true); client.DefaultRequestHeaders.Add(TraceHeaderContext.TraceHeader, header.ToString()); var response = await client.GetAsync($"/Trace/Trace/{testId}"); var spanName = TraceController.GetMessage(nameof(TraceController.Trace), testId); var trace = _polling.GetTrace(spanName, startTime); Assert.NotNull(trace); Assert.Equal(traceId, trace.TraceId); Assert.Equal(2, trace.Spans.Count); var span = trace.Spans.First(s => s.Name.StartsWith("/Trace")); Assert.Equal(spanId, span.ParentSpanId); Assert.True(response.Headers.Contains(TraceHeaderContext.TraceHeader)); var returnedHeader = response.Headers.GetValues(TraceHeaderContext.TraceHeader).Single(); var headerContext = TraceHeaderContext.FromHeader(returnedHeader); Assert.Equal(traceId, headerContext.TraceId); Assert.Equal(spanId, headerContext.SpanId); Assert.True(headerContext.ShouldTrace); }