4 instantiations of OtlpSpan
Aspire.Dashboard (2)
Otlp\Model\OtlpSpan.cs (1)
83return new OtlpSpan(item.Source, trace, item.Scope)
Otlp\Storage\TelemetryRepository.cs (1)
1411var newSpan = new OtlpSpan(resourceView, trace, scope)
Aspire.Dashboard.Components.Tests (1)
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
311return new OtlpSpan(resource.GetView([]), trace, scope)
Aspire.Dashboard.Tests (1)
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
311return new OtlpSpan(resource.GetView([]), trace, scope)
193 references to OtlpSpan
Aspire.Dashboard (136)
Components\Controls\Chart\ChartBase.cs (6)
60private Dictionary<SpanKey, OtlpSpan> _currentCache = new Dictionary<SpanKey, OtlpSpan>(); 61private Dictionary<SpanKey, OtlpSpan> _newCache = new Dictionary<SpanKey, OtlpSpan>(); 310if (!_currentCache.TryGetValue(key, out var span)) 509_newCache = new Dictionary<SpanKey, OtlpSpan>();
Components\Controls\Chart\ChartExemplar.cs (1)
16public required OtlpSpan? Span { get; init; }
Components\Controls\PropertyValues\SpanKindValue.razor.cs (1)
22public required OtlpSpan Span { get; set; }
Components\Controls\PropertyValues\SpanStatusValue.razor.cs (1)
18public required OtlpSpan Span { get; set; }
Components\Controls\SpanActions.razor.cs (1)
27public required EventCallback<OtlpSpan> OnLaunchGenAI { get; set; }
Components\Controls\SpanDetails.razor.cs (1)
29public EventCallback<OtlpSpan> LaunchGenAICallback { get; set; }
Components\Dialogs\GenAIVisualizerDialog.razor.cs (8)
33private List<OtlpSpan> _contextSpans = default!; 110var span = newContextSpans.Find(s => s.SpanId == Content.Span.SpanId)!; 191if (TryGetContextSpanByIndex(_currentSpanContextIndex - 1, out var span)) 199if (TryGetContextSpanByIndex(_currentSpanContextIndex + 1, out var span)) 205private bool TryGetContextSpanByIndex(int index, [NotNullWhen(true)] out OtlpSpan? span) 211private bool TryUpdateViewedGenAISpan(OtlpSpan newSpan) 336OtlpSpan span, long? selectedLogEntryId, 337TelemetryRepository telemetryRepository, ITelemetryErrorRecorder errorRecorder, List<OtlpResource> resources, Func<List<OtlpSpan>> getContextGenAISpans)
Components\Pages\StructuredLogs.razor.cs (3)
572var span = TelemetryRepository.GetSpan(logEntry.TraceId, logEntry.SpanId)!; 606var genAISpans = new List<OtlpSpan>(); 609var span = TelemetryRepository.GetSpan(l.TraceId, l.SpanId);
Components\Pages\TraceDetail.razor.cs (4)
218var headerSpan = _trace.RootOrFirstSpan; 309foreach (var span in _trace.Spans) 533private async Task OnGenAIClickedAsync(OtlpSpan span) 544var genAISpans = new List<OtlpSpan>();
Components_Pages_TraceDetail_razor.g.cs (4)
2728), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Microsoft.AspNetCore.Components.EventCallback<global::Aspire.Dashboard.Otlp.Model.OtlpSpan>>(global::Microsoft.AspNetCore.Components.EventCallback.Factory.Create<global::Aspire.Dashboard.Otlp.Model.OtlpSpan>(this, 2853), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Microsoft.AspNetCore.Components.EventCallback<global::Aspire.Dashboard.Otlp.Model.OtlpSpan>>(global::Microsoft.AspNetCore.Components.EventCallback.Factory.Create<global::Aspire.Dashboard.Otlp.Model.OtlpSpan>(this,
Model\Assistant\AIHelpers.cs (2)
140private static string? GetDestination(OtlpSpan s, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers) 145private static string? ResolveUninstrumentedPeerName(OtlpSpan span, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers)
Model\Assistant\Markdown\AspireEnrichmentParser.cs (1)
202var span = trace.Spans.FirstOrDefault(s => OtlpHelpers.MatchTelemetryId(text, s.SpanId));
Model\Assistant\Prompts\IceBreakersBuilder.cs (1)
305public void Span(BuildIceBreakersContext context, OtlpSpan span)
Model\Assistant\Prompts\KnownChatMessages.cs (1)
306public static ChatMessage CreateAnalyzeSpanMessage(OtlpSpan span, List<OtlpLogEntry> traceLogEntries, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers, DashboardOptions options)
Model\Assistant\Prompts\PromptContextsBuilder.cs (1)
80public static Task AnalyzeSpan(InitializePromptContext context, string displayText, OtlpSpan span)
Model\ExportHelpers.cs (1)
27public static ExportResult GetSpanAsJson(OtlpSpan span, TelemetryRepository telemetryRepository)
Model\GenAI\GenAIItemViewModel.cs (1)
27public required OtlpSpan Parent { get; init; }
Model\GenAI\GenAIVisualizerDialogViewModel.cs (4)
26public required OtlpSpan Span { get; init; } 30public required Func<List<OtlpSpan>> GetContextGenAISpans { get; init; } 55Func<List<OtlpSpan>> getContextGenAISpans) 563private static List<OtlpLogEntry> GetSpanLogEntries(TelemetryRepository telemetryRepository, OtlpSpan span)
Model\Otlp\SpanWaterfallViewModel.cs (5)
14public required OtlpSpan Span { get; init; } 123public static string GetTitle(OtlpSpan span, List<OtlpResource> allResources) 134TraceHelpers.VisitSpans(trace, (OtlpSpan span, SpanWaterfallViewModelState s) => 147static SpanWaterfallViewModel CreateViewModel(OtlpSpan span, int depth, bool hidden, TraceDetailState state, List<OtlpLogEntry>? spanLogs, ref int currentSpanLogIndex) 216private static string? ResolveUninstrumentedPeerName(OtlpSpan span, IOutgoingPeerResolver[] outgoingPeerResolvers, List<OtlpResource> allResources)
Model\Otlp\TelemetryFilter.cs (3)
20public abstract bool Apply(OtlpSpan span); 144public override bool Apply(OtlpSpan span) 146var fieldValue = OtlpSpan.GetFieldValue(span, Field);
Model\SpanDetailsViewModel.cs (3)
15public required OtlpSpan Span { get; init; } 22public static SpanDetailsViewModel Create(OtlpSpan span, TelemetryRepository telemetryRepository, List<OtlpResource> resources) 68var linkSpan = trace?.Spans.FirstOrDefault(s => s.SpanId == spanId);
Model\SpanLinkViewModel.cs (1)
13public required OtlpSpan? Span { get; init; }
Model\SpanMenuBuilder.cs (2)
70OtlpSpan span, 72EventCallback<OtlpSpan> onLaunchGenAI,
Model\SpanType.cs (3)
94public override bool Apply(OtlpSpan span) 127public override bool Apply(OtlpSpan span) 160public override bool Apply(OtlpSpan span)
Model\StructuredLogsViewModel.cs (1)
49var span = _telemetryRepository.GetSpan(spanKey.TraceId, spanKey.SpanId);
Model\TelemetryExportService.cs (4)
280var firstSpan = resourceGroup.First(); 300internal static string ConvertSpanToJson(OtlpSpan span, List<OtlpLogEntry>? logs = null) 331var firstSpan = resourceGroup.First(); 376private static OtlpSpanJson ConvertSpan(OtlpSpan span)
Model\TraceHelpers.cs (17)
16public static void VisitSpans<TState>(OtlpTrace trace, Func<OtlpSpan, TState, TState> spanAction, TState state) 19var spanLookup = new Dictionary<OtlpSpan, List<OtlpSpan>>(); 20var unrootedSpans = new List<OtlpSpan>(); 21foreach (var item in trace.Spans) 23if (string.IsNullOrEmpty(item.ParentSpanId) || !trace.Spans.TryGetValue(item.ParentSpanId, out var parentSpan)) 35var orderByFunc = static (OtlpSpan s) => s.StartTime; 37foreach (var unrootedSpan in unrootedSpans.OrderBy(orderByFunc)) 44static void Visit(Dictionary<OtlpSpan, List<OtlpSpan>> spanLookup, OtlpSpan span, Func<OtlpSpan, TState, TState> spanAction, TState state, Func<OtlpSpan, DateTime> orderByFunc) 48foreach (var childSpan in childSpans.OrderBy(orderByFunc)) 69VisitSpans(trace, (OtlpSpan span, OrderedResourcesState state) => 89private static void ProcessSpanResource(OtlpSpan span, OtlpResource resource, Dictionary<OtlpResource, OrderedResource> resourceFirstTimes, DateTime currentMinDate) 128public static Icon? TryGetSpanIcon(OtlpSpan span, IconVariant iconVariant)
Model\TraceLinkHelpers.cs (1)
20Func<string, string, OtlpSpan?> getSpan,
Otlp\Model\OtlpHelpers.cs (5)
384var address = GetValue(values, OtlpSpan.PeerServiceAttributeKey); 391if (GetValue(values, OtlpSpan.ServerAddressAttributeKey) is { } server) 393if (GetValue(values, OtlpSpan.ServerPortAttributeKey) is { } serverPort) 401if (GetValue(values, OtlpSpan.NetPeerNameAttributeKey) is { } peer) 403if (GetValue(values, OtlpSpan.NetPeerPortAttributeKey) is { } peerPort)
Otlp\Model\OtlpSpan.cs (9)
48public IEnumerable<OtlpSpan> GetChildSpans() => GetChildSpans(this, Trace.Spans); 49public static IEnumerable<OtlpSpan> GetChildSpans(OtlpSpan parentSpan, OtlpSpanCollection spans) => spans.Where(s => s.ParentSpanId == parentSpan.SpanId); 59public OtlpSpan? GetParentSpan() 66if (Trace.Spans.TryGetValue(ParentSpanId, out var span)) 81public static OtlpSpan Clone(OtlpSpan item, OtlpTrace trace) 169static string BuildDisplaySummary(OtlpSpan span) 228public static FieldValues GetFieldValue(OtlpSpan span, string field)
Otlp\Model\OtlpSpanCollection.cs (4)
8public sealed class OtlpSpanCollection : KeyedCollection<string, OtlpSpan> 17protected override string GetKeyForItem(OtlpSpan item) 22public new List<OtlpSpan>.Enumerator GetEnumerator() 25return ((List<OtlpSpan>)this.Items).GetEnumerator();
Otlp\Model\OtlpSpanEvent.cs (1)
16public class OtlpSpanEvent(OtlpSpan span) : IPropertyGridItem
Otlp\Model\OtlpTrace.cs (19)
11private OtlpSpan? _rootSpan; 18public OtlpSpan FirstSpan => Spans[0]; // There should always be at least one span in a trace. 20public OtlpSpan? RootSpan => _rootSpan; 21public OtlpSpan RootOrFirstSpan => RootSpan ?? FirstSpan; 26public int CalculateDepth(OtlpSpan span) 29var currentSpan = span; 40public void AddSpan(OtlpSpan span, bool skipLastUpdatedDate = false) 72foreach (var existingSpan in Spans) 95static string BuildFullName(OtlpSpan existingSpan) 101private static bool HasCircularReference(OtlpSpan span) 111var currentSpan = span; 132var span = Spans[i]; 153foreach (var item in trace.Spans) 155newTrace.AddSpan(OtlpSpan.Clone(item, newTrace), skipLastUpdatedDate: true); 165foreach (var span in Spans) 180public void SetSpanUninstrumentedPeer(OtlpSpan span, OtlpResource? resource) 191private sealed class SpanStartDateComparer : IComparer<OtlpSpan> 195public int Compare(OtlpSpan? x, OtlpSpan? y)
Otlp\Storage\TelemetryRepository.cs (16)
90foreach (var span in trace.Spans) 613foreach (var span in t.Spans) 673foreach (var span in t.Spans) 888foreach (var span in trace.Spans) 890var values = OtlpSpan.GetFieldValue(span, attributeName); 1000private OtlpSpan? GetSpanAndCloneUnsynchronized(string traceId, string spanId) 1008foreach (var span in trace.Spans) 1020public OtlpSpan? GetSpan(string traceId, string spanId) 1152var newSpan = CreateSpan(resourceView, span, trace, scope, _otlpContext); 1170var linkedSpan = GetSpanAndCloneUnsynchronized(link.TraceId, link.SpanId); 1280public OtlpResource? GetPeerResource(OtlpSpan span) 1295foreach (var span in trace.Spans) 1321private static ResourceViewModel? ResolveUninstrumentedPeerResource(OtlpSpan span, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers) 1361foreach (var span in trace.Spans) 1387private static OtlpSpan CreateSpan(OtlpResourceView resourceView, Span span, OtlpTrace trace, OtlpScope scope, OtlpContext context) 1411var newSpan = new OtlpSpan(resourceView, trace, scope)
Aspire.Dashboard.Components.Tests (5)
Controls\GenAIVisualizerDialogTests.cs (4)
96var span = CreateOtlpSpan(resource, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime, attributes: [ 158var span = trace.Spans[0]; 242var span = trace.Spans[0]; 245List<OtlpSpan> GetContextGenAISpans()
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
307public static OtlpSpan CreateOtlpSpan(OtlpResource resource, OtlpTrace trace, OtlpScope scope, string spanId, string? parentSpanId, DateTime startDate,
Aspire.Dashboard.Tests (52)
Integration\OtlpHttpJsonTests.cs (1)
445var span = trace.Spans.First();
Model\GenAIVisualizerDialogViewModelTests.cs (27)
50var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 100var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 184var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 275var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 344var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 422var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 471var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 551var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 667var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 747var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 831var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 884var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 960var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1043var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1150var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1221var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1263var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1350var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1439var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1512var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1620var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1698var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1778var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1861var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 1943var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 2031var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 2103var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!;
Model\ResourceMenuBuilderTests.cs (2)
101TelemetryTestHelpers.CreateSpan(traceId: "1", spanId: "1-1", startTime: s_testTime.AddMinutes(1), endTime: s_testTime.AddMinutes(10), attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-1")], kind: Span.Types.SpanKind.Client), 102TelemetryTestHelpers.CreateSpan(traceId: "1", spanId: "1-2", startTime: s_testTime.AddMinutes(5), endTime: s_testTime.AddMinutes(10), parentSpanId: "1-1", attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-2")], kind: Span.Types.SpanKind.Client)
Model\SpanWaterfallViewModelTests.cs (6)
128var span = TelemetryTestHelpers.CreateOtlpSpan( 188var span = TelemetryTestHelpers.CreateOtlpSpan( 232var parentSpan = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "parent", parentSpanId: null, startDate: new DateTime(2001, 1, 1, 1, 1, 2, DateTimeKind.Utc)); 233var childSpan = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "child", parentSpanId: "parent", startDate: new DateTime(2001, 1, 1, 1, 1, 3, DateTimeKind.Utc)); 254var parentSpan = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "parent", parentSpanId: null, startDate: new DateTime(2001, 1, 1, 1, 1, 2, DateTimeKind.Utc)); 255var childSpan = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "child", parentSpanId: "parent", startDate: new DateTime(2001, 1, 1, 1, 1, 3, DateTimeKind.Utc));
Model\TelemetryExportServiceTests.cs (2)
758var span = repository.GetTraces(GetTracesRequest.ForResourceKey(repository.GetResources()[0].ResourceKey)).PagedResult.Items[0].Spans[0]; 810var span = repository.GetTraces(GetTracesRequest.ForResourceKey(repository.GetResources()[0].ResourceKey)).PagedResult.Items[0].Spans[0];
TelemetryRepositoryTests\OtlpSpanTests.cs (6)
25var span = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime, 76var span = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime); 95var span = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime, 115var parentSpan = TelemetryTestHelpers.CreateOtlpSpan(app1, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime, 117var childSpan = TelemetryTestHelpers.CreateOtlpSpan(app2, trace, scope, spanId: "abc-2", parentSpanId: "abc", startDate: s_testTime, 178var span = TelemetryTestHelpers.CreateOtlpSpan(app, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime,
TelemetryRepositoryTests\TraceTests.cs (7)
1257Spans = { CreateSpan(traceId: "1", spanId: "1-1", startTime: s_testTime.AddMinutes(1), endTime: s_testTime.AddMinutes(10), attributes: [KeyValuePair.Create("key1", "value1"), KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-1")], kind: Span.Types.SpanKind.Client) } 1952CreateSpan(traceId: "1", spanId: "1-1", startTime: s_testTime.AddMinutes(1), endTime: s_testTime.AddMinutes(10), attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-1")], kind: Span.Types.SpanKind.Client), 1953CreateSpan(traceId: "1", spanId: "1-2", startTime: s_testTime.AddMinutes(5), endTime: s_testTime.AddMinutes(10), parentSpanId: "1-1", attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-2")], kind: Span.Types.SpanKind.Client) 2039CreateSpan(traceId: "1", spanId: "1-1", startTime: s_testTime.AddMinutes(1), endTime: s_testTime.AddMinutes(10), attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-1")], kind: Span.Types.SpanKind.Client), 2040CreateSpan(traceId: "1", spanId: "1-2", startTime: s_testTime.AddMinutes(5), endTime: s_testTime.AddMinutes(10), parentSpanId: "1-1", attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-2")], kind: Span.Types.SpanKind.Client) 2145CreateSpan(traceId: "1", spanId: "1-1", startTime: s_testTime.AddMinutes(1), endTime: s_testTime.AddMinutes(10), attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-1")], kind: Span.Types.SpanKind.Client), 2146CreateSpan(traceId: "1", spanId: "1-2", startTime: s_testTime.AddMinutes(5), endTime: s_testTime.AddMinutes(10), parentSpanId: "1-1", attributes: [KeyValuePair.Create(OtlpSpan.PeerServiceAttributeKey, "value-2")], kind: Span.Types.SpanKind.Client)
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
307public static OtlpSpan CreateOtlpSpan(OtlpResource resource, OtlpTrace trace, OtlpScope scope, string spanId, string? parentSpanId, DateTime startDate,