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