7 writes to Items
Aspire.Dashboard (7)
Otlp\Model\OtlpHelpers.cs (1)
493Items = items,
Otlp\Storage\PagedResult.cs (1)
11Items = new List<T>(),
Otlp\Storage\SqliteTelemetryRepository.Logs.cs (2)
271Items = MaterializeLogs(connection, records), 384Items = records
Otlp\Storage\SqliteTelemetryRepository.Traces.Reads.cs (3)
49Items = traces, 167Items = summaries, 409Items = identities.Select(identity => traces[identity.TraceId].Spans.Single(span => span.SpanId == identity.SpanId)).ToList(),
217 references to Items
Aspire.Dashboard (18)
Api\TelemetryApiService.cs (3)
55var allSpans = result.PagedResult.Items; 115var traces = result.PagedResult.Items; 217var logs = result.Items;
Components\Pages\StructuredLogs.razor.cs (2)
167return GridItemsProviderResult.From(logs.Items, virtualizedLogCount); 622return matchingLogs.Items.Count == 0;
Components\Pages\TraceDetail.razor.cs (2)
293}, _cts.Token)).Items; 659return response.PagedResult.Items.Select(span => span.SpanId).ToHashSet(StringComparer.Ordinal);
Components\Pages\Traces.razor.cs (1)
171return GridItemsProviderResult.From(traces.Items, virtualizedTraceCount);
Model\GenAI\GenAIVisualizerDialogViewModel.cs (1)
614return logsResult.Items;
Model\StructuredLogsViewModel.cs (1)
95_currentDataHasErrors = logs.Items.Any(i => i.Severity >= Microsoft.Extensions.Logging.LogLevel.Error);
Model\TelemetryExportService.cs (4)
160if (logs.Items.Count == 0) 166exportArchive.StructuredLogs[resourceName] = ConvertLogsToOtlpJson(logs.Items); 176if (tracesResponse.PagedResult.Items.Count == 0) 182exportArchive.Traces[resourceName] = ConvertTracesToOtlpJson(tracesResponse.PagedResult.Items);
Otlp\Storage\SqliteTelemetryRepository.cs (2)
194return result.Items; 208return result.Items;
Otlp\Storage\SqliteTelemetryRepository.Runtime.cs (2)
247foreach (var span in existingSpans.PagedResult.Items.OrderBy(span => span.StartTime)) 302foreach (var log in existingLogs.Items)
Aspire.Dashboard.Components.Tests (3)
Controls\GenAIVisualizerDialogTests.cs (2)
216var trace = tracesResult.PagedResult.Items[0]; 300var trace = tracesResult.PagedResult.Items[0];
Pages\TraceDetailsTests.cs (1)
997return response.PagedResult.Items.Select(span => span.SpanId).ToHashSet(StringComparer.Ordinal);
Aspire.Dashboard.Tests (196)
Integration\OtlpHttpJsonTests.cs (6)
534Assert.NotEmpty(traces.PagedResult.Items); 536var trace = traces.PagedResult.Items.First(); 594Assert.NotEmpty(logs.Items); 596var log = logs.Items.First(); 671Assert.NotEmpty(logs.Items); 673var log = logs.Items.First();
Model\DashboardDataSourceTests.cs (1)
1119}, cancellationToken: CancellationToken.None)).Items).Message);
Model\StructuredLogsPageViewModelTests.cs (1)
258return new StructureLogsDetailsViewModel { LogEntry = Assert.Single(logs.Items) };
Model\TelemetryExportServiceTests.cs (17)
69var result = TelemetryExportService.ConvertLogsToOtlpJson(logs.Items); 131var result = TelemetryExportService.ConvertLogsToOtlpJson(logs.Items); 139Assert.Equal(logs.Items[0].InternalId.ToString(CultureInfo.InvariantCulture), logIdAttribute.Value?.StringValue); 179var result = TelemetryExportService.ConvertLogsToOtlpJson(logs.Items); 252var result = TelemetryExportService.ConvertLogsToOtlpJson(logs.Items); 306var result = TelemetryExportService.ConvertTracesToOtlpJson(traces.PagedResult.Items); 373var result = TelemetryExportService.ConvertTracesToOtlpJson(traces.PagedResult.Items); 420traces.PagedResult.Items[0].Spans[0].SetUninstrumentedPeer(new OtlpResource( 427var result = TelemetryExportService.ConvertTracesToOtlpJson(traces.PagedResult.Items); 471var result = TelemetryExportService.ConvertTracesToOtlpJson(traces.PagedResult.Items); 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]; 1108var logs = (await repositoryContext.Repository.GetLogsAsync(GetLogsContext.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).Items; 1168var trace = (await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items[0]; 1169var logs = (await repositoryContext.Repository.GetLogsAsync(GetLogsContext.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).Items; 1210var trace = (await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items[0]; 1247var logEntry = (await repositoryContext.Repository.GetLogsAsync(GetLogsContext.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).Items[0];
Model\TelemetryImportServiceTests.cs (15)
93Assert.Single(logs.Items); 94Assert.Equal("Test log message", logs.Items[0].Message); 118Assert.Single(traces.PagedResult.Items); 325var exportedJson = TelemetryExportService.ConvertLogsToOtlpJson(logs.Items); 345Assert.Single(importedLogs.Items); 346Assert.Equal("Round trip test", importedLogs.Items[0].Message); 347Assert.Equal(Microsoft.Extensions.Logging.LogLevel.Warning, importedLogs.Items[0].Severity); 376var originalInternalId = logs.Items[0].InternalId; 379var exportedJson = TelemetryExportService.ConvertLogsToOtlpJson(logs.Items); 417Assert.Single(importedLogs.Items); 420Assert.DoesNotContain(importedLogs.Items[0].Attributes, a => a.Key == OtlpHelpers.AspireLogIdAttribute); 423Assert.NotEqual(originalInternalId, importedLogs.Items[0].InternalId); 426Assert.Contains(importedLogs.Items[0].Attributes, a => a.Key == "custom.attr" && a.Value == "custom-value"); 457var exportedJson = TelemetryExportService.ConvertTracesToOtlpJson(traces.PagedResult.Items); 476Assert.Single(importedTraces.PagedResult.Items);
TelemetryRepositoryTests\LogTests.cs (34)
74Assert.Collection(logs.Items, 190Assert.Collection(summaries.Items, 193var log = logs.Items[0]; 229Assert.Collection(latestSummaries.Items, 240Assert.Collection(latestLogs.Items, 267Assert.Equal("direct", Assert.Single(filtered.Items).Message); 277Assert.Empty(emptyPage.Items); 287Assert.Empty(emptyLogsPage.Items); 323}, cancellationToken: CancellationToken.None)).Items; 381Assert.Collection(logs.Items, 433Assert.Collection(logs.Items, 683Assert.Empty(logs.Items); 779Assert.Single(logs.Items); 921Assert.Collection(logs.Items, 1068}, cancellationToken: CancellationToken.None)).Items); 1076}, cancellationToken: CancellationToken.None)).Items); 1115var log = Assert.Single(result.Items); 1155}, cancellationToken: CancellationToken.None)).Items); 1163}, cancellationToken: CancellationToken.None)).Items); 1225Assert.Collection(logs1.Items, 1248Assert.Collection(logs2.Items, 1324Assert.Collection(logs.Items, 1415Assert.Empty(logs.Items); 1480Assert.Collection(logs.Items, 1554var log = Assert.Single(logs.Items); 1593Assert.Collection(logs.Items, 1634Assert.Collection(logs.Items, 1675Assert.Collection(logs.Items, 1718Assert.Collection(logs.Items, 1760Assert.Collection(logs.Items, 1820Assert.Single(logs.Items); 1821Assert.Equal("matching log", logs.Items[0].Message); 1879}, cancellationToken: CancellationToken.None)).Items; 1952}, cancellationToken: CancellationToken.None)).Items;
TelemetryRepositoryTests\SqliteTelemetryPersistenceTests.cs (6)
110var log = Assert.Single((await repositoryContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 111var span = Assert.Single(Assert.Single((await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(cachedResource.ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items).Spans); 293var log = Assert.Single((await repositoryContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 299var log = Assert.Single((await historicalContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 357var trace = Assert.Single((await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(new ResourceKey("TestService", "TestId")), cancellationToken: CancellationToken.None)).PagedResult.Items); 363var trace = Assert.Single((await historicalContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(new ResourceKey("TestService", "TestId")), cancellationToken: CancellationToken.None)).PagedResult.Items);
TelemetryRepositoryTests\TelemetryRepositoryTests.cs (18)
42Assert.Empty((await repositoryContext.Repository.GetLogsAsync(new GetLogsContext { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).Items); 44Assert.Empty((await repositoryContext.Repository.GetTracesAsync(new GetTracesRequest { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).PagedResult.Items); 53Assert.Single((await repositoryContext.Repository.GetLogsAsync(new GetLogsContext { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).Items); 57Assert.Single((await repositoryContext.Repository.GetTracesAsync(new GetTracesRequest { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).PagedResult.Items); 234Assert.Single(logs.Items); 235Assert.Equal("log-resource2-456", logs.Items[0].Message); 246Assert.Single(resource2Logs.Items); 247Assert.Equal("log-resource2-456", resource2Logs.Items[0].Message); 250Assert.Single(resource2Traces.PagedResult.Items); 276Assert.Contains(logs.Items, l => l.Message == "log-resource1-111"); 277Assert.Contains(logs.Items, l => l.Message == "log-resource3-333"); 278Assert.DoesNotContain(logs.Items, l => l.Message == "log-resource2-222"); 319Assert.Empty(logs.Items); 322Assert.Empty(traces.PagedResult.Items); 350Assert.Empty(logs.Items); 353Assert.Empty(traces.PagedResult.Items); 843Assert.Collection(traces.PagedResult.Items, 867Assert.Collection(result.PagedResult.Items,
TelemetryRepositoryTests\TraceTests.cs (98)
87Assert.Collection(traces.PagedResult.Items, 180var summary = Assert.Single(summaries.PagedResult.Items); 213var latestSummary = Assert.Single(latestSummaries.PagedResult.Items); 217var latestTrace = Assert.Single(latestTraces.PagedResult.Items); 230Assert.Empty(emptyPage.PagedResult.Items); 306var traces = (await repositoryContext.Repository.GetTracesAsync(request, cancellationToken: CancellationToken.None)).PagedResult.Items; 307var summaries = (await repositoryContext.Repository.GetTraceSummariesAsync(request, cancellationToken: CancellationToken.None)).PagedResult.Items; 370}, cancellationToken: CancellationToken.None)).PagedResult.Items); 418}, cancellationToken: CancellationToken.None)).PagedResult.Items); 491}, cancellationToken: CancellationToken.None)).PagedResult.Items); 558Assert.Empty(traces.PagedResult.Items); 612Assert.Collection(traces.PagedResult.Items, 670}, cancellationToken: CancellationToken.None)).PagedResult.Items); 723Assert.Collection(traces.PagedResult.Items, 793Assert.Collection(traces.PagedResult.Items, 869Assert.Collection(traces1.PagedResult.Items, 910Assert.Collection(traces2.PagedResult.Items, 964Assert.Collection(traces.PagedResult.Items, 1032Assert.Collection(traces.PagedResult.Items, 1108Assert.Collection(traces.PagedResult.Items, 1174Assert.Collection(traces1.PagedResult.Items, 1189Assert.NotSame(traces1.PagedResult.Items[0], traces2.PagedResult.Items[0]); 1190Assert.NotSame(traces1.PagedResult.Items[0].Spans[0].Trace, traces2.PagedResult.Items[0].Spans[0].Trace); 1257var trace = Assert.Single(traces.PagedResult.Items); 1309var trace = Assert.Single(traces.PagedResult.Items); 1381var actualOrder = traces.PagedResult.Items.Select(t => t.TraceId).ToList(); 1390Assert.Equal(MaxTraceCount * 2, traces.PagedResult.Items.SelectMany(t => t.Spans).SelectMany(s => s.Links).Count()); 1484Assert.Collection(traces.PagedResult.Items, 1553Assert.Collection(traces.PagedResult.Items, 1645}, cancellationToken: CancellationToken.None)).PagedResult.Items; 1713Assert.Collection(traces.PagedResult.Items, 1731Assert.Collection(traces.PagedResult.Items, 1750Assert.Empty(traces.PagedResult.Items); 1803Assert.Empty(traces.PagedResult.Items); 1818Assert.Collection(traces.PagedResult.Items, 1874Assert.Collection(traces.PagedResult.Items, 1927Assert.Single(traces.PagedResult.Items); 1939Assert.Empty(traces.PagedResult.Items); 1979Assert.Collection(traces.PagedResult.Items, 2022var trace = Assert.Single((await repositoryContext.Repository.GetTracesAsync(request, cancellationToken: CancellationToken.None)).PagedResult.Items); 2047trace = Assert.Single((await repositoryContext.Repository.GetTracesAsync(request, cancellationToken: CancellationToken.None)).PagedResult.Items); 2072trace = Assert.Single((await repositoryContext.Repository.GetTracesAsync(request, cancellationToken: CancellationToken.None)).PagedResult.Items); 2097trace = Assert.Single((await repositoryContext.Repository.GetTracesAsync(request, cancellationToken: CancellationToken.None)).PagedResult.Items); 2202var trace = Assert.Single(traces.PagedResult.Items); 2320Assert.NotNull(traces?.PagedResult?.Items); 2321Assert.Empty(traces.PagedResult.Items); 2398Assert.NotNull(traces?.PagedResult?.Items); 2401Assert.Collection(traces.PagedResult.Items, 2503Assert.NotNull(traces?.PagedResult?.Items); 2504var trace = Assert.Single(traces.PagedResult.Items); 2594Assert.NotNull(traces?.PagedResult?.Items); 2595var trace = Assert.Single(traces.PagedResult.Items); 2667var trace = Assert.Single(traces.PagedResult.Items); 2760}, cancellationToken: CancellationToken.None)).PagedResult.Items); 2860Assert.Empty(traces.PagedResult.Items); 2928var trace = Assert.Single(traces.PagedResult.Items); 2969trace = Assert.Single(traces.PagedResult.Items); 3082}, cancellationToken: CancellationToken.None)).PagedResult.Items); 3090}, cancellationToken: CancellationToken.None)).PagedResult.Items); 3176Assert.Equal(3, result.PagedResult.Items.Count); 3218Assert.All(result.PagedResult.Items, s => AssertId("1", s.TraceId)); 3253var span = Assert.Single(result.PagedResult.Items); 3295AssertId("1-1", result.PagedResult.Items[0].SpanId); 3336AssertId("1-2", result.PagedResult.Items[0].SpanId); 3385Assert.Equal(expectedTraceIds.Length, result.PagedResult.Items.Count); 3388AssertId(expectedTraceIds[index], result.PagedResult.Items[index].TraceId); 3446AssertId("1-1", result.PagedResult.Items[0].SpanId); 3503Assert.Equal(expectedCount, result.PagedResult.Items.Count); 3553AssertId("1-1", result.PagedResult.Items[0].SpanId); 3594AssertId("1-1", result.PagedResult.Items[0].SpanId); 3682AssertId(expectedMatch.SpanId, Assert.Single(result.PagedResult.Items).SpanId); 3750AssertId("1-1", Assert.Single(fieldResult.PagedResult.Items).SpanId); 3752AssertId("1-1", Assert.Single(textResult.PagedResult.Items).SpanId); 3793Assert.Single(result.PagedResult.Items); 3794AssertId("1-2", result.PagedResult.Items[0].SpanId); 3837AssertId("1-1", result.PagedResult.Items[0].SpanId); 3857Assert.Empty(result.PagedResult.Items); 3896Assert.Empty(result.PagedResult.Items); 3997Assert.Contains("span1", result.PagedResult.Items[0].Name); 4050Assert.Empty(traces.PagedResult.Items); 4100Assert.Collection(traces.PagedResult.Items, 4151Assert.Empty(traces.PagedResult.Items); 4236Assert.Collection(traces.PagedResult.Items, 4292Assert.Collection(traces.PagedResult.Items, 4345Assert.Empty(traces.PagedResult.Items); 4401Assert.Contains(result.PagedResult.Items, s => GetStringId(s.SpanId) == "1-2"); 4402Assert.Contains(result.PagedResult.Items, s => GetStringId(s.SpanId) == "1-3"); 4474Assert.Collection(traces.PagedResult.Items, 4498}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4523}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4556}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4585}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4624}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4781}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4843}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4916}, cancellationToken: CancellationToken.None)).PagedResult.Items);