7 writes to Items
Aspire.Dashboard (7)
Otlp\Model\OtlpHelpers.cs (1)
520Items = items,
Otlp\Storage\PagedResult.cs (1)
11Items = new List<T>(),
Otlp\Storage\SqliteTelemetryRepository.Logs.cs (2)
271Items = MaterializeLogs(connection, records, transaction), 384Items = records
Otlp\Storage\SqliteTelemetryRepository.Traces.Reads.cs (3)
51Items = traces, 172Items = summaries, 422Items = identities.Select(identity => traces[identity.TraceId].Spans.Single(span => span.SpanId == identity.SpanId)).ToList(),
230 references to Items
Aspire.Dashboard (30)
Api\TelemetryApiService.cs (3)
55var allSpans = result.PagedResult.Items; 115var traces = result.PagedResult.Items; 217var logs = result.Items;
Components\Controls\ApplicationSummary.razor.cs (4)
316? (await repository.GetLogSummariesAsync(CreateLogsContext(s_errorLogFilters, Math.Max(0, errorCount - RecentItemCount), RecentItemCount), cancellationToken).ConfigureAwait(false)).Items 323? (await repository.GetTraceSummariesAsync(CreateTracesRequest([s_failedTraceFilter], Math.Max(0, failedTraceCount - RecentItemCount), RecentItemCount), cancellationToken).ConfigureAwait(false)).PagedResult.Items 457foreach (var log in errorLogs.Items) 556return latestError.Items is [var log, ..] ? log.TimeStamp : now;
Components\Legacy\Pages\StructuredLogs.razor.cs (2)
165return GridItemsProviderResult.From(logs.Items, virtualizedLogCount); 591return matchingLogs.Items.Count == 0;
Components\Legacy\Pages\TraceDetail.razor.cs (2)
316}, _cts.Token)).Items; 681return response.PagedResult.Items.Select(span => span.SpanId).ToHashSet(StringComparer.Ordinal);
Components\Legacy\Pages\Traces.razor.cs (1)
170return GridItemsProviderResult.From(traces.Items, virtualizedTraceCount);
Components\Pages\ResourceOverview.razor.cs (3)
335? (await repository.GetLogSummariesAsync(CreateLogsContext(key, attentionFilters, Math.Max(0, attentionCount - RecentItemCount), RecentItemCount), cancellationToken).ConfigureAwait(false)).Items 340? (await repository.GetLogSummariesAsync(CreateLogsContext(key, [], Math.Max(0, allLogs.TotalItemCount - RecentItemCount), RecentItemCount), cancellationToken).ConfigureAwait(false)).Items 348? (await repository.GetTraceSummariesAsync(CreateTracesRequest(key, [], Math.Max(0, traceCount - RecentItemCount), RecentItemCount), cancellationToken).ConfigureAwait(false)).PagedResult.Items
Components\Pages\StructuredLogs.razor.cs (2)
190return GridItemsProviderResult.From(logs.Items, virtualizedLogCount); 645return matchingLogs.Items.Count == 0;
Components\Pages\TraceDetail.razor.cs (2)
342}, _cts.Token)).Items; 707return response.PagedResult.Items.Select(span => span.SpanId).ToHashSet(StringComparer.Ordinal);
Components\Pages\Traces.razor.cs (1)
162return GridItemsProviderResult.From(traces.Items, virtualizedTraceCount);
Model\GenAI\GenAIVisualizerDialogViewModel.cs (1)
614return logsResult.Items;
Model\StructuredLogsViewModel.cs (1)
121_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)
230return result.Items; 244return result.Items;
Otlp\Storage\SqliteTelemetryRepository.Runtime.cs (2)
246foreach (var span in existingSpans.PagedResult.Items.OrderBy(span => span.StartTime)) 301foreach (var log in existingLogs.Items)
Aspire.Dashboard.Components.Tests (4)
Controls\GenAIVisualizerDialogTests.cs (2)
243var trace = tracesResult.PagedResult.Items[0]; 328var trace = tracesResult.PagedResult.Items[0];
Layout\ResourceRowAvailabilityTests.cs (1)
310Assert.Single(traces.PagedResult.Items);
Pages\TraceDetailsTests.cs (1)
1164return 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)
1512}, 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)
155var log = Assert.Single((await repositoryContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 156var span = Assert.Single(Assert.Single((await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(cachedResource.ResourceKey), cancellationToken: CancellationToken.None)).PagedResult.Items).Spans); 332var log = Assert.Single((await repositoryContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 338var log = Assert.Single((await historicalContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 396var trace = Assert.Single((await repositoryContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(new ResourceKey("TestService", "TestId")), cancellationToken: CancellationToken.None)).PagedResult.Items); 402var trace = Assert.Single((await historicalContext.Repository.GetTracesAsync(GetTracesRequest.ForResourceKey(new ResourceKey("TestService", "TestId")), cancellationToken: CancellationToken.None)).PagedResult.Items);
TelemetryRepositoryTests\TelemetryRepositoryTests.cs (18)
44Assert.Empty((await repositoryContext.Repository.GetLogsAsync(new GetLogsContext { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).Items); 46Assert.Empty((await repositoryContext.Repository.GetTracesAsync(new GetTracesRequest { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).PagedResult.Items); 55Assert.Single((await repositoryContext.Repository.GetLogsAsync(new GetLogsContext { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).Items); 59Assert.Single((await repositoryContext.Repository.GetTracesAsync(new GetTracesRequest { ResourceKeys = [resourceKey], Count = 100, Filters = [], StartIndex = 0 }, cancellationToken: CancellationToken.None)).PagedResult.Items); 236Assert.Single(logs.Items); 237Assert.Equal("log-resource2-456", logs.Items[0].Message); 248Assert.Single(resource2Logs.Items); 249Assert.Equal("log-resource2-456", resource2Logs.Items[0].Message); 252Assert.Single(resource2Traces.PagedResult.Items); 278Assert.Contains(logs.Items, l => l.Message == "log-resource1-111"); 279Assert.Contains(logs.Items, l => l.Message == "log-resource3-333"); 280Assert.DoesNotContain(logs.Items, l => l.Message == "log-resource2-222"); 321Assert.Empty(logs.Items); 324Assert.Empty(traces.PagedResult.Items); 352Assert.Empty(logs.Items); 355Assert.Empty(traces.PagedResult.Items); 847Assert.Collection(traces.PagedResult.Items, 871Assert.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); 3306Assert.All(result.PagedResult.Items, s => AssertId("1", s.TraceId)); 3341var span = Assert.Single(result.PagedResult.Items); 3383AssertId("1-1", result.PagedResult.Items[0].SpanId); 3424AssertId("1-2", result.PagedResult.Items[0].SpanId); 3473Assert.Equal(expectedTraceIds.Length, result.PagedResult.Items.Count); 3476AssertId(expectedTraceIds[index], result.PagedResult.Items[index].TraceId); 3534AssertId("1-1", result.PagedResult.Items[0].SpanId); 3591Assert.Equal(expectedCount, result.PagedResult.Items.Count); 3641AssertId("1-1", result.PagedResult.Items[0].SpanId); 3682AssertId("1-1", result.PagedResult.Items[0].SpanId); 3770AssertId(expectedMatch.SpanId, Assert.Single(result.PagedResult.Items).SpanId); 3838AssertId("1-1", Assert.Single(fieldResult.PagedResult.Items).SpanId); 3840AssertId("1-1", Assert.Single(textResult.PagedResult.Items).SpanId); 3881Assert.Single(result.PagedResult.Items); 3882AssertId("1-2", result.PagedResult.Items[0].SpanId); 3925AssertId("1-1", result.PagedResult.Items[0].SpanId); 3945Assert.Empty(result.PagedResult.Items); 3984Assert.Empty(result.PagedResult.Items); 4085Assert.Contains("span1", result.PagedResult.Items[0].Name); 4138Assert.Empty(traces.PagedResult.Items); 4188Assert.Collection(traces.PagedResult.Items, 4239Assert.Empty(traces.PagedResult.Items); 4324Assert.Collection(traces.PagedResult.Items, 4380Assert.Collection(traces.PagedResult.Items, 4433Assert.Empty(traces.PagedResult.Items); 4489Assert.Contains(result.PagedResult.Items, s => GetStringId(s.SpanId) == "1-2"); 4490Assert.Contains(result.PagedResult.Items, s => GetStringId(s.SpanId) == "1-3"); 4562Assert.Collection(traces.PagedResult.Items, 4586}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4611}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4644}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4673}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4712}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4869}, cancellationToken: CancellationToken.None)).PagedResult.Items); 4931}, cancellationToken: CancellationToken.None)).PagedResult.Items); 5004}, cancellationToken: CancellationToken.None)).PagedResult.Items);