83 references to Spans
Aspire.Dashboard (42)
Api\TelemetryApiService.cs (2)
124var spans = traces.SelectMany(t => t.Spans).ToList(); 149var spans = trace.Spans.ToList();
Components\Pages\StructuredLogs.razor.cs (1)
572foreach (var s in trace.Spans)
Components\Pages\TraceDetail.razor.cs (3)
302Logger.LogInformation("Trace '{TraceId}' has {SpanCount} spans.", trace.TraceId, trace.Spans.Count); 312foreach (var span in trace.Spans) 696foreach (var span in _trace.Spans)
Components\Pages\Traces.razor.cs (2)
429var firstSpan = trace.Spans.FirstOrDefault(s => GenAIHelpers.HasGenAIAttribute(s.Attributes)); 449return latestTrace.Spans.Where(span => GenAIHelpers.HasGenAIAttribute(span.Attributes)).ToList();
Model\SpanDetailsViewModel.cs (1)
68var linkSpan = trace?.Spans.FirstOrDefault(s => s.SpanId == spanId);
Model\TelemetryExportService.cs (2)
302var allSpans = traces.SelectMany(t => t.Spans).ToList(); 334var spansByResourceAndScope = trace.Spans
Model\TraceHelpers.cs (2)
21foreach (var item in trace.Spans) 23if (string.IsNullOrEmpty(item.ParentSpanId) || !trace.Spans.TryGetValue(item.ParentSpanId, out var parentSpan))
Otlp\Model\OtlpSpan.cs (3)
50public IEnumerable<OtlpSpan> GetChildSpans() => GetChildSpans(this, Trace.Spans); 68if (Trace.Spans.TryGetValue(ParentSpanId, out var span)) 259foreach (var span in trace.Spans)
Otlp\Model\OtlpTrace.cs (16)
18public OtlpSpan FirstSpan => Spans[0]; // There should always be at least one span in a trace. 38public int CalculateMaxDepth() => Spans.Max(CalculateDepth); 42if (Spans.Contains(span.SpanId)) 48for (var i = Spans.Count - 1; i >= 0; i--) 50if (span.StartTime > Spans[i].StartTime) 56Spans.Insert(insertIndex, span); 60Spans.Remove(span); 70foreach (var existingSpan in Spans) 80else if (_rootSpan == null && span == Spans[0]) 127var span = Spans[index]; 128if ((index > 0 && span.StartTime < Spans[index - 1].StartTime) || 129(index < Spans.Count - 1 && span.StartTime > Spans[index + 1].StartTime)) 146foreach (var item in trace.Spans) 158foreach (var span in Spans) 170return $@"TraceId = ""{TraceId}"", Spans = {Spans.Count}, StartDate = {FirstSpan?.StartTime.ToLocalTime():yyyy:MM:dd}, StartTime = {FirstSpan?.StartTime.ToLocalTime():h:mm:ss.fff tt}, Duration = {Duration}";
Otlp\Storage\SqliteTelemetryRepository.Traces.Reads.cs (2)
409Items = identities.Select(identity => traces[identity.TraceId].Spans.Single(span => span.SpanId == identity.SpanId)).ToList(), 678return trace?.Spans.FirstOrDefault(span => span.SpanId == spanId);
Otlp\Storage\SqliteTelemetryRepository.Traces.Writes.cs (8)
415trace.Spans.Max(span => span.EndTime.Ticks), 419trace.Spans.Any(span => span.Status == OtlpSpanStatusCode.Error), 420HasGenAI(trace.Spans)); 435Math.Max(existingTrace.LastSpanEndTimestampTicks, trace.Spans.Max(span => span.EndTime.Ticks)), 441existingTrace.HasError || trace.Spans.Any(span => span.Status == OtlpSpanStatusCode.Error), 442existingTrace.HasGenAI || HasGenAI(trace.Spans)); 450var primarySpan = trace.Spans[0]; 451foreach (var span in trace.Spans.Skip(1))
Aspire.Dashboard.Components.Tests (3)
Controls\GenAIVisualizerDialogTests.cs (3)
217var span = trace.Spans[0]; 301var span = trace.Spans[0]; 308return currentTrace?.Spans.ToList() ?? [];
Aspire.Dashboard.Tests (38)
Integration\OtlpHttpJsonTests.cs (2)
538Assert.Single(trace.Spans); 540var span = trace.Spans.First();
Model\TelemetryExportServiceTests.cs (3)
420traces.PagedResult.Items[0].Spans[0].SetUninstrumentedPeer(new OtlpResource( 1054var span = (await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items[0].Spans[0]; 1107var span = (await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items[0].Spans[0];
TelemetryRepositoryTests\SqliteTelemetryPersistenceTests.cs (2)
111var span = Assert.Single(Assert.Single((await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(cachedResource.ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items).Spans); 177var span = Assert.Single(reopenedContext.Repository.GetTrace(GetHexId("peer-trace"))!.Spans);
TelemetryRepositoryTests\TraceTests.cs (31)
93Assert.Equal(2, trace.Spans.Count); 615Assert.Equal(2, trace.Spans.Count); 671Assert.Collection(trace.Spans, 726Assert.Equal(2, trace.Spans.Count); 799Assert.Equal(2, trace.Spans.Count); 801Assert.Collection(trace.Spans, 970Assert.Collection(trace.Spans, 1190Assert.NotSame(traces1.PagedResult.Items[0].Spans[0].Trace, traces2.PagedResult.Items[0].Spans[0].Trace); 1195Assert.NotSame(trace1.Spans[0].Trace, trace2.Spans[0].Trace); 1311Assert.Collection(trace.Spans, 1390Assert.Equal(MaxTraceCount * 2, traces.PagedResult.Items.SelectMany(t => t.Spans).SelectMany(s => s.Links).Count()); 1490Assert.Equal(3, trace.Spans.Count); 2204Assert.Collection(trace.Spans, 2405Assert.Collection(trace.Spans, 2418Assert.Collection(trace.Spans, 2507Assert.Collection(trace.Spans, 2598Assert.Collection(trace.Spans, 2668Assert.Collection(trace.Spans, 2720Assert.NotNull(Assert.Single(trace.Spans).UninstrumentedPeer); 2750trace.Spans, 2929Assert.Collection(trace.Spans, 2970Assert.Collection(trace.Spans, 3023var span = Assert.Single(trace.Spans); 3062Assert.Null(Assert.Single(repositoryContext.Repository.GetTrace(GetHexId("1"))!.Spans).UninstrumentedPeer); 3069var span = Assert.Single(repositoryContext.Repository.GetTrace(GetHexId("1"))!.Spans); 3075Assert.Null(Assert.Single(repositoryContext.Repository.GetTrace(GetHexId("1"))!.Spans).UninstrumentedPeer); 4727Assert.Collection(trace.Spans, 4963Assert.Equal(spanCount, trace.Spans.Count); 4966var span = trace.Spans[index];