private static void AddE2EData()

in src/Editor/Language/Impl/Language/AsyncCompletion/CompletionTelemetry.cs [594:703]


        private static void AddE2EData(CompletionSessionTelemetry telemetry, AggregateE2EData e2eData)
        {
            switch (telemetry.CompletionState)
            {
                case CompletionSessionState.Committed:
                    e2eData.Committed++;
                    break;
                case CompletionSessionState.CommittedSuggestionItem:
                    e2eData.CommittedSuggestionItem++;
                    break;
                case CompletionSessionState.CommittedThroughClick:
                    e2eData.CommittedThroughClick++;
                    break;
                case CompletionSessionState.CommittedThroughCompleteWord:
                    e2eData.CommittedThroughCompleteWord++;
                    break;
                case CompletionSessionState.CommittedThroughTypedChar:
                    e2eData.CommittedThroughTypedChar++;
                    break;
                case CompletionSessionState.DismissedDueToBackspace:
                    e2eData.DismissedDueToBackspace++;
                    break;
                case CompletionSessionState.DismissedDueToCancellation:
                    e2eData.DismissedDueToCancellation++;
                    break;
                case CompletionSessionState.DismissedDueToCaretLeaving:
                    e2eData.DismissedDueToCaretLeaving++;
                    break;
                case CompletionSessionState.DismissedDuringFiltering:
                    e2eData.DismissedDuringFiltering++;
                    break;
                case CompletionSessionState.DismissedDueToNoItems:
                    e2eData.DismissedDueToNoItems++;
                    break;
                case CompletionSessionState.DismissedDueToNonBlockingMode:
                    e2eData.DismissedDueToNonBlockingMode++;
                    break;
                case CompletionSessionState.DismissedDueToResponsiveMode:
                    e2eData.DismissedDueToResponsiveMode++;
                    break;
                case CompletionSessionState.DismissedDueToSuggestionMode:
                    e2eData.DismissedDueToSuggestionMode++;
                    break;
                case CompletionSessionState.DismissedDueToUnhandledError:
                    e2eData.DismissedDueToUnhandledError++;
                    break;
                case CompletionSessionState.DismissedThroughUI:
                    e2eData.DismissedThroughUI++;
                    break;
                case CompletionSessionState.DismissedUninitialized:
                    e2eData.DismissedUninitialized++;
                    break;
                default:
                    e2eData.Dismissed++;
                    break;
            }

            if (telemetry.CompletionState == CompletionSessionState.DismissedDueToCancellation)
            {
                e2eData.HistogramBucketCanceled++;
            }
            else
            {
                var E2eDuration = telemetry.E2EStopwatch.ElapsedMilliseconds;
                if (E2eDuration == 0)
                    e2eData.HistogramBucketInvalid++;
                else if (E2eDuration <= 25)
                    e2eData.HistogramBucket25++;
                else if (E2eDuration <= 50)
                    e2eData.HistogramBucket50++;
                else if (E2eDuration <= 100)
                    e2eData.HistogramBucket100++;
                else if (E2eDuration <= 250)
                    e2eData.HistogramBucket250++;
                else if (E2eDuration <= 500)
                    e2eData.HistogramBucket500++;
                else if (E2eDuration <= 1000)
                    e2eData.HistogramBucket1000++;
                else if (E2eDuration <= 2000)
                    e2eData.HistogramBucket2000++;
                else
                    e2eData.HistogramBucketLast++;
            }

            if (telemetry.CompletionState == CompletionSessionState.Committed || telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar || telemetry.CompletionState == CompletionSessionState.CommittedThroughCompleteWord)
            {
                if (telemetry.NoChanges)
                {
                    if (telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar && telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramNoChangesAndUserWaitedThroughTypedChar++;
                    else if (telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar && !telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramNoChangesThroughTypedChar++;
                    else if (telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar && telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramNoChangesAndUserWaited++;
                    else if (telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar && !telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramNoChanges++;
                }
                else
                {
                    if (telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar && telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramChangesAndUserWaitedThroughTypedChar++;
                    else if (telemetry.CompletionState == CompletionSessionState.CommittedThroughTypedChar && !telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramChangesThroughTypedChar++;
                    else if (telemetry.CompletionState != CompletionSessionState.CommittedThroughTypedChar && telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramChangesAndUserWaited++;
                    else if (telemetry.CompletionState != CompletionSessionState.CommittedThroughTypedChar && !telemetry.UserWaitedForNoChanges)
                        e2eData.HistogramChanges++;
                }
            }
        }