in src/Editor/Language/Impl/Language/AsyncCompletion/CompletionTelemetry.cs [357:481]
internal void Send()
{
if (_logger == null)
return;
foreach (var data in ItemManagerData)
{
if (data.Value.SessionCount == 0)
continue;
if (data.Value.ProcessCount == 0)
continue;
_logger.PostEvent(TelemetryEventType.Operation,
ItemManagerEventName,
TelemetryResult.Success,
(ItemManagerName, data.Key),
(ItemManagerAverageFinalItemCount, data.Value.FinalItemCount / (double)data.Value.SessionCount),
(ItemManagerAverageInitialProcessDuration, data.Value.InitialProcessTime / (double)data.Value.SessionCount),
(ItemManagerAverageFilterDuration, data.Value.TotalProcessTime / (double)data.Value.ProcessCount),
(ItemManagerAverageKeystrokeCount, data.Value.TotalKeystrokes / (double)data.Value.SessionCount),
(ItemManagerAverageScrolled, data.Value.UserEverScrolled / (double)data.Value.SessionCount),
(ItemManagerAverageSetFilters, data.Value.UserEverSetFilters / (double)data.Value.SessionCount),
(ItemManagerAverageBlockingComputationDuration, data.Value.TotalBlockingComputationTime / (double)data.Value.SessionCount),
(ItemManagerMaxBlockingComputationDuration, data.Value.MaxBlockingComputationTime)
);
}
foreach (var data in SourceData)
{
if (data.Value.SetupCount == 0)
continue;
if (data.Value.GetContextCount == 0)
data.Value.GetContextCount = 1; // the result of division will remain 0 and the division won't throw
_logger.PostEvent(TelemetryEventType.Operation,
SourceEventName,
TelemetryResult.Success,
(SourceName, data.Key),
(SourceAverageGetContextDuration, data.Value.TotalGetContextTime / (double)data.Value.GetContextCount),
(SourceAverageSetupDuration, data.Value.TotalSetupTime / (double)data.Value.SetupCount),
(SourceMaxSetupDuration, data.Value.MaxSetupTime)
);
}
foreach (var data in CommitManagerData)
{
if (data.Value.CommitCount == 0)
continue;
_logger.PostEvent(TelemetryEventType.Operation,
CommitManagerEventName,
TelemetryResult.Success,
(CommitManagerName, data.Key),
(CommitManagerAverageCommitDuration, data.Value.TotalCommitTime / (double)data.Value.CommitCount),
(CommitManagerAverageSetupDuration, data.Value.TotalSetupTime / (double)data.Value.SetupCount),
(CommitManagerMaxCommitDuration, data.Value.MaxCommitTime),
(CommitManagerMaxSetupDuration, data.Value.MaxSetupTime)
);
}
foreach (var data in PresenterData)
{
if (data.Value.RenderCount == 0)
continue;
_logger.PostEvent(TelemetryEventType.Operation,
PresenterEventName,
TelemetryResult.Success,
(PresenterName, data.Key),
(PresenterAverageInitialRendering, data.Value.InitialRenderTime / (double)data.Value.ClosingCount),
(PresenterAverageRendering, data.Value.TotalRenderTime / (double)data.Value.RenderCount),
(PresenterAverageClosing, data.Value.TotalClosingTime / (double)data.Value.ClosingCount),
(PresenterMaxRendering, data.Value.MaxRenderTime),
(PresenterMaxClosing, data.Value.MaxClosingTime)
);
}
_logger.PostEvent(TelemetryEventType.Operation,
E2EEventName,
TelemetryResult.Success,
(E2EContentType, _textViewContentType),
(E2EBucket25, E2EData.HistogramBucket25),
(E2EBucket50, E2EData.HistogramBucket50),
(E2EBucket100, E2EData.HistogramBucket100),
(E2EBucket250, E2EData.HistogramBucket250),
(E2EBucket500, E2EData.HistogramBucket500),
(E2EBucket1000, E2EData.HistogramBucket1000),
(E2EBucket2000, E2EData.HistogramBucket2000),
(E2EBucketLast, E2EData.HistogramBucketLast),
(E2EBucketCanceled, E2EData.HistogramBucketCanceled),
(E2EBucketInvalid, E2EData.HistogramBucketInvalid),
(E2ECommittedStandard, E2EData.Committed),
(E2ECommittedClick, E2EData.CommittedThroughClick),
(E2ECommittedCompleteWord, E2EData.CommittedThroughCompleteWord),
(E2ECommittedSuggestionItem, E2EData.CommittedSuggestionItem),
(E2ECommittedThroughTypedChar, E2EData.CommittedThroughTypedChar),
(E2EDismissedStandard, E2EData.Dismissed),
(E2EDismissedBackspace, E2EData.DismissedDueToBackspace),
(E2EDismissedCancellation, E2EData.DismissedDueToCancellation),
(E2EDismissedCaretLeaving, E2EData.DismissedDueToCaretLeaving),
(E2EDismissedFiltering, E2EData.DismissedDuringFiltering),
(E2EDismissedNoItems, E2EData.DismissedDueToNoItems),
(E2EDismissedNonBlocking, E2EData.DismissedDueToNonBlockingMode),
(E2EDismissedResponsive, E2EData.DismissedDueToResponsiveMode),
(E2EDismissedSuggestion, E2EData.DismissedDueToSuggestionMode),
(E2EDismissedUnhandledError, E2EData.DismissedDueToUnhandledError),
(E2EDismissedUI, E2EData.DismissedThroughUI),
(E2EDismissedUninitialized, E2EData.DismissedUninitialized),
(E2EScenarioNoChanges, E2EData.HistogramNoChanges),
(E2EScenarioUserWaitedForNoChanges, E2EData.HistogramNoChangesAndUserWaited)
);
foreach (var data in BlockingExtensionData)
{
if (data.Value == 0)
continue;
_logger.PostEvent(TelemetryEventType.Operation,
BlockingExtensionEventName,
TelemetryResult.Success,
(BlockingExtensionName, data.Key),
(BlockingCount, data.Value)
);
}
}