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)
1258var newSpan = new OtlpSpan(resourceView, trace, scope)
Aspire.Dashboard.Components.Tests (1)
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
310return new OtlpSpan(resource.GetView([]), trace, scope)
Aspire.Dashboard.Tests (1)
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
310return new OtlpSpan(resource.GetView([]), trace, scope)
155 references to OtlpSpan
Aspire.Dashboard (123)
Components\Controls\Chart\ChartBase.cs (6)
63private Dictionary<SpanKey, OtlpSpan> _currentCache = new Dictionary<SpanKey, OtlpSpan>(); 64private Dictionary<SpanKey, OtlpSpan> _newCache = new Dictionary<SpanKey, OtlpSpan>(); 315if (!_currentCache.TryGetValue(key, out var span)) 514_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\SpanDetails.razor.cs (1)
31public EventCallback<OtlpSpan> LaunchGenAICallback { get; set; }
Components\Dialogs\GenAIVisualizerDialog.razor.cs (8)
27private List<OtlpSpan> _contextSpans = default!; 85var span = _contextSpans.Find(s => s.SpanId == Content.Span.SpanId)!; 136if (TryGetContextSpanByIndex(_currentSpanContextIndex - 1, out var span)) 144if (TryGetContextSpanByIndex(_currentSpanContextIndex + 1, out var span)) 150private bool TryGetContextSpanByIndex(int index, [NotNullWhen(true)] out OtlpSpan? span) 156private bool TryUpdateViewedGenAISpan(OtlpSpan newSpan) 222IStringLocalizer<Resources.Dialogs> dialogsLoc, OtlpSpan span, long? selectedLogEntryId, 223TelemetryRepository telemetryRepository, ITelemetryErrorRecorder errorRecorder, List<OtlpResource> resources, Func<List<OtlpSpan>> getContextGenAISpans)
Components\Pages\StructuredLogs.razor.cs (1)
557var span = TelemetryRepository.GetSpan(logEntry.TraceId, logEntry.SpanId)!;
Components\Pages\TraceDetail.razor.cs (4)
223var headerSpan = _trace.RootOrFirstSpan; 326foreach (var span in _trace.Spans) 550private async Task OnGenAIClickedAsync(OtlpSpan span) 563var genAISpans = new List<OtlpSpan>();
Components_Pages_TraceDetail_razor.g.cs (2)
2824), 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)
125private static string? GetDestination(OtlpSpan s, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers) 130private 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)
305public static ChatMessage CreateAnalyzeSpanMessage(OtlpSpan span, List<OtlpLogEntry> traceLogEntries, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers)
Model\Assistant\Prompts\PromptContextsBuilder.cs (1)
87public static Task AnalyzeSpan(InitializePromptContext context, string displayText, OtlpSpan span)
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; } 53Func<List<OtlpSpan>> getContextGenAISpans) 387private 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); 143public override bool Apply(OtlpSpan span) 145var 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\SpanType.cs (3)
94public override bool Apply(OtlpSpan span) 127public override bool Apply(OtlpSpan span) 160public override bool Apply(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)
375var address = GetValue(values, OtlpSpan.PeerServiceAttributeKey); 382if (GetValue(values, OtlpSpan.ServerAddressAttributeKey) is { } server) 384if (GetValue(values, OtlpSpan.ServerPortAttributeKey) is { } serverPort) 392if (GetValue(values, OtlpSpan.NetPeerNameAttributeKey) is { } peer) 394if (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)
14public 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)
89foreach (var span in trace.Spans) 554foreach (var span in t.Spans) 614foreach (var span in t.Spans) 737foreach (var span in trace.Spans) 739var values = OtlpSpan.GetFieldValue(span, attributeName); 849private OtlpSpan? GetSpanAndCloneUnsynchronized(string traceId, string spanId) 857foreach (var span in trace.Spans) 869public OtlpSpan? GetSpan(string traceId, string spanId) 999var newSpan = CreateSpan(resourceView, span, trace, scope, _otlpContext); 1017var linkedSpan = GetSpanAndCloneUnsynchronized(link.TraceId, link.SpanId); 1127public OtlpResource? GetPeerResource(OtlpSpan span) 1142foreach (var span in trace.Spans) 1168private static ResourceViewModel? ResolveUninstrumentedPeerResource(OtlpSpan span, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers) 1208foreach (var span in trace.Spans) 1234private static OtlpSpan CreateSpan(OtlpResourceView resourceView, Span span, OtlpTrace trace, OtlpScope scope, OtlpContext context) 1258var newSpan = new OtlpSpan(resourceView, trace, scope)
Aspire.Dashboard.Components.Tests (2)
Controls\GenAIVisualizerDialogTests.cs (1)
99var span = CreateOtlpSpan(resource, trace, scope, spanId: "abc", parentSpanId: null, startDate: s_testTime, attributes: [
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
306public static OtlpSpan CreateOtlpSpan(OtlpResource resource, OtlpTrace trace, OtlpScope scope, string spanId, string? parentSpanId, DateTime startDate,
Aspire.Dashboard.Tests (30)
Model\GenAIVisualizerDialogViewModelTests.cs (8)
49var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 99var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 183var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 275var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 378var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 494var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 574var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!; 658var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!;
Model\ResourceMenuItemsTests.cs (2)
79TelemetryTestHelpers.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), 80TelemetryTestHelpers.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));
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)
306public static OtlpSpan CreateOtlpSpan(OtlpResource resource, OtlpTrace trace, OtlpScope scope, string spanId, string? parentSpanId, DateTime startDate,